mirror of
https://git.sanhost.net/sanasol/hytale-f2p.git
synced 2026-02-26 06:41:47 -03:00
Fix community link order: TG Group > TG Channel > Chat
Consistent order across all files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
405
backend/utils/clientPatcher.localhost.js.bak
Normal file
405
backend/utils/clientPatcher.localhost.js.bak
Normal file
@@ -0,0 +1,405 @@
|
|||||||
|
/**
|
||||||
|
* Localhost/Local Development Code Backup
|
||||||
|
*
|
||||||
|
* This file contains code removed from clientPatcher.js that was used for local development.
|
||||||
|
* To re-enable local dev mode, merge this code back into clientPatcher.js.
|
||||||
|
*
|
||||||
|
* Backed up: 2026-01-28
|
||||||
|
*/
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// LOCAL PATCHER PATHS (was in ensurePatcherDownloaded method)
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
// Check for local patcher (for local development)
|
||||||
|
const localPatcherPaths = [
|
||||||
|
path.join(__dirname, '..', '..', '..', 'hytale-auth-server', 'patcher', 'DualAuthPatcher.java'),
|
||||||
|
path.join(__dirname, '..', '..', '..', '..', 'hytale-auth-server', 'patcher', 'DualAuthPatcher.java'),
|
||||||
|
'/Users/sanasol/code/pterodactyl-hytale/hytale-auth-server/patcher/DualAuthPatcher.java'
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check if we should use local patcher (localhost domain = local dev)
|
||||||
|
const domain = getTargetDomain();
|
||||||
|
const isLocalDev = domain.startsWith('localhost') || domain.startsWith('127.0.0.1');
|
||||||
|
|
||||||
|
if (isLocalDev) {
|
||||||
|
for (const localPath of localPatcherPaths) {
|
||||||
|
if (fs.existsSync(localPath)) {
|
||||||
|
console.log(`Using local DualAuthPatcher: ${localPath}`);
|
||||||
|
// Always copy fresh for local dev to pick up changes
|
||||||
|
fs.copyFileSync(localPath, patcherJava);
|
||||||
|
// Delete compiled class to force recompile
|
||||||
|
const patcherClass = path.join(patcherDir, 'DualAuthPatcher.class');
|
||||||
|
if (fs.existsSync(patcherClass)) {
|
||||||
|
fs.unlinkSync(patcherClass);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('Local patcher not found, falling back to download...');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// LEGACY SERVER PATCHER (was patchServerLegacy method)
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legacy server patcher (simple domain replacement, no dual auth)
|
||||||
|
* Use patchServer() for full dual auth support
|
||||||
|
*/
|
||||||
|
async patchServerLegacy(serverPath, progressCallback) {
|
||||||
|
const newDomain = this.getNewDomain();
|
||||||
|
const strategy = this.getDomainStrategy(newDomain);
|
||||||
|
|
||||||
|
console.log('=== Legacy Server Patcher ===');
|
||||||
|
console.log(`Target: ${serverPath}`);
|
||||||
|
console.log(`Domain: ${newDomain} (${newDomain.length} chars)`);
|
||||||
|
|
||||||
|
if (!fs.existsSync(serverPath)) {
|
||||||
|
return { success: false, error: `Server JAR not found: ${serverPath}` };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (progressCallback) progressCallback('Patching server...', 20);
|
||||||
|
|
||||||
|
console.log('Opening server JAR...');
|
||||||
|
const zip = new AdmZip(serverPath);
|
||||||
|
const entries = zip.getEntries();
|
||||||
|
|
||||||
|
let totalCount = 0;
|
||||||
|
const oldUtf8 = this.stringToUtf8(ORIGINAL_DOMAIN);
|
||||||
|
|
||||||
|
for (const entry of entries) {
|
||||||
|
const name = entry.entryName;
|
||||||
|
if (name.endsWith('.class') || name.endsWith('.properties') ||
|
||||||
|
name.endsWith('.json') || name.endsWith('.xml') || name.endsWith('.yml')) {
|
||||||
|
const data = entry.getData();
|
||||||
|
if (data.includes(oldUtf8)) {
|
||||||
|
const { buffer: patchedData, count } = this.findAndReplaceDomainUtf8(data, ORIGINAL_DOMAIN, strategy.mainDomain);
|
||||||
|
if (count > 0) {
|
||||||
|
zip.updateFile(entry.entryName, patchedData);
|
||||||
|
totalCount += count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (totalCount > 0) {
|
||||||
|
zip.writeZip(serverPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (progressCallback) progressCallback('Complete', 100);
|
||||||
|
return { success: true, patchCount: totalCount };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// DUALAUTHPATCHER FLOW FOR NON-STANDARD DOMAINS (was in patchServer method)
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
// For non-standard domains, use DualAuthPatcher for proper bytecode patching
|
||||||
|
const isStandardDomain = newDomain === 'auth.sanasol.ws' || newDomain === 'sanasol.ws';
|
||||||
|
|
||||||
|
if (!isStandardDomain) {
|
||||||
|
console.log(`Non-standard domain "${newDomain}" - using DualAuthPatcher`);
|
||||||
|
|
||||||
|
// Find Java
|
||||||
|
const java = this.findJava();
|
||||||
|
if (!java) {
|
||||||
|
console.error('Java not found - cannot run DualAuthPatcher');
|
||||||
|
console.error('Please install Java or use the bundled JRE');
|
||||||
|
return { success: false, error: 'Java not found for DualAuthPatcher' };
|
||||||
|
}
|
||||||
|
console.log(` Using Java: ${java}`);
|
||||||
|
|
||||||
|
// Setup patcher directory
|
||||||
|
const patcherDir = path.join(path.dirname(serverPath), '.patcher');
|
||||||
|
const libDir = path.join(patcherDir, 'lib');
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Download patcher and libraries
|
||||||
|
if (progressCallback) progressCallback('Downloading DualAuthPatcher...', 20);
|
||||||
|
await this.ensurePatcherDownloaded(patcherDir);
|
||||||
|
|
||||||
|
if (progressCallback) progressCallback('Downloading ASM libraries...', 30);
|
||||||
|
await this.ensureAsmLibraries(libDir);
|
||||||
|
|
||||||
|
// Compile patcher
|
||||||
|
if (progressCallback) progressCallback('Compiling patcher...', 40);
|
||||||
|
const compileResult = await this.compileDualAuthPatcher(java, patcherDir, libDir);
|
||||||
|
if (!compileResult.success) {
|
||||||
|
return { success: false, error: compileResult.error };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build classpath
|
||||||
|
const classpath = [
|
||||||
|
patcherDir,
|
||||||
|
path.join(libDir, 'asm-9.6.jar'),
|
||||||
|
path.join(libDir, 'asm-tree-9.6.jar'),
|
||||||
|
path.join(libDir, 'asm-util-9.6.jar')
|
||||||
|
].join(process.platform === 'win32' ? ';' : ':');
|
||||||
|
|
||||||
|
// Run DualAuthPatcher with custom domain
|
||||||
|
if (progressCallback) progressCallback('Running DualAuthPatcher...', 60);
|
||||||
|
console.log(` Running DualAuthPatcher with domain: ${newDomain}`);
|
||||||
|
|
||||||
|
const patchResult = await this.runDualAuthPatcher(java, classpath, serverPath, newDomain);
|
||||||
|
|
||||||
|
if (patchResult.success) {
|
||||||
|
// Mark as patched
|
||||||
|
fs.writeFileSync(patchFlagFile, JSON.stringify({
|
||||||
|
domain: newDomain,
|
||||||
|
patchedAt: new Date().toISOString(),
|
||||||
|
patcher: 'DualAuthPatcher',
|
||||||
|
output: patchResult.stdout
|
||||||
|
}, null, 2));
|
||||||
|
|
||||||
|
if (progressCallback) progressCallback('Server patching complete', 100);
|
||||||
|
console.log('=== Server Patching Complete (DualAuthPatcher) ===');
|
||||||
|
return { success: true, patchCount: 1 };
|
||||||
|
} else {
|
||||||
|
console.error('DualAuthPatcher failed:', patchResult.error);
|
||||||
|
return { success: false, error: patchResult.error };
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Failed to run DualAuthPatcher:', err.message);
|
||||||
|
return { success: false, error: err.message };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// HELPER METHODS FOR DUALAUTHPATCHER (keep if re-enabling non-standard domains)
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find Java executable - uses bundled JRE first (same as game uses)
|
||||||
|
* Falls back to system Java if bundled not available
|
||||||
|
*/
|
||||||
|
findJava() {
|
||||||
|
// 1. Try bundled JRE first (comes with the game)
|
||||||
|
try {
|
||||||
|
const bundled = getBundledJavaPath(JRE_DIR);
|
||||||
|
if (bundled && fs.existsSync(bundled)) {
|
||||||
|
console.log(`Using bundled Java: ${bundled}`);
|
||||||
|
return bundled;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Bundled not available
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Try javaManager's getJavaExec (handles all fallbacks)
|
||||||
|
try {
|
||||||
|
const javaExec = getJavaExec(JRE_DIR);
|
||||||
|
if (javaExec && fs.existsSync(javaExec)) {
|
||||||
|
console.log(`Using Java from javaManager: ${javaExec}`);
|
||||||
|
return javaExec;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Not available
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Check JAVA_HOME
|
||||||
|
if (process.env.JAVA_HOME) {
|
||||||
|
const javaHome = process.env.JAVA_HOME;
|
||||||
|
const javaBin = path.join(javaHome, 'bin', process.platform === 'win32' ? 'java.exe' : 'java');
|
||||||
|
if (fs.existsSync(javaBin)) {
|
||||||
|
console.log(`Using Java from JAVA_HOME: ${javaBin}`);
|
||||||
|
return javaBin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. Try 'java' from PATH
|
||||||
|
try {
|
||||||
|
execSync('java -version 2>&1', { encoding: 'utf8' });
|
||||||
|
console.log('Using Java from PATH');
|
||||||
|
return 'java';
|
||||||
|
} catch (e) {
|
||||||
|
// Not in PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get DualAuthPatcher - downloads from GitHub
|
||||||
|
*/
|
||||||
|
async ensurePatcherDownloaded(patcherDir) {
|
||||||
|
const patcherJava = path.join(patcherDir, 'DualAuthPatcher.java');
|
||||||
|
const patcherUrl = 'https://raw.githubusercontent.com/sanasol/hytale-auth-server/master/patcher/DualAuthPatcher.java';
|
||||||
|
|
||||||
|
if (!fs.existsSync(patcherDir)) {
|
||||||
|
fs.mkdirSync(patcherDir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fs.existsSync(patcherJava)) {
|
||||||
|
console.log('Downloading DualAuthPatcher from hytale-auth-server...');
|
||||||
|
try {
|
||||||
|
const https = require('https');
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
const file = fs.createWriteStream(patcherJava);
|
||||||
|
https.get(patcherUrl, (response) => {
|
||||||
|
if (response.statusCode === 302 || response.statusCode === 301) {
|
||||||
|
https.get(response.headers.location, (redirectResponse) => {
|
||||||
|
redirectResponse.pipe(file);
|
||||||
|
file.on('finish', () => {
|
||||||
|
file.close();
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}).on('error', reject);
|
||||||
|
} else {
|
||||||
|
response.pipe(file);
|
||||||
|
file.on('finish', () => {
|
||||||
|
file.close();
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).on('error', (err) => {
|
||||||
|
fs.unlink(patcherJava, () => {});
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
console.log(' Downloaded DualAuthPatcher.java');
|
||||||
|
} catch (e) {
|
||||||
|
console.error(` Failed to download DualAuthPatcher: ${e.message}`);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Download ASM libraries if not present
|
||||||
|
*/
|
||||||
|
async ensureAsmLibraries(libDir) {
|
||||||
|
if (!fs.existsSync(libDir)) {
|
||||||
|
fs.mkdirSync(libDir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const libs = [
|
||||||
|
{ name: 'asm-9.6.jar', url: 'https://repo1.maven.org/maven2/org/ow2/asm/asm/9.6/asm-9.6.jar' },
|
||||||
|
{ name: 'asm-tree-9.6.jar', url: 'https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.6/asm-tree-9.6.jar' },
|
||||||
|
{ name: 'asm-util-9.6.jar', url: 'https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.6/asm-util-9.6.jar' }
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const lib of libs) {
|
||||||
|
const libPath = path.join(libDir, lib.name);
|
||||||
|
if (!fs.existsSync(libPath)) {
|
||||||
|
console.log(`Downloading ${lib.name}...`);
|
||||||
|
try {
|
||||||
|
const https = require('https');
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
const file = fs.createWriteStream(libPath);
|
||||||
|
https.get(lib.url, (response) => {
|
||||||
|
response.pipe(file);
|
||||||
|
file.on('finish', () => {
|
||||||
|
file.close();
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}).on('error', (err) => {
|
||||||
|
fs.unlink(libPath, () => {});
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
console.log(` Downloaded ${lib.name}`);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(` Failed to download ${lib.name}: ${e.message}`);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compile DualAuthPatcher if needed
|
||||||
|
*/
|
||||||
|
async compileDualAuthPatcher(java, patcherDir, libDir) {
|
||||||
|
const patcherClass = path.join(patcherDir, 'DualAuthPatcher.class');
|
||||||
|
const patcherJava = path.join(patcherDir, 'DualAuthPatcher.java');
|
||||||
|
|
||||||
|
if (fs.existsSync(patcherClass)) {
|
||||||
|
const classTime = fs.statSync(patcherClass).mtime;
|
||||||
|
const javaTime = fs.statSync(patcherJava).mtime;
|
||||||
|
if (classTime > javaTime) {
|
||||||
|
console.log('DualAuthPatcher already compiled');
|
||||||
|
return { success: true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Compiling DualAuthPatcher...');
|
||||||
|
|
||||||
|
const javac = java.replace(/java(\.exe)?$/, 'javac$1');
|
||||||
|
const classpath = [
|
||||||
|
path.join(libDir, 'asm-9.6.jar'),
|
||||||
|
path.join(libDir, 'asm-tree-9.6.jar'),
|
||||||
|
path.join(libDir, 'asm-util-9.6.jar')
|
||||||
|
].join(process.platform === 'win32' ? ';' : ':');
|
||||||
|
|
||||||
|
try {
|
||||||
|
const execOptions = {
|
||||||
|
stdio: 'pipe',
|
||||||
|
cwd: patcherDir,
|
||||||
|
env: { ...process.env }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (process.platform === 'win32') {
|
||||||
|
const systemRoot = process.env.SystemRoot || 'C:\\WINDOWS';
|
||||||
|
const systemPath = `${systemRoot}\\system32;${systemRoot};${systemRoot}\\System32\\Wbem`;
|
||||||
|
execOptions.env.PATH = execOptions.env.PATH
|
||||||
|
? `${systemPath};${execOptions.env.PATH}`
|
||||||
|
: systemPath;
|
||||||
|
execOptions.shell = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
execSync(`"${javac}" -cp "${classpath}" -d "${patcherDir}" "${patcherJava}"`, execOptions);
|
||||||
|
console.log(' Compilation successful');
|
||||||
|
return { success: true };
|
||||||
|
} catch (e) {
|
||||||
|
const error = `Failed to compile DualAuthPatcher: ${e.message}`;
|
||||||
|
console.error(error);
|
||||||
|
if (e.stderr) console.error(e.stderr.toString());
|
||||||
|
return { success: false, error };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run DualAuthPatcher on the server JAR
|
||||||
|
*/
|
||||||
|
async runDualAuthPatcher(java, classpath, serverPath, domain) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const args = ['-cp', classpath, 'DualAuthPatcher', serverPath];
|
||||||
|
const env = { ...process.env, HYTALE_AUTH_DOMAIN: domain };
|
||||||
|
|
||||||
|
console.log(`Running: java ${args.join(' ')}`);
|
||||||
|
console.log(` HYTALE_AUTH_DOMAIN=${domain}`);
|
||||||
|
|
||||||
|
const proc = spawn(java, args, { env, stdio: ['pipe', 'pipe', 'pipe'] });
|
||||||
|
|
||||||
|
let stdout = '';
|
||||||
|
let stderr = '';
|
||||||
|
|
||||||
|
proc.stdout.on('data', (data) => {
|
||||||
|
const str = data.toString();
|
||||||
|
stdout += str;
|
||||||
|
console.log(str.trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
proc.stderr.on('data', (data) => {
|
||||||
|
const str = data.toString();
|
||||||
|
stderr += str;
|
||||||
|
console.error(str.trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
proc.on('close', (code) => {
|
||||||
|
if (code === 0) {
|
||||||
|
resolve({ success: true, stdout });
|
||||||
|
} else {
|
||||||
|
resolve({ success: false, error: `Patcher exited with code ${code}: ${stderr}` });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
proc.on('error', (err) => {
|
||||||
|
resolve({ success: false, error: `Failed to run patcher: ${err.message}` });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
732
docs/CLIENT_BINARY_ANALYSIS.md
Normal file
732
docs/CLIENT_BINARY_ANALYSIS.md
Normal file
@@ -0,0 +1,732 @@
|
|||||||
|
# Hytale Client Binary Analysis
|
||||||
|
|
||||||
|
CSC_LINK="/Users/sanasol/Downloads/Certificates-hytale.p12" CSC_KEY_PASSWORD="YieocpBVP68Rih*" APPLE_ID="sanasol2008rs@gmail.com" APPLE_APP_SPECIFIC_PASSWORD="ihah-lbta-movj-iqni" APPLE_TEAM_ID="9WVL8YG95H" npm run build:mac
|
||||||
|
CSC_LINK="/Users/sanasol/Downloads/Certificates-hytale.p12" CSC_KEY_PASSWORD="YieocpBVP68Rih*" APPLE_ID="sanasol2008rs@gmail.com" APPLE_APP_SPECIFIC_PASSWORD="ihah-lbta-movj-iqni" APPLE_TEAM_ID="9WVL8YG95H" npx electron-builder --mac --arm64
|
||||||
|
|
||||||
|
|
||||||
|
password ihah-lbta-movj-iqni
|
||||||
|
team id 9WVL8YG95H
|
||||||
|
cert pass YieocpBVP68Rih*
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This document contains a comprehensive analysis of the HytaleClient binary, documenting all discovered URLs, API endpoints, service domains, patchable strings, and internal functionality.
|
||||||
|
|
||||||
|
**Binary Analyzed:** `HytaleClient` (macOS .NET AOT compiled)
|
||||||
|
**Analysis Date:** 2026-01-27
|
||||||
|
**String Encoding:** UTF-16LE (Windows .NET string format)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
1. [Service URLs](#1-service-urls)
|
||||||
|
2. [API Endpoints](#2-api-endpoints)
|
||||||
|
3. [World Tools & Builder Tools](#3-world-tools--builder-tools)
|
||||||
|
4. [External Service URLs](#4-external-service-urls)
|
||||||
|
5. [Patchable Strings](#5-patchable-strings)
|
||||||
|
6. [Sentry Error Tracking](#6-sentry-error-tracking)
|
||||||
|
7. [Internal Class References](#7-internal-class-references)
|
||||||
|
8. [Binary Offsets Reference](#8-binary-offsets-reference)
|
||||||
|
9. [Implementation Notes](#9-implementation-notes)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Service URLs
|
||||||
|
|
||||||
|
### 1.1 Primary Hytale Services
|
||||||
|
|
||||||
|
The client connects to four main service subdomains:
|
||||||
|
|
||||||
|
| Service | URL Pattern | Purpose | Status |
|
||||||
|
|---------|-------------|---------|--------|
|
||||||
|
| **Sessions** | `https://sessions.{domain}` | Authentication, JWT tokens, session management | Implemented in auth-server |
|
||||||
|
| **Account Data** | `https://account-data.{domain}` | Player profiles, skins, account information | Implemented in auth-server |
|
||||||
|
| **Telemetry** | `https://telemetry.{domain}` | Analytics, error reporting, usage statistics | Implemented (accepts/discards) |
|
||||||
|
| **Tools** | `https://tools.{domain}` | Asset editor, prefab management, world tools | **Not implemented** |
|
||||||
|
|
||||||
|
### 1.2 URL Construction
|
||||||
|
|
||||||
|
The client constructs URLs by combining:
|
||||||
|
1. Protocol: `https://`
|
||||||
|
2. Subdomain: `sessions.`, `account-data.`, `telemetry.`, `tools.`
|
||||||
|
3. Base domain: `hytale.com`
|
||||||
|
|
||||||
|
**Example:** `https://` + `sessions.` + `hytale.com` = `https://sessions.hytale.com`
|
||||||
|
|
||||||
|
The client patcher replaces these components to redirect traffic to the F2P auth server.
|
||||||
|
|
||||||
|
### 1.3 F2P Domain Routing
|
||||||
|
|
||||||
|
For F2P mode, all subdomains route to a single endpoint:
|
||||||
|
- `sessions.{f2p_domain}` → `https://{f2p_domain}`
|
||||||
|
- `account-data.{f2p_domain}` → `https://{f2p_domain}`
|
||||||
|
- `telemetry.{f2p_domain}` → `https://{f2p_domain}`
|
||||||
|
- `tools.{f2p_domain}` → `https://{f2p_domain}`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. API Endpoints
|
||||||
|
|
||||||
|
### 2.1 Session Management Endpoints
|
||||||
|
|
||||||
|
#### POST /game-session/new
|
||||||
|
Create a new game session.
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"clientVersion": "string",
|
||||||
|
"platform": "string"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"token": "JWT token",
|
||||||
|
"refreshToken": "refresh token",
|
||||||
|
"expiresIn": 36000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### POST /game-session/refresh
|
||||||
|
Refresh an existing session token.
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"refreshToken": "string"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"token": "new JWT token",
|
||||||
|
"refreshToken": "new refresh token",
|
||||||
|
"expiresIn": 36000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### POST /game-session/child
|
||||||
|
Create a child session (for server connections).
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"parentToken": "string",
|
||||||
|
"audience": "server identifier"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### DELETE /game-session
|
||||||
|
Notify server of session end (player disconnect).
|
||||||
|
|
||||||
|
### 2.2 Server Join Endpoints
|
||||||
|
|
||||||
|
#### POST /server-join/auth-grant
|
||||||
|
Request authorization grant for connecting to a game server.
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"serverAddress": "string",
|
||||||
|
"serverPort": number
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"grant": "authorization grant string"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### POST /server-join/auth-token
|
||||||
|
Exchange authorization grant for server-specific token with certificate binding.
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"grant": "authorization grant",
|
||||||
|
"clientCertHash": "SHA256 hash of client certificate"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"token": "server-specific JWT with cnf claim"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 Account Endpoints
|
||||||
|
|
||||||
|
#### GET /my-account/game-profile
|
||||||
|
Get the player's game profile.
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"uuid": "player UUID",
|
||||||
|
"username": "display name",
|
||||||
|
"createdAt": "timestamp"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### POST /my-account/game-profile
|
||||||
|
Update the player's game profile.
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"username": "new display name"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET /my-account/cosmetics
|
||||||
|
Get list of unlocked cosmetics for the player.
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"cosmetics": [
|
||||||
|
{
|
||||||
|
"id": "cosmetic_id",
|
||||||
|
"category": "category_name",
|
||||||
|
"unlockedAt": "timestamp"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### POST /my-account/skin
|
||||||
|
Save player's skin/character customization preferences.
|
||||||
|
|
||||||
|
**Request:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"skinTone": "SkinTone_01",
|
||||||
|
"bodyType": "Default",
|
||||||
|
"parts": {
|
||||||
|
"haircut": "Haircut_ShortMessy.Blue",
|
||||||
|
"eyes": "Eyes_Default.Green",
|
||||||
|
"eyebrows": "Eyebrows_Default",
|
||||||
|
"face": "Face_Default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.4 JWKS Endpoint
|
||||||
|
|
||||||
|
#### GET /.well-known/jwks.json
|
||||||
|
Get JSON Web Key Set for JWT verification.
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"keys": [
|
||||||
|
{
|
||||||
|
"kty": "OKP",
|
||||||
|
"crv": "Ed25519",
|
||||||
|
"x": "base64url-encoded-public-key",
|
||||||
|
"kid": "key-id",
|
||||||
|
"use": "sig",
|
||||||
|
"alg": "EdDSA"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.5 Profile Lookup Endpoints
|
||||||
|
|
||||||
|
#### GET /profile/uuid/{uuid}
|
||||||
|
Lookup player profile by UUID.
|
||||||
|
|
||||||
|
#### GET /profile/username/{username}
|
||||||
|
Lookup player profile by username (server-scoped).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. World Tools & Builder Tools
|
||||||
|
|
||||||
|
### 3.1 World Tools (worldtools.*)
|
||||||
|
|
||||||
|
These are in-game tools for world creation and editing in builder/creative mode.
|
||||||
|
|
||||||
|
| Tool | Command | Description |
|
||||||
|
|------|---------|-------------|
|
||||||
|
| **Change Model** | `worldtools.changeModel` | Change the model of an entity in the world |
|
||||||
|
| **Import Image** | `worldtools.importImage` | Import image files into the world as textures |
|
||||||
|
| **Import OBJ** | `worldtools.importObj` | Import 3D OBJ model files into the world |
|
||||||
|
| **Instance** | `worldtools.instance` | Manage world instances and copies |
|
||||||
|
| **Play Sound** | `worldtools.playSound` | Play sound effects in the world |
|
||||||
|
| **Prefab Editor** | `worldtools.prefabEditor` | Open the prefab editor interface |
|
||||||
|
| **Prefab List** | `worldtools.prefabList` | List and manage saved prefabs |
|
||||||
|
| **Spawn Entity** | `worldtools.spawnEntity` | Spawn entities at specified locations |
|
||||||
|
| **Spawn Particle** | `worldtools.spawnParticle` | Spawn particle effects |
|
||||||
|
| **Tint Chunk** | `worldtools.tintChunk` | Apply color tinting to world chunks |
|
||||||
|
|
||||||
|
### 3.2 Builder Tools (buildertools.*)
|
||||||
|
|
||||||
|
Additional tools for the asset editor and builder mode.
|
||||||
|
|
||||||
|
| Tool | Class | Description |
|
||||||
|
|------|-------|-------------|
|
||||||
|
| **Image Import** | `buildertools.imageimport.ImageImportPage` | UI page for importing images |
|
||||||
|
| **OBJ Import** | `buildertools.objimport.ObjImportPage` | UI page for importing OBJ models |
|
||||||
|
| **Prefab Editor** | `buildertools.prefabeditor.ui.PrefabEditorLoadSettings` | Prefab editor with load/save |
|
||||||
|
| **Prefab List** | `buildertools.prefablist.PrefabPage` | Prefab listing and management |
|
||||||
|
|
||||||
|
### 3.3 Machinima Tool
|
||||||
|
|
||||||
|
- **Purpose:** In-game cinematic/video recording tool
|
||||||
|
- **Access:** Available via hotbar slot
|
||||||
|
- **Message:** "Hotbar is full. Clear a slot to receive the Machinima tool."
|
||||||
|
|
||||||
|
### 3.4 Asset Editor
|
||||||
|
|
||||||
|
The client includes an asset editor with these features:
|
||||||
|
- `AssetEditorDownload` - Download assets from tools service
|
||||||
|
- `assetEditor.exportModal` - Export modal for assets
|
||||||
|
- `assetEditor.fileSaveState` - File save state management
|
||||||
|
- `assetEditor.property.tooltip` - Property tooltips
|
||||||
|
|
||||||
|
### 3.5 tools.hytale.com API Requirements
|
||||||
|
|
||||||
|
To fully support builder mode, the tools service would need:
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /assets/upload
|
||||||
|
- Upload asset files (images, models, sounds)
|
||||||
|
- Returns asset ID/URL
|
||||||
|
|
||||||
|
GET /assets/{assetId}
|
||||||
|
- Download asset by ID
|
||||||
|
- Returns asset binary data
|
||||||
|
|
||||||
|
POST /prefabs/save
|
||||||
|
- Save prefab definition
|
||||||
|
- Returns prefab ID
|
||||||
|
|
||||||
|
GET /prefabs/{prefabId}
|
||||||
|
- Load prefab by ID
|
||||||
|
- Returns prefab JSON
|
||||||
|
|
||||||
|
GET /prefabs/list
|
||||||
|
- List user's saved prefabs
|
||||||
|
- Returns array of prefab metadata
|
||||||
|
|
||||||
|
DELETE /prefabs/{prefabId}
|
||||||
|
- Delete a prefab
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** The game functions without tools.hytale.com - it's only needed for cloud-based asset sharing in builder mode.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. External Service URLs
|
||||||
|
|
||||||
|
### 4.1 Hytale Official URLs
|
||||||
|
|
||||||
|
| URL | Purpose | Patchable |
|
||||||
|
|-----|---------|-----------|
|
||||||
|
| `https://store.hytale.com/?upgrade=` | In-game store for purchases | Yes |
|
||||||
|
| `https://hytale.com/help/joining-friends` | Help documentation | Yes |
|
||||||
|
| `https://discord.gg/hytale` | Official Discord invite | Yes |
|
||||||
|
|
||||||
|
### 4.2 Third-Party Service URLs
|
||||||
|
|
||||||
|
| URL | Purpose | Notes |
|
||||||
|
|-----|---------|-------|
|
||||||
|
| `https://blockbench.net/downloads` | Blockbench download page | 3D model editor |
|
||||||
|
| `https://blockbench.net/plugins/hytale_plugin` | Hytale Blockbench plugin | For asset creation |
|
||||||
|
| `https://docs.sentry.io/platforms/dotnet/*` | Sentry documentation | Error tracking docs |
|
||||||
|
| `https://aka.ms/*` | Microsoft .NET documentation | Runtime docs |
|
||||||
|
| `https://learn.microsoft.com/*` | Microsoft Learn | .NET API docs |
|
||||||
|
| `https://go.microsoft.com/*` | Microsoft redirects | Various docs |
|
||||||
|
|
||||||
|
### 4.3 Graphics/Rendering References
|
||||||
|
|
||||||
|
| URL | Purpose |
|
||||||
|
|-----|---------|
|
||||||
|
| `https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)` | GLSL interface blocks |
|
||||||
|
| `https://www.khronos.org/opengl/wiki/Sampler_(GLSL)` | GLSL texture samplers |
|
||||||
|
| `https://www.shadertoy.com/view/Xd23Dh` | Shader reference |
|
||||||
|
| `https://www.shadertoy.com/view/ltlSRj` | Shader reference |
|
||||||
|
| `https://aras-p.info/texts/CompactNormalStorage.html` | Normal map compression |
|
||||||
|
| `https://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/` | Depth reconstruction |
|
||||||
|
| `https://briansharpe.files.wordpress.com/2018/07/moment-transparency-supp-av.pdf` | Transparency rendering |
|
||||||
|
| `https://www.pmavridis.com/research/fbcompression/` | Frame buffer compression |
|
||||||
|
| `https://jcgt.org/published/0002/02/09/` | Graphics technique |
|
||||||
|
| `https://jcgt.org/published/0006/01/03/` | Graphics technique |
|
||||||
|
| `https://graphics.cs.williams.edu/papers/CSSM/` | Graphics paper |
|
||||||
|
| `http://www.humus.name/Articles/Persson_LowLevelThinking.pdf` | Low-level graphics |
|
||||||
|
|
||||||
|
### 4.4 GitHub References
|
||||||
|
|
||||||
|
| URL | Purpose |
|
||||||
|
|-----|---------|
|
||||||
|
| `https://github.com/NLog/NLog.git` | Logging framework |
|
||||||
|
| `https://github.com/Noesis/Managed/tree/master/Src/Noesis/Core` | NoesisGUI core |
|
||||||
|
| `https://github.com/Noesis/Managed/tree/master/Src/NoesisApp/Core` | NoesisGUI app |
|
||||||
|
| `https://github.com/dotnet/dotnet` | .NET runtime |
|
||||||
|
| `https://github.com/ektrah/nsec.git` | NSec cryptography |
|
||||||
|
| `https://github.com/getsentry/sentry-dotnet` | Sentry .NET SDK |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Patchable Strings
|
||||||
|
|
||||||
|
### 5.1 Domain Strings
|
||||||
|
|
||||||
|
| Original | Replacement | Purpose |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `hytale.com` | `{f2p_domain}` | Base domain (4-16 chars) |
|
||||||
|
| `sessions.` | Stripped or replaced | Session service subdomain |
|
||||||
|
| `account-data.` | Stripped or replaced | Account service subdomain |
|
||||||
|
| `telemetry.` | Stripped or replaced | Telemetry subdomain |
|
||||||
|
| `tools.` | Stripped or replaced | Tools service subdomain |
|
||||||
|
|
||||||
|
### 5.2 URL Strings
|
||||||
|
|
||||||
|
| Original | Can Replace With | Notes |
|
||||||
|
|----------|------------------|-------|
|
||||||
|
| `https://store.hytale.com/?upgrade=` | Custom store URL | In-game purchases |
|
||||||
|
| `https://discord.gg/hytale` | Custom Discord | Community link |
|
||||||
|
| `https://hytale.com/help/joining-friends` | Custom help docs | Help system |
|
||||||
|
| `sentry.hytale.com` | Own Sentry or disable | Error tracking |
|
||||||
|
|
||||||
|
### 5.3 String Encoding Details
|
||||||
|
|
||||||
|
**.NET UTF-16LE Format:**
|
||||||
|
- Each character is 2 bytes (little-endian)
|
||||||
|
- Example: "hytale" = `68 00 79 00 74 00 61 00 6c 00 65 00`
|
||||||
|
- Strings are length-prefixed in the binary
|
||||||
|
|
||||||
|
**Length Prefix Format:**
|
||||||
|
- 1 byte for strings < 128 chars
|
||||||
|
- 2 bytes (varint) for longer strings
|
||||||
|
- Followed by UTF-16LE character data
|
||||||
|
|
||||||
|
### 5.4 Current Patcher Behavior
|
||||||
|
|
||||||
|
The `clientPatcher.js` patches:
|
||||||
|
1. `sessions.hytale.com` → `{f2p_domain}` (single endpoint)
|
||||||
|
2. `account-data.hytale.com` → `{f2p_domain}`
|
||||||
|
3. `telemetry.hytale.com` → `{f2p_domain}`
|
||||||
|
|
||||||
|
**Not currently patched:**
|
||||||
|
- `tools.hytale.com` (builder mode assets)
|
||||||
|
- `store.hytale.com` (in-game store)
|
||||||
|
- `sentry.hytale.com` (error tracking)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Sentry Error Tracking
|
||||||
|
|
||||||
|
### 6.1 Sentry Configuration
|
||||||
|
|
||||||
|
**DSN Found in Binary:**
|
||||||
|
```
|
||||||
|
https://ca900df42fcf57d4dd8401a86ddd7da2@sentry.hytale.com/
|
||||||
|
```
|
||||||
|
|
||||||
|
**DSN Components:**
|
||||||
|
- Protocol: `https`
|
||||||
|
- Public Key: `ca900df42fcf57d4dd8401a86ddd7da2`
|
||||||
|
- Host: `sentry.hytale.com`
|
||||||
|
- Project ID: (after trailing slash)
|
||||||
|
|
||||||
|
### 6.2 Sentry Integration
|
||||||
|
|
||||||
|
The client uses the official Sentry .NET SDK:
|
||||||
|
- Package: `sentry-dotnet`
|
||||||
|
- Documentation refs found in binary
|
||||||
|
|
||||||
|
### 6.3 Patching Options
|
||||||
|
|
||||||
|
**Option 1: Disable Sentry**
|
||||||
|
- Replace DSN with invalid string
|
||||||
|
- Errors won't be reported
|
||||||
|
|
||||||
|
**Option 2: Redirect to Own Sentry**
|
||||||
|
- Replace `sentry.hytale.com` with own Sentry host
|
||||||
|
- Requires same-length domain or binary patching
|
||||||
|
|
||||||
|
**Option 3: Leave As-Is**
|
||||||
|
- Errors still report to Hypixel
|
||||||
|
- May expose F2P server information
|
||||||
|
|
||||||
|
### 6.4 Sentry Environment Variables
|
||||||
|
|
||||||
|
Found configuration references:
|
||||||
|
- `SENTRY_DSN` - DSN override
|
||||||
|
- `SENTRY_ENVIRONMENT` - Environment name
|
||||||
|
- Docs: `https://docs.sentry.io/platforms/dotnet/configuration/environments`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Internal Class References
|
||||||
|
|
||||||
|
### 7.1 Package Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
com.hypixel.hytale/
|
||||||
|
├── builtin/
|
||||||
|
│ ├── buildertools/
|
||||||
|
│ │ ├── imageimport/
|
||||||
|
│ │ │ └── ImageImportPage
|
||||||
|
│ │ ├── objimport/
|
||||||
|
│ │ │ └── ObjImportPage
|
||||||
|
│ │ ├── prefabeditor/
|
||||||
|
│ │ │ └── ui/PrefabEditorLoadSettings
|
||||||
|
│ │ └── prefablist/
|
||||||
|
│ │ └── PrefabPage
|
||||||
|
│ ├── instances/
|
||||||
|
│ │ └── page/InstanceListPage
|
||||||
|
│ └── model/
|
||||||
|
│ └── pages/ChangeModelPage
|
||||||
|
├── server/
|
||||||
|
│ └── core/
|
||||||
|
│ └── asset/
|
||||||
|
│ └── type/
|
||||||
|
│ └── particle/
|
||||||
|
│ └── pages/ParticleSpawn*
|
||||||
|
└── Creation/
|
||||||
|
└── navigation/
|
||||||
|
├── buildertools/
|
||||||
|
└── worldtools/
|
||||||
|
├── changeModel
|
||||||
|
├── importImage
|
||||||
|
├── importObj
|
||||||
|
├── instance
|
||||||
|
├── playSound
|
||||||
|
├── prefabEditor
|
||||||
|
├── prefabList
|
||||||
|
├── spawnEntity
|
||||||
|
├── spawnParticle
|
||||||
|
└── tintChunk
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.2 UI Components
|
||||||
|
|
||||||
|
| Component | Path | Purpose |
|
||||||
|
|-----------|------|---------|
|
||||||
|
| GameLoading | `/GameLoading.u` | Loading screen |
|
||||||
|
| GamePageNavigation | `/GamePageNavigation.u` | Main navigation |
|
||||||
|
| ServerButton | `/ServerButton.u` | Server list button |
|
||||||
|
| ServerModal | `/ServerModal.u` | Server details modal |
|
||||||
|
| ServersPage | `/Servers/ServersPage.u` | Server browser |
|
||||||
|
| DirectConnectPopup | `/Servers/DirectConnectPopup.u` | Direct connect dialog |
|
||||||
|
| EditServerPopup | `/Servers/EditServerPopup.u` | Edit server dialog |
|
||||||
|
| JoinViaCodePopup | `/Servers/JoinViaCodePopup.u` | Join via code dialog |
|
||||||
|
| MinigamesPage | `/Minigames/MinigamesPage.u` | Minigames browser |
|
||||||
|
|
||||||
|
### 7.3 Configuration Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `/GameplayConfigs/Default.json` | Default gameplay settings |
|
||||||
|
| `hytale_plugin.js` | Blockbench plugin script |
|
||||||
|
| `hytale_assets` | Asset reference |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Binary Offsets Reference
|
||||||
|
|
||||||
|
### 8.1 URL String Offsets (macOS binary)
|
||||||
|
|
||||||
|
| Offset | Content | Length |
|
||||||
|
|--------|---------|--------|
|
||||||
|
| `0x1bf0098` | `https://account-data` | ~21 chars |
|
||||||
|
| `0x1bf00c9` | `https://aka.ms/dotnet-warnings/{0}` | ~35 chars |
|
||||||
|
| `0x1bf0114` | `https://blockbench.net/downloads` | ~33 chars |
|
||||||
|
| `0x1bf015d` | `https://blockbench.net/plugins/hytale_plugin` | ~45 chars |
|
||||||
|
| `0x1bf01bc` | `https://...@sentry.hytale.com/` | ~60 chars |
|
||||||
|
| `0x1bf023b` | `https://discord.gg/hytale` | ~26 chars |
|
||||||
|
| `0x1bf0274` | `https://hytale.com/help/joining-friends` | ~40 chars |
|
||||||
|
| `0x1bf02c9` | `https://sessions` | ~17 chars |
|
||||||
|
| `0x1bf02f2` | `https://store.hytale.com/?upgrade=` | ~35 chars |
|
||||||
|
| `0x1bf033d` | `https://telemetry` | ~18 chars |
|
||||||
|
| `0x1bf0368` | `https://tools` | ~14 chars |
|
||||||
|
|
||||||
|
### 8.2 API Endpoint Offsets
|
||||||
|
|
||||||
|
| Offset | Endpoint |
|
||||||
|
|--------|----------|
|
||||||
|
| `0x1b115d2` | `/game-session/child` |
|
||||||
|
| `0x1b115ff` | `/game-session/refresh` |
|
||||||
|
| `0x1b117c2` | `/server-join/auth-grant` |
|
||||||
|
| `0x1b117f7` | `/server-join/auth-token` |
|
||||||
|
| `0x1b11689` | `/my-account/cosmetics` |
|
||||||
|
| `0x1b116ba` | `/my-account/game-profile` |
|
||||||
|
| `0x1b116f1` | `/my-account/skin` |
|
||||||
|
| `0x1b10d8c` | `/.well-known/jwks.json` |
|
||||||
|
|
||||||
|
### 8.3 Notes on Offsets
|
||||||
|
|
||||||
|
- Offsets are for the macOS binary
|
||||||
|
- Windows/Linux binaries will have different offsets
|
||||||
|
- Offsets may change between game versions
|
||||||
|
- Always verify offsets before patching
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Implementation Notes
|
||||||
|
|
||||||
|
### 9.1 Current Auth Server Implementation
|
||||||
|
|
||||||
|
The auth server (`hytale-auth-server`) currently implements:
|
||||||
|
|
||||||
|
**Fully Implemented:**
|
||||||
|
- [x] `/game-session/new` - Session creation
|
||||||
|
- [x] `/game-session/refresh` - Token refresh
|
||||||
|
- [x] `/server-join/auth-grant` - Auth grants
|
||||||
|
- [x] `/server-join/auth-token` - Token exchange with cert binding
|
||||||
|
- [x] `/my-account/cosmetics` - Cosmetic list
|
||||||
|
- [x] `/my-account/game-profile` - Profile get/update
|
||||||
|
- [x] `/my-account/skin` - Skin save
|
||||||
|
- [x] `/.well-known/jwks.json` - JWKS endpoint
|
||||||
|
- [x] `/profile/uuid/{uuid}` - UUID lookup
|
||||||
|
- [x] `/profile/username/{username}` - Username lookup
|
||||||
|
- [x] Telemetry endpoints (accept and discard)
|
||||||
|
|
||||||
|
**Not Implemented:**
|
||||||
|
- [ ] `tools.hytale.com` API (asset upload/download)
|
||||||
|
- [ ] Prefab cloud storage
|
||||||
|
- [ ] Asset sharing between players
|
||||||
|
|
||||||
|
### 9.2 Tools Service Implementation (Future)
|
||||||
|
|
||||||
|
If implementing tools.hytale.com functionality:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Suggested endpoints for auth-server
|
||||||
|
|
||||||
|
// Asset upload
|
||||||
|
app.post('/tools/assets/upload', async (req, res) => {
|
||||||
|
// Handle multipart file upload
|
||||||
|
// Store in local filesystem or S3
|
||||||
|
// Return asset ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// Asset download
|
||||||
|
app.get('/tools/assets/:assetId', async (req, res) => {
|
||||||
|
// Retrieve asset by ID
|
||||||
|
// Stream file to client
|
||||||
|
});
|
||||||
|
|
||||||
|
// Prefab operations
|
||||||
|
app.post('/tools/prefabs', async (req, res) => {
|
||||||
|
// Save prefab JSON
|
||||||
|
// Associate with user
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/tools/prefabs/:prefabId', async (req, res) => {
|
||||||
|
// Get prefab by ID
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/tools/prefabs', async (req, res) => {
|
||||||
|
// List user's prefabs
|
||||||
|
});
|
||||||
|
|
||||||
|
app.delete('/tools/prefabs/:prefabId', async (req, res) => {
|
||||||
|
// Delete prefab
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.3 Patching Recommendations
|
||||||
|
|
||||||
|
**Essential (Already Done):**
|
||||||
|
1. Patch `sessions.hytale.com` → F2P domain
|
||||||
|
2. Patch `account-data.hytale.com` → F2P domain
|
||||||
|
3. Patch `telemetry.hytale.com` → F2P domain (or disable)
|
||||||
|
|
||||||
|
**Optional Enhancements:**
|
||||||
|
1. Patch `tools.hytale.com` → F2P domain (if implementing tools API)
|
||||||
|
2. Patch `sentry.hytale.com` → Own Sentry or disable
|
||||||
|
3. Patch `discord.gg/hytale` → Community Discord
|
||||||
|
4. Patch `store.hytale.com` → Custom store (if applicable)
|
||||||
|
|
||||||
|
**Not Recommended to Patch:**
|
||||||
|
- Blockbench URLs (useful for modding)
|
||||||
|
- Microsoft documentation URLs
|
||||||
|
- Graphics reference URLs
|
||||||
|
|
||||||
|
### 9.4 Security Considerations
|
||||||
|
|
||||||
|
1. **Sentry DSN Exposure**
|
||||||
|
- Current: Errors report to Hypixel's Sentry
|
||||||
|
- Risk: May expose F2P server details
|
||||||
|
- Recommendation: Disable or redirect
|
||||||
|
|
||||||
|
2. **Telemetry Data**
|
||||||
|
- Current: Accepted but discarded
|
||||||
|
- Alternative: Log for analytics
|
||||||
|
- Risk: Privacy concerns
|
||||||
|
|
||||||
|
3. **Asset Upload (if implemented)**
|
||||||
|
- Validate file types
|
||||||
|
- Limit file sizes
|
||||||
|
- Scan for malicious content
|
||||||
|
- Rate limit uploads
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Appendix A: String Extraction Commands
|
||||||
|
|
||||||
|
### Extract UTF-16LE Strings
|
||||||
|
```bash
|
||||||
|
python3 << 'EOF'
|
||||||
|
with open("HytaleClient", "rb") as f:
|
||||||
|
data = f.read()
|
||||||
|
|
||||||
|
pattern = b'h\x00t\x00t\x00p\x00s\x00:\x00/\x00/\x00'
|
||||||
|
idx = 0
|
||||||
|
while True:
|
||||||
|
idx = data.find(pattern, idx)
|
||||||
|
if idx == -1:
|
||||||
|
break
|
||||||
|
end = idx
|
||||||
|
chars = []
|
||||||
|
while end < len(data) - 1:
|
||||||
|
char = data[end] | (data[end+1] << 8)
|
||||||
|
if 0x20 <= char <= 0x7e:
|
||||||
|
chars.append(chr(char))
|
||||||
|
end += 2
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
print(f"{hex(idx)}: {''.join(chars)}")
|
||||||
|
idx += 2
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### Search for Specific Pattern
|
||||||
|
```bash
|
||||||
|
xxd HytaleClient | grep "h.y.t.a.l.e"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Extract Context Around Offset
|
||||||
|
```bash
|
||||||
|
dd if=HytaleClient bs=1 skip=$((0x1bf0000)) count=2048 | xxd
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Appendix B: Version History
|
||||||
|
|
||||||
|
| Date | Changes |
|
||||||
|
|------|---------|
|
||||||
|
| 2026-01-27 | Initial analysis of macOS client binary |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Appendix C: Related Documentation
|
||||||
|
|
||||||
|
- `CLAUDE.md` - Project overview and architecture
|
||||||
|
- `DUAL_AUTH_FLOW.md` - Dual authentication flow diagrams
|
||||||
|
- `STEAMDECK_CRASH_INVESTIGATION.md` - libzstd crash fix
|
||||||
|
- `PLAYER_PASSWORD_FEATURE.md` - Planned password authentication
|
||||||
|
- `backend/utils/clientPatcher.js` - Client patcher implementation
|
||||||
113
docs/FASTUTIL_CLASSLOADER_ISSUE.md
Normal file
113
docs/FASTUTIL_CLASSLOADER_ISSUE.md
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
# Singleplayer Server Crash: fastutil ClassNotFoundException
|
||||||
|
|
||||||
|
## Status: Open (user-specific, Feb 24 2026)
|
||||||
|
|
||||||
|
## Symptom
|
||||||
|
|
||||||
|
Singleplayer server crashes immediately after DualAuth Agent installs successfully:
|
||||||
|
|
||||||
|
```
|
||||||
|
Exception in thread "main" java.lang.NoClassDefFoundError: it/unimi/dsi/fastutil/objects/ObjectArrayList
|
||||||
|
at com.hypixel.hytale.plugin.early.EarlyPluginLoader.<clinit>(EarlyPluginLoader.java:34)
|
||||||
|
at com.hypixel.hytale.Main.main(Main.java:36)
|
||||||
|
Caused by: java.lang.ClassNotFoundException: it.unimi.dsi.fastutil.objects.ObjectArrayList
|
||||||
|
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
|
||||||
|
```
|
||||||
|
|
||||||
|
Server exits with code 1. Multiplayer works fine for the same user.
|
||||||
|
|
||||||
|
## Affected User
|
||||||
|
|
||||||
|
- Discord: ヅ𝚃 JAYED !
|
||||||
|
- Platform: Windows (standard x86_64, NOT ARM)
|
||||||
|
- Reproduces 100% on singleplayer, every attempt
|
||||||
|
- Other users (including macOS/Linux) are NOT affected
|
||||||
|
|
||||||
|
## What Works
|
||||||
|
|
||||||
|
- Java wrapper correctly strips `-XX:+UseCompactObjectHeaders`
|
||||||
|
- Java wrapper correctly injects `--disable-sentry`
|
||||||
|
- DualAuth Agent v1.1.12 installs successfully (STATIC mode)
|
||||||
|
- Multiplayer connections work fine
|
||||||
|
- Repair and reinstall did NOT fix the issue
|
||||||
|
|
||||||
|
## Root Cause Analysis
|
||||||
|
|
||||||
|
`fastutil` (`it.unimi.dsi.fastutil`) should be bundled inside `HytaleServer.jar` (fat JAR). The `ClassNotFoundException` means the JVM's app classloader cannot find it despite it being in the JAR.
|
||||||
|
|
||||||
|
### Ruled Out
|
||||||
|
|
||||||
|
- **Wrapper issue**: Wrapper is working correctly (confirmed in logs)
|
||||||
|
- **UseCompactObjectHeaders**: Server also has `-XX:+IgnoreUnrecognizedVMOptions`, so unrecognized flags don't crash it
|
||||||
|
- **DualAuth Agent**: Works for all other users; agent installs successfully before the crash
|
||||||
|
- **Corrupted game files**: Repair/reinstall didn't help
|
||||||
|
- **ARM64/Parallels**: User is on standard Windows, not ARM
|
||||||
|
|
||||||
|
### Likely Causes (user-specific)
|
||||||
|
|
||||||
|
1. **Antivirus interference** — Windows Defender or third-party AV blocking Java from reading classes out of JAR files, especially with `-javaagent` active
|
||||||
|
2. **Corrupted/incompatible JRE** — bundled JRE might be broken on their system
|
||||||
|
3. **File locking** — another process holding HytaleServer.jar open
|
||||||
|
|
||||||
|
## Debugging Steps (ask user)
|
||||||
|
|
||||||
|
1. **Does official Hytale singleplayer work?** (without F2P launcher)
|
||||||
|
- Yes → something about our launch setup
|
||||||
|
- No → their system/JRE issue
|
||||||
|
|
||||||
|
2. **Check antivirus** — add game directory to Windows Defender exclusions:
|
||||||
|
- Settings → Windows Security → Virus & threat protection → Exclusions
|
||||||
|
- Add their HytaleF2P install folder
|
||||||
|
|
||||||
|
3. **Verify fastutil is in the JAR**:
|
||||||
|
```cmd
|
||||||
|
jar tf "D:\path\to\Server\HytaleServer.jar" | findstr fastutil
|
||||||
|
```
|
||||||
|
- If output shows fastutil classes → JAR is fine, classloader issue
|
||||||
|
- If no output → JAR is incomplete/corrupt (different from other users)
|
||||||
|
|
||||||
|
4. **Try without DualAuth agent** — rename `dualauth-agent.jar` in Server/ folder, retry singleplayer
|
||||||
|
- If works → agent's classloader manipulation breaks fastutil on their setup
|
||||||
|
- If still fails → unrelated to agent
|
||||||
|
|
||||||
|
5. **Check JRE version** — have them run:
|
||||||
|
```cmd
|
||||||
|
"D:\path\to\jre\latest\bin\java.exe" -version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update (Feb 24): `-XX:+UseCompactObjectHeaders` stripping removed from defaults
|
||||||
|
|
||||||
|
Stripping this flag did NOT fix the issue. The server already has `-XX:+IgnoreUnrecognizedVMOptions` so unrecognized flags are harmless. The flag was removed from default `stripFlags` in `backend/core/config.js`.
|
||||||
|
|
||||||
|
## Using the Java Wrapper to Strip JVM Flags
|
||||||
|
|
||||||
|
If a user needs to strip a specific JVM flag (e.g., for debugging or compatibility), they can do it via the launcher UI:
|
||||||
|
|
||||||
|
1. Open **Settings** → scroll to **Java Wrapper Configuration**
|
||||||
|
2. Under **JVM Flags to Remove**, type the flag (e.g. `-XX:+UseCompactObjectHeaders`) and click **Add**
|
||||||
|
3. The flag will be stripped from all JVM invocations at launch time
|
||||||
|
4. To inject custom arguments, use the **Arguments to Inject** section (with optional "Server Only" condition)
|
||||||
|
5. **Restore Defaults** resets to empty strip flags + `--disable-sentry` (server only)
|
||||||
|
|
||||||
|
The wrapper generates platform-specific scripts at launch time:
|
||||||
|
- **Windows**: `java-wrapper.bat` in `jre/latest/bin/`
|
||||||
|
- **macOS/Linux**: `java-wrapper` shell script in the same directory
|
||||||
|
|
||||||
|
Config is stored in `config.json` under `javaWrapperConfig`:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"javaWrapperConfig": {
|
||||||
|
"stripFlags": ["-XX:+SomeFlag"],
|
||||||
|
"injectArgs": [
|
||||||
|
{ "arg": "--some-arg", "condition": "server" },
|
||||||
|
{ "arg": "--other-arg", "condition": "always" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Related
|
||||||
|
|
||||||
|
- Java wrapper config: `backend/core/config.js` (stripFlags / injectArgs)
|
||||||
|
- DualAuth Agent: v1.1.12, package `ws.sanasol.dualauth`
|
||||||
|
- Game version at time of report: `2026.02.19-1a311a592`
|
||||||
48
docs/KULVIN_RAM_PRESSURE_CRASH.md
Normal file
48
docs/KULVIN_RAM_PRESSURE_CRASH.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Client Crash: RAM Pressure on Low-End Hardware
|
||||||
|
|
||||||
|
## Status: Resolved (Feb 24, 2026)
|
||||||
|
|
||||||
|
## Symptom
|
||||||
|
|
||||||
|
Game launches but crashes with exit code 1 after ~32 seconds. Launcher logs show stale `java.exe(HytaleServer)` killed on every relaunch. Earlier sessions showed game running for ~4 minutes before `System.OutOfMemoryException`.
|
||||||
|
|
||||||
|
## Affected User
|
||||||
|
|
||||||
|
- Discord: KULVIN
|
||||||
|
- Hardware: Intel UHD 620 + NVIDIA MX150 (2GB VRAM), low-end laptop
|
||||||
|
- 22 mods installed
|
||||||
|
- Platform: Windows x64
|
||||||
|
|
||||||
|
## Root Cause
|
||||||
|
|
||||||
|
RAM pressure from background apps + 22 mods. The game's .NET client ran out of memory, and the embedded singleplayer server JVM (no `-Xmx` cap) competed for the same limited RAM.
|
||||||
|
|
||||||
|
## Timeline
|
||||||
|
|
||||||
|
1. Morning session: Game ran ~4 minutes, then `System.OutOfMemoryException` crashed client, server JVM crashed with `EXCEPTION_ACCESS_VIOLATION`
|
||||||
|
2. Evening sessions: Game started crashing in ~32 seconds (system still degraded from earlier OOM)
|
||||||
|
3. Server JVM orphaned every time (cleaned up by `killGameProcesses()` on next launch)
|
||||||
|
|
||||||
|
## Resolution
|
||||||
|
|
||||||
|
User fixed by:
|
||||||
|
1. Closing background applications to free RAM
|
||||||
|
2. Reinstalling the game
|
||||||
|
|
||||||
|
## Additional Issues Found
|
||||||
|
|
||||||
|
- `WeaponStatsViewer` mod left a directory (not a .jar) in `HytaleSaves\Mods\`, causing EPERM on every mod sync
|
||||||
|
- Stale AOT cache (`HytaleServer.aot`) cleaned up automatically by launcher
|
||||||
|
|
||||||
|
## Debugging Steps (for similar cases)
|
||||||
|
|
||||||
|
1. Check RAM usage in Task Manager before launching
|
||||||
|
2. Windows Event Viewer (Win+R → `eventvwr.msc` → Application) for crash module details
|
||||||
|
3. Try with all mods disabled
|
||||||
|
4. Reboot to clear degraded memory state
|
||||||
|
5. Close background apps (browsers, Discord, etc.)
|
||||||
|
|
||||||
|
## Recommendations
|
||||||
|
|
||||||
|
- Low-end hardware: reduce mod count (10 or fewer)
|
||||||
|
- Consider adding `-Xmx` cap to singleplayer server JVM to prevent unbounded memory growth
|
||||||
138
docs/UPDATE_SYSTEM_FIXES.md
Normal file
138
docs/UPDATE_SYSTEM_FIXES.md
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
# Update System Fixes Summary
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This document summarizes the fixes made to the launcher auto-update system to improve UX and fix macOS-specific issues.
|
||||||
|
|
||||||
|
## Issues Fixed
|
||||||
|
|
||||||
|
### 1. Duplicate Update Popups
|
||||||
|
**Problem:** Two different update UI files (`update.js` and `updater.js`) were both listening for update events, causing duplicate popups to appear.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- Disabled `updater.js` in `index.html` (commented out the script tag)
|
||||||
|
- Now only `update.js` handles all update UI with improved features
|
||||||
|
|
||||||
|
### 2. Missing Skip Button
|
||||||
|
**Problem:** Users were soft-locked on the update screen with no way to dismiss it, especially problematic on macOS where auto-install often fails.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- Added "Skip for now (not recommended)" button to update popup
|
||||||
|
- Skip button appears:
|
||||||
|
- After 30 seconds (timeout fallback)
|
||||||
|
- Immediately on any update error
|
||||||
|
- After install attempt fails (5 second timeout)
|
||||||
|
- Always visible once download completes
|
||||||
|
|
||||||
|
### 3. macOS Auto-Install Failure
|
||||||
|
**Problem:** `quitAndInstall()` silently fails on unsigned macOS apps, leaving users stuck.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- Detect macOS in `main.js` and send `autoInstallSupported: false` flag
|
||||||
|
- On macOS, show "Download Manually (Recommended)" as primary action
|
||||||
|
- "Try Install & Restart" shown as secondary option
|
||||||
|
- Added force quit fallback in `install-update` handler for macOS
|
||||||
|
- Clear messaging: "Update downloaded but auto-install may not work on macOS"
|
||||||
|
|
||||||
|
### 4. Missing IPC Handlers
|
||||||
|
**Problem:** `open-download-page` IPC handler was not registered, causing errors when clicking manual download.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- Added `open-download-page` handler in `main.js` that opens GitHub releases page
|
||||||
|
- Added `quitAndInstallUpdate` alias in `preload.js` for compatibility
|
||||||
|
|
||||||
|
### 5. Interface Blocking Not Removed
|
||||||
|
**Problem:** `unblockInterface()` method was called but never defined, leaving the UI blurred after closing popup.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- Added complete `unblockInterface()` method that:
|
||||||
|
- Removes `interface-blocked` class from main content
|
||||||
|
- Removes `no-select` class from body
|
||||||
|
- Properly removes event listeners using stored bound function references
|
||||||
|
|
||||||
|
### 6. Breathing Animation on Downloaded State
|
||||||
|
**Problem:** The pulse/breathing animation continued after download completed, which felt inappropriate for a "ready to install" state.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- Remove `update-popup-pulse` class in `showUpdateDownloaded()` method
|
||||||
|
|
||||||
|
### 7. Player Name Not Synced on First Install
|
||||||
|
**Problem:** Player name entered during installation wasn't synced to settings page input.
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
- In `install.js`, sync player name to both `playerName` and `settingsPlayerName` inputs after installation completes
|
||||||
|
|
||||||
|
## Files Modified
|
||||||
|
|
||||||
|
### `GUI/index.html`
|
||||||
|
- Commented out `updater.js` script tag (duplicate update UI)
|
||||||
|
|
||||||
|
### `GUI/js/update.js`
|
||||||
|
- Removed legacy `onUpdatePopup` listener
|
||||||
|
- Added `closeUpdatePopup()` method
|
||||||
|
- Added `unblockInterface()` method
|
||||||
|
- Added skip button to popup HTML
|
||||||
|
- Added skip button visibility logic (30s timeout, on error, after download)
|
||||||
|
- Added macOS detection and alternative UI (manual download as primary)
|
||||||
|
- Removed pulse animation when download completes
|
||||||
|
- Added console logging for debugging
|
||||||
|
- Added extra DOM check to prevent duplicate popups
|
||||||
|
- Fixed manual download button to show "Opened in browser" and close popup
|
||||||
|
|
||||||
|
### `main.js`
|
||||||
|
- Changed `autoUpdater.autoDownload` from `false` to `true`
|
||||||
|
- Added macOS error handling with `requiresManualDownload` flag
|
||||||
|
- Added `autoInstallSupported` flag to `update-downloaded` event
|
||||||
|
- Added `open-download-page` IPC handler
|
||||||
|
- Enhanced `install-update` handler with macOS force quit fallback
|
||||||
|
|
||||||
|
### `preload.js`
|
||||||
|
- Added `quitAndInstallUpdate` alias for `install-update` IPC
|
||||||
|
|
||||||
|
### `GUI/js/install.js`
|
||||||
|
- Sync player name to `settingsPlayerName` input after installation
|
||||||
|
|
||||||
|
### `backend/utils/clientPatcher.js`
|
||||||
|
- Removed server patching code (server uses pre-patched JAR from CDN)
|
||||||
|
- Simplified to client-only patching
|
||||||
|
- Removed unused imports: `crypto`, `AdmZip`, `execSync`, `spawn`, `getJavaExec`, `getBundledJavaPath`, `JRE_DIR`
|
||||||
|
- Removed unused methods: `stringToUtf8()`, `findAndReplaceDomainUtf8()`
|
||||||
|
- Cleaned up comments and documentation
|
||||||
|
- Localhost/local dev code moved to `clientPatcher.localhost.js.bak` for reference
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
To test the update popup manually, you can temporarily add this debug code to `update.js` init():
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// DEBUG: Simulate update available popup after 2 seconds
|
||||||
|
setTimeout(() => {
|
||||||
|
this.showUpdatePopup({
|
||||||
|
currentVersion: '2.0.0',
|
||||||
|
newVersion: '2.1.0',
|
||||||
|
releaseNotes: 'Debug test update'
|
||||||
|
});
|
||||||
|
|
||||||
|
// Simulate download complete after 3 more seconds
|
||||||
|
setTimeout(() => {
|
||||||
|
this.showUpdateDownloaded({
|
||||||
|
version: '2.1.0',
|
||||||
|
platform: 'darwin',
|
||||||
|
autoInstallSupported: false // Simulate macOS
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
}, 2000);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Platform-Specific Behavior
|
||||||
|
|
||||||
|
### Windows/Linux
|
||||||
|
- Auto-download enabled
|
||||||
|
- "Install & Restart" as primary action
|
||||||
|
- Skip button available as fallback
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
- Auto-download enabled (download works, install doesn't)
|
||||||
|
- "Download Manually (Recommended)" as primary action
|
||||||
|
- "Try Install & Restart" as secondary option
|
||||||
|
- Skip button always visible after download
|
||||||
|
- Force quit fallback if quitAndInstall fails
|
||||||
21
local-dev/Dockerfile.debug
Normal file
21
local-dev/Dockerfile.debug
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
FROM node:20-alpine
|
||||||
|
|
||||||
|
# Install openssl for SSL certificate generation
|
||||||
|
RUN apk add --no-cache openssl
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy package files from hytale-auth-server
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN npm ci --only=production
|
||||||
|
|
||||||
|
# Copy source files
|
||||||
|
COPY src ./src
|
||||||
|
COPY assets ./assets
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Use debug wrapper as entry point (will fall back to normal app.js if DEBUG_MODE!=true)
|
||||||
|
CMD ["node", "src/debug-wrapper.js"]
|
||||||
252
local-dev/README.md
Normal file
252
local-dev/README.md
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
# Hytale F2P Local Development Environment
|
||||||
|
|
||||||
|
Local development setup for researching and testing the Hytale client. Uses the **full hytale-auth-server** with a debug wrapper for capturing all requests.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Start the local auth server
|
||||||
|
cd local-dev
|
||||||
|
chmod +x start.sh
|
||||||
|
./start.sh
|
||||||
|
|
||||||
|
# 2. In another terminal, start the launcher
|
||||||
|
cd ..
|
||||||
|
HYTALE_AUTH_DOMAIN=localhost:3000 npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it! The auth server will capture all requests for analysis.
|
||||||
|
|
||||||
|
## What's Included
|
||||||
|
|
||||||
|
### Full Auth Server with Debug Wrapper
|
||||||
|
- Uses the complete `hytale-auth-server` (not a minimal implementation)
|
||||||
|
- All endpoints work exactly as in production
|
||||||
|
- Debug wrapper captures ALL requests with full details
|
||||||
|
- Web-based debug dashboard at `/debug`
|
||||||
|
- Requests logged to `data/auth/debug-requests.jsonl`
|
||||||
|
- Unknown endpoints captured for research
|
||||||
|
|
||||||
|
### Services
|
||||||
|
- **Auth Server** (port 3000) - Full hytale-auth-server with debug
|
||||||
|
- **Kvrocks** (port 6666) - Redis-compatible storage for sessions
|
||||||
|
|
||||||
|
## Debug Dashboard
|
||||||
|
|
||||||
|
Access at `http://localhost:3000/debug`
|
||||||
|
|
||||||
|
Features:
|
||||||
|
- Real-time request viewer with auto-refresh
|
||||||
|
- Filter by subdomain (sessions, account-data, telemetry, tools)
|
||||||
|
- View full request/response details (headers, body, timing)
|
||||||
|
- Subdomain summary statistics
|
||||||
|
- Color-coded by request type and status
|
||||||
|
|
||||||
|
## Directory Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
local-dev/
|
||||||
|
├── docker-compose.yml # Docker services config
|
||||||
|
├── Dockerfile.debug # Dockerfile using debug entry point
|
||||||
|
├── debug-wrapper.js # Debug wrapper for auth server
|
||||||
|
├── start.sh # Start script
|
||||||
|
├── README.md # This file
|
||||||
|
└── data/
|
||||||
|
├── auth/
|
||||||
|
│ ├── jwt_keys.json # Generated JWT keys
|
||||||
|
│ └── debug-requests.jsonl # Request log
|
||||||
|
└── kvrocks/ # Redis data
|
||||||
|
```
|
||||||
|
|
||||||
|
## Endpoints
|
||||||
|
|
||||||
|
### Debug Endpoints
|
||||||
|
| Endpoint | Method | Description |
|
||||||
|
|----------|--------|-------------|
|
||||||
|
| `/debug` | GET | Web-based debug dashboard |
|
||||||
|
| `/debug/requests` | GET | JSON list of captured requests |
|
||||||
|
| `/debug/requests?subdomain=X` | GET | Filter by subdomain |
|
||||||
|
| `/debug/subdomains` | GET | Request summary by subdomain |
|
||||||
|
| `/debug/requests` | DELETE | Clear captured requests |
|
||||||
|
|
||||||
|
### Auth Server Endpoints
|
||||||
|
All standard hytale-auth-server endpoints work:
|
||||||
|
|
||||||
|
| Endpoint | Method | Description |
|
||||||
|
|----------|--------|-------------|
|
||||||
|
| `/health` | GET | Health check |
|
||||||
|
| `/.well-known/jwks.json` | GET | JWT public keys |
|
||||||
|
| `/game-session/new` | POST | Create session |
|
||||||
|
| `/game-session/refresh` | POST | Refresh token |
|
||||||
|
| `/game-session/child` | POST | Child session |
|
||||||
|
| `/game-session` | DELETE | End session |
|
||||||
|
| `/server-join/auth-grant` | POST | Auth grant |
|
||||||
|
| `/server-join/auth-token` | POST | Token exchange |
|
||||||
|
| `/my-account/game-profile` | GET/POST | Profile |
|
||||||
|
| `/my-account/cosmetics` | GET | Cosmetics |
|
||||||
|
| `/my-account/skin` | POST | Save skin |
|
||||||
|
| `/profile/uuid/:uuid` | GET | Profile lookup |
|
||||||
|
| `/profile/username/:username` | GET | Username lookup |
|
||||||
|
| `/avatar/:uuid` | GET | Avatar viewer |
|
||||||
|
| `/customizer/:uuid` | GET | Avatar customizer |
|
||||||
|
| `/admin` | GET | Admin dashboard (password: localdev) |
|
||||||
|
|
||||||
|
### Catch-All
|
||||||
|
Unknown endpoints return a debug response with tokens for research.
|
||||||
|
|
||||||
|
## Researching tools.hytale.com
|
||||||
|
|
||||||
|
The `tools.` subdomain is used for cloud-based asset management in builder/editor modes.
|
||||||
|
|
||||||
|
### How to Trigger Tools API
|
||||||
|
|
||||||
|
**Method 1: Builder Mode**
|
||||||
|
1. Start local dev environment
|
||||||
|
2. Launch game
|
||||||
|
3. Look for Creative/Builder mode in game menu
|
||||||
|
4. Use asset import/export features
|
||||||
|
5. Check debug dashboard for captured `tools.` requests
|
||||||
|
|
||||||
|
**Method 2: Server Configuration**
|
||||||
|
Builder mode may need server-side enablement:
|
||||||
|
- Server config for `builderToolsEnabled`
|
||||||
|
- Game mode settings
|
||||||
|
- Player permissions
|
||||||
|
|
||||||
|
**Method 3: Console Commands**
|
||||||
|
Try these worldtools commands in-game:
|
||||||
|
```
|
||||||
|
worldtools.changeModel
|
||||||
|
worldtools.importImage
|
||||||
|
worldtools.importObj
|
||||||
|
worldtools.prefabEditor
|
||||||
|
worldtools.prefabList
|
||||||
|
worldtools.spawnEntity
|
||||||
|
```
|
||||||
|
|
||||||
|
### Expected tools.hytale.com Endpoints
|
||||||
|
|
||||||
|
Based on binary analysis:
|
||||||
|
```
|
||||||
|
POST /assets/upload - Upload asset files
|
||||||
|
GET /assets/{id} - Download asset by ID
|
||||||
|
POST /prefabs - Save prefab
|
||||||
|
GET /prefabs/{id} - Load prefab
|
||||||
|
GET /prefabs - List prefabs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Start Services
|
||||||
|
```bash
|
||||||
|
./start.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Logs
|
||||||
|
```bash
|
||||||
|
docker compose logs -f auth-server
|
||||||
|
```
|
||||||
|
|
||||||
|
### Stop Services
|
||||||
|
```bash
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Captured Requests (CLI)
|
||||||
|
```bash
|
||||||
|
# All requests
|
||||||
|
curl http://localhost:3000/debug/requests | jq
|
||||||
|
|
||||||
|
# Filter by subdomain
|
||||||
|
curl "http://localhost:3000/debug/requests?subdomain=tools" | jq
|
||||||
|
|
||||||
|
# Subdomain summary
|
||||||
|
curl http://localhost:3000/debug/subdomains | jq
|
||||||
|
|
||||||
|
# From log file
|
||||||
|
cat data/auth/debug-requests.jsonl | jq -s '.'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Clear Request Log
|
||||||
|
```bash
|
||||||
|
curl -X DELETE http://localhost:3000/debug/requests
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
| Variable | Default | Description |
|
||||||
|
|----------|---------|-------------|
|
||||||
|
| `HYTALE_AUTH_DOMAIN` | - | Set to `localhost:3000` for local dev |
|
||||||
|
| `PORT` | `3000` | Auth server port |
|
||||||
|
| `DATA_DIR` | `/app/data` | Data directory |
|
||||||
|
| `DEBUG_MODE` | `true` | Enable debug features |
|
||||||
|
| `ADMIN_PASSWORD` | `localdev` | Admin dashboard password |
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Client won't connect
|
||||||
|
1. Verify auth server is running: `curl http://localhost:3000/health`
|
||||||
|
2. Check environment variable: `echo $HYTALE_AUTH_DOMAIN`
|
||||||
|
3. Check Docker logs: `docker compose logs auth-server`
|
||||||
|
|
||||||
|
### JWT/Token errors
|
||||||
|
1. Check JWKS endpoint: `curl http://localhost:3000/.well-known/jwks.json`
|
||||||
|
2. Ensure `data/auth/jwt_keys.json` exists
|
||||||
|
3. Try restarting: `docker compose restart auth-server`
|
||||||
|
|
||||||
|
### Port 3000 in use
|
||||||
|
Change the port in docker-compose.yml:
|
||||||
|
```yaml
|
||||||
|
ports:
|
||||||
|
- "3001:3000"
|
||||||
|
```
|
||||||
|
Then use `HYTALE_AUTH_DOMAIN=localhost:3001`
|
||||||
|
|
||||||
|
### Server won't start
|
||||||
|
Check for build errors:
|
||||||
|
```bash
|
||||||
|
docker compose logs auth-server
|
||||||
|
docker compose build --no-cache auth-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Request Log Format
|
||||||
|
|
||||||
|
Each line in `debug-requests.jsonl` is a JSON object:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"timestamp": "2026-01-27T12:00:00.000Z",
|
||||||
|
"method": "POST",
|
||||||
|
"path": "/game-session/new",
|
||||||
|
"host": "localhost:3000",
|
||||||
|
"subdomain": null,
|
||||||
|
"headers": {"content-type": "application/json", ...},
|
||||||
|
"query": {},
|
||||||
|
"body": {"uuid": "...", "name": "Player"},
|
||||||
|
"response": {
|
||||||
|
"statusCode": 200,
|
||||||
|
"duration": 15,
|
||||||
|
"body": {"identityToken": "...", ...}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
1. **Docker Compose** starts Kvrocks (Redis) and the auth server
|
||||||
|
2. **Dockerfile.debug** builds the auth server with `debug-wrapper.js` as entry point
|
||||||
|
3. **debug-wrapper.js** wraps the original server:
|
||||||
|
- Intercepts all requests before they reach handlers
|
||||||
|
- Captures request details (headers, body, timing)
|
||||||
|
- Intercepts responses to capture response body
|
||||||
|
- Stores everything in memory and log file
|
||||||
|
- Adds `/debug/*` routes for the dashboard
|
||||||
|
|
||||||
|
4. When `DEBUG_MODE=true`:
|
||||||
|
- All requests are logged to console with colors
|
||||||
|
- Debug dashboard available at `/debug`
|
||||||
|
- Unknown endpoints return debug info with valid tokens
|
||||||
|
|
||||||
|
5. When `DEBUG_MODE=false`:
|
||||||
|
- Server runs normally (no debug overhead)
|
||||||
|
- Same as production auth server
|
||||||
19
local-dev/data/auth/certs/server.crt
Normal file
19
local-dev/data/auth/certs/server.crt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDJTCCAg2gAwIBAgIUPhxbMZRuz3jUe6EzJf6yh9dazkcwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDEyNzIxMzU0OVoXDTI3MDEy
|
||||||
|
NzIxMzU0OVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEAzkqaar2i/RFFkmXjcVC6G8Dvf9vYTMDJXq47qVmE0nDb
|
||||||
|
MsGSZCk4f5a9aG8BIEK/LN1csaGo3C7995R4+tqhEmFvRjHBsY2eJNeamHTEZsiw
|
||||||
|
UqWC98/Mq2EdT/mRVWks00XQAR0yobnPz7nphmxDv3LxddHfvYv1Va010UHO4SrW
|
||||||
|
1twNvM5UwCT2r5shpyzJAqF8U35RmaWSVzkEN7OMZbcg7aYsumdW2jSn539MKpAC
|
||||||
|
Eyr8pRXoDqGh4zp2lEuPryKtPyh2ljNmpYIQYaXQWlyjXDsHbs9U0sHFP2fw6k1X
|
||||||
|
sp4dUcPYzyt7WC6XfbUq2Ynz2no2sOJV1hruKY1niwIDAQABo28wbTAdBgNVHQ4E
|
||||||
|
FgQU/RBh6UbVrO9qkFVNmo+5AnM6mMgwHwYDVR0jBBgwFoAU/RBh6UbVrO9qkFVN
|
||||||
|
mo+5AnM6mMgwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzARgglsb2NhbGhvc3SH
|
||||||
|
BH8AAAEwDQYJKoZIhvcNAQELBQADggEBAIr5gJ2gb079dF/tHeyqx6BxCg9+hsUg
|
||||||
|
38Fsxde0a6lEjSkntla+p20Bl2mdeWEeKFw5wc1mnMQkEJjixEhE5iA6gdswvpgf
|
||||||
|
07bYFRddCUYLrkQjWbo6u7UrkOeJfgZdHFTihMPguZ2tEPcMXitY7Ct24JRC3RRZ
|
||||||
|
BKCp88ix+ns61vAJfgdBZPbrtM0Ky2fIS+m9fWmKHvxag2/TOB67/avFzBkYXVgV
|
||||||
|
Xy79xxcICgIUELAQ8Hz0lXYfW/k+QnSAAtgLRxGh3eONaA/0Ij9sqzSnQzLM5fLd
|
||||||
|
omUKx+p2gzCpprSZGfV221ZtiAm6IvwKpQJMyM2YSbdCJfYAC0RjVyQ=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
local-dev/data/auth/certs/server.key
Normal file
28
local-dev/data/auth/certs/server.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOSppqvaL9EUWS
|
||||||
|
ZeNxULobwO9/29hMwMlerjupWYTScNsywZJkKTh/lr1obwEgQr8s3VyxoajcLv33
|
||||||
|
lHj62qESYW9GMcGxjZ4k15qYdMRmyLBSpYL3z8yrYR1P+ZFVaSzTRdABHTKhuc/P
|
||||||
|
uemGbEO/cvF10d+9i/VVrTXRQc7hKtbW3A28zlTAJPavmyGnLMkCoXxTflGZpZJX
|
||||||
|
OQQ3s4xltyDtpiy6Z1baNKfnf0wqkAITKvylFegOoaHjOnaUS4+vIq0/KHaWM2al
|
||||||
|
ghBhpdBaXKNcOwduz1TSwcU/Z/DqTVeynh1Rw9jPK3tYLpd9tSrZifPaejaw4lXW
|
||||||
|
Gu4pjWeLAgMBAAECggEAOXySsYItJGamw5g/HHnJkyhd1XyXNzRWKVtWZuf6WoZ2
|
||||||
|
nxtQRzcxdmS0XaDpaGsRSVhal2mcW9eAkHjAie9ZCX07fA0rk+YKFuw6OZf4j0gH
|
||||||
|
0tAqwhIXT/7dI0dB19JaWnnO8DCJxoW4QoPlbr9G1dgbL6EPv4t8D6cYIzs6goZk
|
||||||
|
LZcj5niASmkPgNoSi6yiBTcvOUEalJm3b+u5BMKL5jaodmo0pcBRa+w2jPdrFB9X
|
||||||
|
9s2ZdztLXdn2JVxS7N0IN9KNJzOhip/0FMiv9MAxQ+rSxsNgaZRKQ5iI8nzCRRv8
|
||||||
|
VDI6FW4+hUFIcieeEqzfORJRmtj2N99AzVZMOomkkQKBgQD3rkRiIB7Q5mFIoRRN
|
||||||
|
YWiTOlGT3o4tYRWBE/p6eFEBTxPlvbezKyZ5OdwsUVMVbWe2ZqAUjUgQQ53VtRZq
|
||||||
|
3VAQbsvsm08IbY9Zrj2zSqhfhm/pyT63fqWqdqHMmJfXCkL1tZJWaijyzmsUA5sO
|
||||||
|
j7zGJtxdb7a0DFD0WYhFQ9nbeQKBgQDVOHES0+UCQsq7XEmGhYBJNnVFtV8bCy8q
|
||||||
|
HuGBX1f+M+mE4DDuNo067EFKlEfiMTrMIKQT/3WNim6YpdCcMIrA/roCmG2cqjmQ
|
||||||
|
gkuEItxU1WGbO3VvK2eN9lG5uiWjg5P/5F4Y6U+DdBqGmNqvH3dvQP1AyEeqYnDv
|
||||||
|
YGkXFygWIwKBgQDUV0k1PwhsXDanR8HaHVrEbkkmFrWZ3hPLl880VBZOovcSDbaC
|
||||||
|
GspfP+Ws8QPj6OnzjMRNGlrf5rhYUWoosBhGHlciQHxfY150qlcncSgszVsA+ZGV
|
||||||
|
SzTIkfBhMalrqNaDROlywIzerW1LuVOkBkL3NrXSPUZL0gtNkbysdWE/MQKBgFLB
|
||||||
|
IUHJc+y4t66YVwEa93ty43k2t77rTFbwvV1U//XteAjWaqdKDO59m6mye2PS75si
|
||||||
|
YAxS7fENdXdRg/Ha9T+Kne878e8IMmdf6qdSUGmsl8GEBkQreHmkzHtlQA6ClwKO
|
||||||
|
Q+cvRmkiutjaoqWtdNF9S83E7eu3YVXG+YK4vho5AoGBANt5fp1In+BLcToV+MoK
|
||||||
|
gf6gNfwq6N3as5V4/JsB5Uem53dNE1E37rKNZqpeKHgBfrRi4FcfXNQFtNsk1Hty
|
||||||
|
tLLuNJtt6kTFKuurccCtxvexU7oItR7Jph6U7pWjKV9zcoReX817QZQeVjq2ZYAx
|
||||||
|
bGmSCyK9LMAI/TGYwu9G2DMA
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
488
local-dev/data/auth/debug-requests.jsonl
Normal file
488
local-dev/data/auth/debug-requests.jsonl
Normal file
File diff suppressed because one or more lines are too long
5
local-dev/data/auth/jwt_keys.json
Normal file
5
local-dev/data/auth/jwt_keys.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"privateKey": "MC4CAQAwBQYDK2VwBCIEID/rEs35asZTitPu/73KBIoI4mb3dzH4QoBElz8IX29x",
|
||||||
|
"publicKey": "MCowBQYDK2VwAyEAg1HEi1XUdUZAYc+/9ioijFkkGdulbxT3eVpM+i8Mdr4=",
|
||||||
|
"createdAt": "2026-01-27T23:22:58.667Z"
|
||||||
|
}
|
||||||
19
local-dev/data/auth/ssl/server.crt
Normal file
19
local-dev/data/auth/ssl/server.crt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDCTCCAfGgAwIBAgIUHQdNViKmIqxQLoob3FV9wsVi7EYwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDEyNzIyMDA0MFoXDTI3MDEy
|
||||||
|
NzIyMDA0MFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEAtt+6Fk7s1tunvn1rCB4HislzRl38OCHw8OS6LcJQgqat
|
||||||
|
qJMtfm/UQd2i97URmX6/RAimAEKAPd2njZXhtZ5pyGkURW9K99PhKx1yW7YPVnDs
|
||||||
|
bkyC3TvIFG6kBtUqwdawSHigUMKaOUMlDnHLlrobIoxGt1EplyPXRykLfzWO37Wo
|
||||||
|
3WNp/3tXcSvL7Osq/82f6jJhyTlo6UngUInMXpm3bq/k2ikEsIge7yJUqoLJwdCL
|
||||||
|
lIkm+Q0jI+p0YSiA+b17iLJBpvQHKkhLASKfK78lggZdcZJIc0J7Oqflzy3mG9e2
|
||||||
|
qqeSSCUKEpvvh95ep5kk5AkP0wYlgVO9bh+y9MEA9wIDAQABo1MwUTAdBgNVHQ4E
|
||||||
|
FgQUeK7lS9jHG9wkYTasyg14fNLo3bQwHwYDVR0jBBgwFoAUeK7lS9jHG9wkYTas
|
||||||
|
yg14fNLo3bQwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAk4p1
|
||||||
|
wxBa1j156zE6ZAQAZT9axh+nuHjA6JyKPO82npOrjjMRDgkvvmvEjMQDL+YSwngD
|
||||||
|
RA5sJGwKiU9boaTYQEuM2uaqlNzBENv3GpWzkbfzKbqcgOOA/WFmXbogDjkknlee
|
||||||
|
/jgirTl1hM8Kih0avDjKLwRvSSAUZB2Z0tjpK1ZdLp7L8jIGzYdke0Qt4wDyucxS
|
||||||
|
C1BIPe8r12cSnNeP9krbdj7+P3YEWi9UgZWKAY8HbSjZSzXZvVlxcUO4ViSvF+lh
|
||||||
|
kGfAg22af46U0TKtZB2X++xO7aNrcRbqKNSEpibG510BN9ym4P/D1+QhFcz5guco
|
||||||
|
tvenNmwdgwY9viSnIw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
local-dev/data/auth/ssl/server.key
Normal file
28
local-dev/data/auth/ssl/server.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC237oWTuzW26e+
|
||||||
|
fWsIHgeKyXNGXfw4IfDw5LotwlCCpq2oky1+b9RB3aL3tRGZfr9ECKYAQoA93aeN
|
||||||
|
leG1nmnIaRRFb0r30+ErHXJbtg9WcOxuTILdO8gUbqQG1SrB1rBIeKBQwpo5QyUO
|
||||||
|
ccuWuhsijEa3USmXI9dHKQt/NY7ftajdY2n/e1dxK8vs6yr/zZ/qMmHJOWjpSeBQ
|
||||||
|
icxembdur+TaKQSwiB7vIlSqgsnB0IuUiSb5DSMj6nRhKID5vXuIskGm9AcqSEsB
|
||||||
|
Ip8rvyWCBl1xkkhzQns6p+XPLeYb17aqp5JIJQoSm++H3l6nmSTkCQ/TBiWBU71u
|
||||||
|
H7L0wQD3AgMBAAECggEANC/zjHM4jnY/0BI9jaL4NwiXP4EJvcEd37j+Upmt3SMQ
|
||||||
|
0tcxd/AU7DkCTVtcaufrUFCBgvh3XXBYZQTdVTWgbYNjOA9zHvdVvjaYkIiLpvjx
|
||||||
|
1+Y4wEbTqdULNTH3EjsgsoXOBk4KsgWx2QXrehehL8JFWgIs8sdVI6cYc1SG8dsK
|
||||||
|
ekWB14zwaA4bBMejpGtDV0q2/bgECq6R9vU9pMD46LXkjHli+xSnYdwrimMlckg/
|
||||||
|
VX94Tedi23mdEmxZBZ+m3fhzrSqs8C0JmTezGEO7awDl3NnAhK/t1cSfLz0o1YJv
|
||||||
|
1SOC/JSLET4rMDMHxRlUfhM5CI9NeSXS3n4HWKcBRQKBgQD3drS+sZ/pqUxjUbv+
|
||||||
|
LPUCLHar6ax0ge9bw3nS6LPRyp1uqmYiVRfruEWWZnCGIU+ST3zokZrroQA5jGPG
|
||||||
|
DB5PLsopqoE217G2514WEW8hZzW3395VtZqphA+o9SCmIA1logEYdN+ZDG6KQtiS
|
||||||
|
Ml1BdRTuyrUAC4QG4PNkb8xmSwKBgQC9LqTP7rU7p8RttN/f6q9kJCjsVrfj8rIs
|
||||||
|
fSPzYhVDHSNwJufwMjqLJxmNtrg0yIZfPfXKki8yX5ms28xh7d2je61rBBajI/lY
|
||||||
|
8cYsgP7bebruvClb4Rgyi9//bACWaEca/hQUte/8OG37wCSvotWMe0wZst1vLXrY
|
||||||
|
4i1Qo3YUhQKBgCIy3H2yDHh9NhpPtFxHGEEJpgjSDUw4nLygwhg8ooUurB0cHWtH
|
||||||
|
OTwRRkSnuYs/1UBSDeASJ0fDA0XwueUnzZSB0dx6PMs4ec3eIamJFUOXgNv9azuL
|
||||||
|
Emm033kpDy8GJPPTtLUNic0b47bl0Ao8PZkLNi5eAy+TZ9aPhfNuY+ALAoGBAILT
|
||||||
|
Y8QrlocHkK4xO/R0LhA5dVdi7M4lApQDgj4IIR4FY4FmVlTj11ptkp1Os3pFBa+N
|
||||||
|
gJEyoJLcS8CfS2qZfQFWQOnVrPXqpb+diucx2YzbVKtN0ego9HvYAPJ4tLtOp4WC
|
||||||
|
GU7tNmWcfGpxSK1xFO6OQWUwLTN6Jw8e8ilmsPylAoGBAK89GUz02qJrdbN8TMsI
|
||||||
|
vXBVpJX27wjFFwLHcsQ09CJ1Fppa8tZrqO/BtYTPhOncsmiOSjuFCnh6d3meEUHQ
|
||||||
|
BSYSjQWtJ+pilEMp2EiO55s4k/iFhKUeRsCjrTSGor21HqgRNaxsEfoieNWWWFv+
|
||||||
|
rcDAyW1WdJaydbVfXisAtzOL
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
BIN
local-dev/data/kvrocks/db/000014.sst
Normal file
BIN
local-dev/data/kvrocks/db/000014.sst
Normal file
Binary file not shown.
BIN
local-dev/data/kvrocks/db/000023.sst
Normal file
BIN
local-dev/data/kvrocks/db/000023.sst
Normal file
Binary file not shown.
BIN
local-dev/data/kvrocks/db/000032.sst
Normal file
BIN
local-dev/data/kvrocks/db/000032.sst
Normal file
Binary file not shown.
BIN
local-dev/data/kvrocks/db/000033.sst
Normal file
BIN
local-dev/data/kvrocks/db/000033.sst
Normal file
Binary file not shown.
BIN
local-dev/data/kvrocks/db/000034.log
Normal file
BIN
local-dev/data/kvrocks/db/000034.log
Normal file
Binary file not shown.
1
local-dev/data/kvrocks/db/CURRENT
Normal file
1
local-dev/data/kvrocks/db/CURRENT
Normal file
@@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000035
|
||||||
1
local-dev/data/kvrocks/db/IDENTITY
Normal file
1
local-dev/data/kvrocks/db/IDENTITY
Normal file
@@ -0,0 +1 @@
|
|||||||
|
7a0fd32b-70d3-447e-90d3-74fc57ad6651
|
||||||
0
local-dev/data/kvrocks/db/LOCK
Normal file
0
local-dev/data/kvrocks/db/LOCK
Normal file
2434
local-dev/data/kvrocks/db/LOG
Normal file
2434
local-dev/data/kvrocks/db/LOG
Normal file
File diff suppressed because it is too large
Load Diff
1440
local-dev/data/kvrocks/db/LOG.old.1769550932829617
Normal file
1440
local-dev/data/kvrocks/db/LOG.old.1769550932829617
Normal file
File diff suppressed because it is too large
Load Diff
1448
local-dev/data/kvrocks/db/LOG.old.1769551238558585
Normal file
1448
local-dev/data/kvrocks/db/LOG.old.1769551238558585
Normal file
File diff suppressed because it is too large
Load Diff
391
local-dev/data/kvrocks/db/LOG.old.1769551238561527
Normal file
391
local-dev/data/kvrocks/db/LOG.old.1769551238561527
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
2026/01/27-22:00:38.559438 1 RocksDB version: 10.6.2
|
||||||
|
2026/01/27-22:00:38.559502 1 Git sha 0
|
||||||
|
2026/01/27-22:00:38.559503 1 Compile date 2025-11-08 14:59:16
|
||||||
|
2026/01/27-22:00:38.559504 1 DB SUMMARY
|
||||||
|
2026/01/27-22:00:38.559511 1 Host name (Env): 50e4104391a6
|
||||||
|
2026/01/27-22:00:38.559513 1 DB Session ID: Y90KK2H3WYG203E6436J
|
||||||
|
2026/01/27-22:00:38.559609 1 CURRENT file: CURRENT
|
||||||
|
2026/01/27-22:00:38.559610 1 IDENTITY file: IDENTITY
|
||||||
|
2026/01/27-22:00:38.559618 1 MANIFEST file: MANIFEST-000011 size: 751 Bytes
|
||||||
|
2026/01/27-22:00:38.559619 1 SST files in /data/db dir, Total Num: 0, files:
|
||||||
|
2026/01/27-22:00:38.559620 1 Write Ahead Log file in /data/db: 000010.log size: 1329 ;
|
||||||
|
2026/01/27-22:00:38.559621 1 Options.error_if_exists: 0
|
||||||
|
2026/01/27-22:00:38.559621 1 Options.create_if_missing: 1
|
||||||
|
2026/01/27-22:00:38.559622 1 Options.paranoid_checks: 1
|
||||||
|
2026/01/27-22:00:38.559623 1 Options.flush_verify_memtable_count: 1
|
||||||
|
2026/01/27-22:00:38.559623 1 Options.compaction_verify_record_count: 1
|
||||||
|
2026/01/27-22:00:38.559624 1 Options.track_and_verify_wals_in_manifest: 0
|
||||||
|
2026/01/27-22:00:38.559624 1 Options.track_and_verify_wals: 0
|
||||||
|
2026/01/27-22:00:38.559625 1 Options.verify_sst_unique_id_in_manifest: 1
|
||||||
|
2026/01/27-22:00:38.559625 1 Options.env: 0xffffa561d0c0
|
||||||
|
2026/01/27-22:00:38.559626 1 Options.fs: PosixFileSystem
|
||||||
|
2026/01/27-22:00:38.559627 1 Options.info_log: 0xffffa570f600
|
||||||
|
2026/01/27-22:00:38.559627 1 Options.max_file_opening_threads: 16
|
||||||
|
2026/01/27-22:00:38.559628 1 Options.statistics: 0xffffa56135b0
|
||||||
|
2026/01/27-22:00:38.559628 1 Options.statistics stats level: 3
|
||||||
|
2026/01/27-22:00:38.559629 1 Options.use_fsync: 0
|
||||||
|
2026/01/27-22:00:38.559629 1 Options.max_log_file_size: 268435456
|
||||||
|
2026/01/27-22:00:38.559630 1 Options.max_manifest_file_size: 67108864
|
||||||
|
2026/01/27-22:00:38.559630 1 Options.log_file_time_to_roll: 0
|
||||||
|
2026/01/27-22:00:38.559631 1 Options.keep_log_file_num: 12
|
||||||
|
2026/01/27-22:00:38.559631 1 Options.recycle_log_file_num: 0
|
||||||
|
2026/01/27-22:00:38.559632 1 Options.allow_fallocate: 1
|
||||||
|
2026/01/27-22:00:38.559632 1 Options.allow_mmap_reads: 0
|
||||||
|
2026/01/27-22:00:38.559633 1 Options.allow_mmap_writes: 0
|
||||||
|
2026/01/27-22:00:38.559633 1 Options.use_direct_reads: 0
|
||||||
|
2026/01/27-22:00:38.559634 1 Options.use_direct_io_for_flush_and_compaction: 0
|
||||||
|
2026/01/27-22:00:38.559634 1 Options.create_missing_column_families: 1
|
||||||
|
2026/01/27-22:00:38.559634 1 Options.db_log_dir:
|
||||||
|
2026/01/27-22:00:38.559635 1 Options.wal_dir:
|
||||||
|
2026/01/27-22:00:38.559636 1 Options.table_cache_numshardbits: 6
|
||||||
|
2026/01/27-22:00:38.559636 1 Options.WAL_ttl_seconds: 10800
|
||||||
|
2026/01/27-22:00:38.559637 1 Options.WAL_size_limit_MB: 16384
|
||||||
|
2026/01/27-22:00:38.559637 1 Options.max_write_batch_group_size_bytes: 1048576
|
||||||
|
2026/01/27-22:00:38.559638 1 Options.manifest_preallocation_size: 4194304
|
||||||
|
2026/01/27-22:00:38.559638 1 Options.is_fd_close_on_exec: 1
|
||||||
|
2026/01/27-22:00:38.559639 1 Options.advise_random_on_open: 1
|
||||||
|
2026/01/27-22:00:38.559639 1 Options.db_write_buffer_size: 0
|
||||||
|
2026/01/27-22:00:38.559640 1 Options.write_buffer_manager: 0xffffa566bfc0
|
||||||
|
2026/01/27-22:00:38.559640 1 Options.use_adaptive_mutex: 0
|
||||||
|
2026/01/27-22:00:38.559640 1 Options.rate_limiter: 0xffffa5636000
|
||||||
|
2026/01/27-22:00:38.559641 1 Options.sst_file_manager.rate_bytes_per_sec: 0
|
||||||
|
2026/01/27-22:00:38.559642 1 Options.wal_recovery_mode: 2
|
||||||
|
2026/01/27-22:00:38.559642 1 Options.enable_thread_tracking: 0
|
||||||
|
2026/01/27-22:00:38.559643 1 Options.enable_pipelined_write: 0
|
||||||
|
2026/01/27-22:00:38.559643 1 Options.unordered_write: 0
|
||||||
|
2026/01/27-22:00:38.559644 1 Options.allow_concurrent_memtable_write: 1
|
||||||
|
2026/01/27-22:00:38.559644 1 Options.enable_write_thread_adaptive_yield: 1
|
||||||
|
2026/01/27-22:00:38.559645 1 Options.write_thread_max_yield_usec: 100
|
||||||
|
2026/01/27-22:00:38.559645 1 Options.write_thread_slow_yield_usec: 3
|
||||||
|
2026/01/27-22:00:38.559646 1 Options.row_cache: None
|
||||||
|
2026/01/27-22:00:38.559646 1 Options.wal_filter: None
|
||||||
|
2026/01/27-22:00:38.559647 1 Options.avoid_flush_during_recovery: 0
|
||||||
|
2026/01/27-22:00:38.559647 1 Options.allow_ingest_behind: 0
|
||||||
|
2026/01/27-22:00:38.559648 1 Options.two_write_queues: 0
|
||||||
|
2026/01/27-22:00:38.559648 1 Options.manual_wal_flush: 0
|
||||||
|
2026/01/27-22:00:38.559648 1 Options.wal_compression: 0
|
||||||
|
2026/01/27-22:00:38.559649 1 Options.background_close_inactive_wals: 0
|
||||||
|
2026/01/27-22:00:38.559649 1 Options.atomic_flush: 0
|
||||||
|
2026/01/27-22:00:38.559650 1 Options.avoid_unnecessary_blocking_io: 1
|
||||||
|
2026/01/27-22:00:38.559650 1 Options.prefix_seek_opt_in_only: 0
|
||||||
|
2026/01/27-22:00:38.559651 1 Options.persist_stats_to_disk: 0
|
||||||
|
2026/01/27-22:00:38.559651 1 Options.write_dbid_to_manifest: 1
|
||||||
|
2026/01/27-22:00:38.559652 1 Options.write_identity_file: 1
|
||||||
|
2026/01/27-22:00:38.559652 1 Options.log_readahead_size: 0
|
||||||
|
2026/01/27-22:00:38.559653 1 Options.file_checksum_gen_factory: Unknown
|
||||||
|
2026/01/27-22:00:38.559653 1 Options.best_efforts_recovery: 0
|
||||||
|
2026/01/27-22:00:38.559654 1 Options.max_bgerror_resume_count: 2147483647
|
||||||
|
2026/01/27-22:00:38.559654 1 Options.bgerror_resume_retry_interval: 1000000
|
||||||
|
2026/01/27-22:00:38.559655 1 Options.allow_data_in_errors: 0
|
||||||
|
2026/01/27-22:00:38.559655 1 Options.db_host_id: __hostname__
|
||||||
|
2026/01/27-22:00:38.559656 1 Options.enforce_single_del_contracts: true
|
||||||
|
2026/01/27-22:00:38.559657 1 Options.metadata_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:00:38.559657 1 Options.wal_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:00:38.559658 1 Options.max_background_jobs: 4
|
||||||
|
2026/01/27-22:00:38.559658 1 Options.max_background_compactions: -1
|
||||||
|
2026/01/27-22:00:38.559659 1 Options.max_subcompactions: 2
|
||||||
|
2026/01/27-22:00:38.559659 1 Options.avoid_flush_during_shutdown: 0
|
||||||
|
2026/01/27-22:00:38.559660 1 Options.writable_file_max_buffer_size: 1048576
|
||||||
|
2026/01/27-22:00:38.559661 1 Options.delayed_write_rate : 536870912000
|
||||||
|
2026/01/27-22:00:38.559661 1 Options.max_total_wal_size: 536870912
|
||||||
|
2026/01/27-22:00:38.559662 1 Options.delete_obsolete_files_period_micros: 21600000000
|
||||||
|
2026/01/27-22:00:38.559663 1 Options.stats_dump_period_sec: 0
|
||||||
|
2026/01/27-22:00:38.559663 1 Options.stats_persist_period_sec: 600
|
||||||
|
2026/01/27-22:00:38.559664 1 Options.stats_history_buffer_size: 1048576
|
||||||
|
2026/01/27-22:00:38.559664 1 Options.max_open_files: 8096
|
||||||
|
2026/01/27-22:00:38.559665 1 Options.bytes_per_sync: 1048576
|
||||||
|
2026/01/27-22:00:38.559665 1 Options.wal_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:00:38.559666 1 Options.strict_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:00:38.559666 1 Options.compaction_readahead_size: 2097152
|
||||||
|
2026/01/27-22:00:38.559667 1 Options.max_background_flushes: -1
|
||||||
|
2026/01/27-22:00:38.559667 1 Options.daily_offpeak_time_utc:
|
||||||
|
2026/01/27-22:00:38.559668 1 Compression algorithms supported:
|
||||||
|
2026/01/27-22:00:38.559669 1 kCustomCompressionFE supported: 0
|
||||||
|
2026/01/27-22:00:38.559669 1 kCustomCompressionFC supported: 0
|
||||||
|
2026/01/27-22:00:38.559670 1 kCustomCompressionF8 supported: 0
|
||||||
|
2026/01/27-22:00:38.559670 1 kCustomCompressionF7 supported: 0
|
||||||
|
2026/01/27-22:00:38.559671 1 kCustomCompressionB2 supported: 0
|
||||||
|
2026/01/27-22:00:38.559671 1 kLZ4Compression supported: 1
|
||||||
|
2026/01/27-22:00:38.559672 1 kCustomCompression88 supported: 0
|
||||||
|
2026/01/27-22:00:38.559673 1 kCustomCompressionD8 supported: 0
|
||||||
|
2026/01/27-22:00:38.559673 1 kCustomCompression9F supported: 0
|
||||||
|
2026/01/27-22:00:38.559674 1 kCustomCompressionD6 supported: 0
|
||||||
|
2026/01/27-22:00:38.559674 1 kCustomCompressionA9 supported: 0
|
||||||
|
2026/01/27-22:00:38.559675 1 kCustomCompressionEC supported: 0
|
||||||
|
2026/01/27-22:00:38.559675 1 kCustomCompressionA3 supported: 0
|
||||||
|
2026/01/27-22:00:38.559676 1 kCustomCompressionCB supported: 0
|
||||||
|
2026/01/27-22:00:38.559676 1 kCustomCompression90 supported: 0
|
||||||
|
2026/01/27-22:00:38.559677 1 kCustomCompressionA0 supported: 0
|
||||||
|
2026/01/27-22:00:38.559677 1 kCustomCompressionC6 supported: 0
|
||||||
|
2026/01/27-22:00:38.559678 1 kCustomCompression9D supported: 0
|
||||||
|
2026/01/27-22:00:38.559678 1 kCustomCompression8B supported: 0
|
||||||
|
2026/01/27-22:00:38.559679 1 kCustomCompressionA8 supported: 0
|
||||||
|
2026/01/27-22:00:38.559679 1 kCustomCompression8D supported: 0
|
||||||
|
2026/01/27-22:00:38.559680 1 kCustomCompression97 supported: 0
|
||||||
|
2026/01/27-22:00:38.559680 1 kCustomCompression98 supported: 0
|
||||||
|
2026/01/27-22:00:38.559681 1 kCustomCompressionAC supported: 0
|
||||||
|
2026/01/27-22:00:38.559681 1 kCustomCompressionE9 supported: 0
|
||||||
|
2026/01/27-22:00:38.559682 1 kCustomCompression96 supported: 0
|
||||||
|
2026/01/27-22:00:38.559682 1 kCustomCompressionB1 supported: 0
|
||||||
|
2026/01/27-22:00:38.559683 1 kCustomCompression95 supported: 0
|
||||||
|
2026/01/27-22:00:38.559683 1 kCustomCompression84 supported: 0
|
||||||
|
2026/01/27-22:00:38.559684 1 kCustomCompression91 supported: 0
|
||||||
|
2026/01/27-22:00:38.559686 1 kCustomCompressionAB supported: 0
|
||||||
|
2026/01/27-22:00:38.559687 1 kCustomCompressionB3 supported: 0
|
||||||
|
2026/01/27-22:00:38.559687 1 kCustomCompression81 supported: 0
|
||||||
|
2026/01/27-22:00:38.559688 1 kCustomCompressionDC supported: 0
|
||||||
|
2026/01/27-22:00:38.559689 1 kBZip2Compression supported: 0
|
||||||
|
2026/01/27-22:00:38.559689 1 kCustomCompressionBB supported: 0
|
||||||
|
2026/01/27-22:00:38.559690 1 kCustomCompression9C supported: 0
|
||||||
|
2026/01/27-22:00:38.559690 1 kCustomCompressionC9 supported: 0
|
||||||
|
2026/01/27-22:00:38.559691 1 kCustomCompressionCC supported: 0
|
||||||
|
2026/01/27-22:00:38.559691 1 kCustomCompression92 supported: 0
|
||||||
|
2026/01/27-22:00:38.559692 1 kCustomCompressionB9 supported: 0
|
||||||
|
2026/01/27-22:00:38.559694 1 kCustomCompression8F supported: 0
|
||||||
|
2026/01/27-22:00:38.559695 1 kCustomCompression8A supported: 0
|
||||||
|
2026/01/27-22:00:38.559695 1 kCustomCompression9B supported: 0
|
||||||
|
2026/01/27-22:00:38.559696 1 kZSTD supported: 1
|
||||||
|
2026/01/27-22:00:38.559696 1 kCustomCompressionAA supported: 0
|
||||||
|
2026/01/27-22:00:38.559697 1 kCustomCompressionA2 supported: 0
|
||||||
|
2026/01/27-22:00:38.559697 1 kZlibCompression supported: 1
|
||||||
|
2026/01/27-22:00:38.559698 1 kXpressCompression supported: 0
|
||||||
|
2026/01/27-22:00:38.559699 1 kCustomCompressionFD supported: 0
|
||||||
|
2026/01/27-22:00:38.559699 1 kCustomCompressionE2 supported: 0
|
||||||
|
2026/01/27-22:00:38.559700 1 kLZ4HCCompression supported: 1
|
||||||
|
2026/01/27-22:00:38.559700 1 kCustomCompressionA6 supported: 0
|
||||||
|
2026/01/27-22:00:38.559701 1 kCustomCompression85 supported: 0
|
||||||
|
2026/01/27-22:00:38.559701 1 kCustomCompressionA4 supported: 0
|
||||||
|
2026/01/27-22:00:38.559702 1 kCustomCompression86 supported: 0
|
||||||
|
2026/01/27-22:00:38.559702 1 kCustomCompression83 supported: 0
|
||||||
|
2026/01/27-22:00:38.559703 1 kCustomCompression87 supported: 0
|
||||||
|
2026/01/27-22:00:38.559703 1 kCustomCompression89 supported: 0
|
||||||
|
2026/01/27-22:00:38.559704 1 kCustomCompression8C supported: 0
|
||||||
|
2026/01/27-22:00:38.559704 1 kCustomCompressionDB supported: 0
|
||||||
|
2026/01/27-22:00:38.559705 1 kCustomCompressionF3 supported: 0
|
||||||
|
2026/01/27-22:00:38.559705 1 kCustomCompressionE6 supported: 0
|
||||||
|
2026/01/27-22:00:38.559705 1 kCustomCompression8E supported: 0
|
||||||
|
2026/01/27-22:00:38.559706 1 kCustomCompressionDA supported: 0
|
||||||
|
2026/01/27-22:00:38.559706 1 kCustomCompression93 supported: 0
|
||||||
|
2026/01/27-22:00:38.559707 1 kCustomCompression94 supported: 0
|
||||||
|
2026/01/27-22:00:38.559709 1 kCustomCompression9E supported: 0
|
||||||
|
2026/01/27-22:00:38.559710 1 kCustomCompressionB4 supported: 0
|
||||||
|
2026/01/27-22:00:38.559710 1 kCustomCompressionFB supported: 0
|
||||||
|
2026/01/27-22:00:38.559711 1 kCustomCompressionB5 supported: 0
|
||||||
|
2026/01/27-22:00:38.559711 1 kCustomCompressionD5 supported: 0
|
||||||
|
2026/01/27-22:00:38.559712 1 kCustomCompressionB8 supported: 0
|
||||||
|
2026/01/27-22:00:38.559712 1 kCustomCompressionD1 supported: 0
|
||||||
|
2026/01/27-22:00:38.559713 1 kCustomCompressionBA supported: 0
|
||||||
|
2026/01/27-22:00:38.559713 1 kCustomCompressionBC supported: 0
|
||||||
|
2026/01/27-22:00:38.559714 1 kCustomCompressionCE supported: 0
|
||||||
|
2026/01/27-22:00:38.559714 1 kCustomCompressionBD supported: 0
|
||||||
|
2026/01/27-22:00:38.559715 1 kCustomCompressionC4 supported: 0
|
||||||
|
2026/01/27-22:00:38.559715 1 kCustomCompression9A supported: 0
|
||||||
|
2026/01/27-22:00:38.559716 1 kCustomCompression99 supported: 0
|
||||||
|
2026/01/27-22:00:38.559716 1 kCustomCompressionBE supported: 0
|
||||||
|
2026/01/27-22:00:38.559717 1 kCustomCompressionE5 supported: 0
|
||||||
|
2026/01/27-22:00:38.559717 1 kCustomCompressionD9 supported: 0
|
||||||
|
2026/01/27-22:00:38.559718 1 kCustomCompressionC1 supported: 0
|
||||||
|
2026/01/27-22:00:38.559718 1 kCustomCompressionC5 supported: 0
|
||||||
|
2026/01/27-22:00:38.559719 1 kCustomCompressionC2 supported: 0
|
||||||
|
2026/01/27-22:00:38.559719 1 kCustomCompressionA5 supported: 0
|
||||||
|
2026/01/27-22:00:38.559720 1 kCustomCompressionC7 supported: 0
|
||||||
|
2026/01/27-22:00:38.559720 1 kCustomCompressionBF supported: 0
|
||||||
|
2026/01/27-22:00:38.559721 1 kCustomCompressionE8 supported: 0
|
||||||
|
2026/01/27-22:00:38.559721 1 kCustomCompressionC8 supported: 0
|
||||||
|
2026/01/27-22:00:38.559722 1 kCustomCompressionAF supported: 0
|
||||||
|
2026/01/27-22:00:38.559722 1 kCustomCompressionCA supported: 0
|
||||||
|
2026/01/27-22:00:38.559723 1 kCustomCompressionCD supported: 0
|
||||||
|
2026/01/27-22:00:38.559723 1 kCustomCompressionC0 supported: 0
|
||||||
|
2026/01/27-22:00:38.559724 1 kCustomCompressionCF supported: 0
|
||||||
|
2026/01/27-22:00:38.559724 1 kCustomCompressionF9 supported: 0
|
||||||
|
2026/01/27-22:00:38.559724 1 kCustomCompressionD0 supported: 0
|
||||||
|
2026/01/27-22:00:38.559725 1 kCustomCompressionD2 supported: 0
|
||||||
|
2026/01/27-22:00:38.559726 1 kCustomCompressionAD supported: 0
|
||||||
|
2026/01/27-22:00:38.559726 1 kCustomCompressionD3 supported: 0
|
||||||
|
2026/01/27-22:00:38.559727 1 kCustomCompressionD4 supported: 0
|
||||||
|
2026/01/27-22:00:38.559727 1 kCustomCompressionD7 supported: 0
|
||||||
|
2026/01/27-22:00:38.559728 1 kCustomCompression82 supported: 0
|
||||||
|
2026/01/27-22:00:38.559728 1 kCustomCompressionDD supported: 0
|
||||||
|
2026/01/27-22:00:38.559729 1 kCustomCompressionC3 supported: 0
|
||||||
|
2026/01/27-22:00:38.559729 1 kCustomCompressionEE supported: 0
|
||||||
|
2026/01/27-22:00:38.559730 1 kCustomCompressionDE supported: 0
|
||||||
|
2026/01/27-22:00:38.559730 1 kCustomCompressionDF supported: 0
|
||||||
|
2026/01/27-22:00:38.559731 1 kCustomCompressionA7 supported: 0
|
||||||
|
2026/01/27-22:00:38.559731 1 kCustomCompressionE0 supported: 0
|
||||||
|
2026/01/27-22:00:38.559732 1 kCustomCompressionF1 supported: 0
|
||||||
|
2026/01/27-22:00:38.559732 1 kCustomCompressionE1 supported: 0
|
||||||
|
2026/01/27-22:00:38.559733 1 kCustomCompressionF5 supported: 0
|
||||||
|
2026/01/27-22:00:38.559733 1 kCustomCompression80 supported: 0
|
||||||
|
2026/01/27-22:00:38.559734 1 kCustomCompressionE3 supported: 0
|
||||||
|
2026/01/27-22:00:38.559734 1 kCustomCompressionE4 supported: 0
|
||||||
|
2026/01/27-22:00:38.559735 1 kCustomCompressionB0 supported: 0
|
||||||
|
2026/01/27-22:00:38.559735 1 kCustomCompressionEA supported: 0
|
||||||
|
2026/01/27-22:00:38.559736 1 kCustomCompressionFA supported: 0
|
||||||
|
2026/01/27-22:00:38.559736 1 kCustomCompressionE7 supported: 0
|
||||||
|
2026/01/27-22:00:38.559737 1 kCustomCompressionAE supported: 0
|
||||||
|
2026/01/27-22:00:38.559737 1 kCustomCompressionEB supported: 0
|
||||||
|
2026/01/27-22:00:38.559738 1 kCustomCompressionED supported: 0
|
||||||
|
2026/01/27-22:00:38.559738 1 kCustomCompressionB6 supported: 0
|
||||||
|
2026/01/27-22:00:38.559739 1 kCustomCompressionEF supported: 0
|
||||||
|
2026/01/27-22:00:38.559739 1 kCustomCompressionF0 supported: 0
|
||||||
|
2026/01/27-22:00:38.559740 1 kCustomCompressionB7 supported: 0
|
||||||
|
2026/01/27-22:00:38.559740 1 kCustomCompressionF2 supported: 0
|
||||||
|
2026/01/27-22:00:38.559741 1 kCustomCompressionA1 supported: 0
|
||||||
|
2026/01/27-22:00:38.559741 1 kCustomCompressionF4 supported: 0
|
||||||
|
2026/01/27-22:00:38.559742 1 kSnappyCompression supported: 1
|
||||||
|
2026/01/27-22:00:38.559742 1 kCustomCompressionF6 supported: 0
|
||||||
|
2026/01/27-22:00:38.559743 1 Fast CRC32 supported: Supported on Arm64
|
||||||
|
2026/01/27-22:00:38.559744 1 DMutex implementation: pthread_mutex_t
|
||||||
|
2026/01/27-22:00:38.559744 1 Jemalloc supported: 1
|
||||||
|
2026/01/27-22:00:38.560596 1 [db/version_set.cc:6190] Recovering from manifest file: /data/db/MANIFEST-000011
|
||||||
|
2026/01/27-22:00:38.560798 1 [db/column_family.cc:693] --------------- Options for column family [default]:
|
||||||
|
2026/01/27-22:00:38.560800 1 Options.comparator: leveldb.BytewiseComparator
|
||||||
|
2026/01/27-22:00:38.560801 1 Options.merge_operator: None
|
||||||
|
2026/01/27-22:00:38.560802 1 Options.compaction_filter: None
|
||||||
|
2026/01/27-22:00:38.560802 1 Options.compaction_filter_factory: None
|
||||||
|
2026/01/27-22:00:38.560803 1 Options.sst_partitioner_factory: None
|
||||||
|
2026/01/27-22:00:38.560803 1 Options.memtable_factory: SkipListFactory
|
||||||
|
2026/01/27-22:00:38.560804 1 Options.table_factory: BlockBasedTable
|
||||||
|
2026/01/27-22:00:38.560817 1 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0xffffa56d15a0)
|
||||||
|
cache_index_and_filter_blocks: 0
|
||||||
|
cache_index_and_filter_blocks_with_high_priority: 1
|
||||||
|
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||||
|
pin_top_level_index_and_filter: 1
|
||||||
|
index_type: 0
|
||||||
|
data_block_index_type: 0
|
||||||
|
index_shortening: 1
|
||||||
|
data_block_hash_table_util_ratio: 0.750000
|
||||||
|
checksum: 4
|
||||||
|
no_block_cache: 0
|
||||||
|
block_cache: 0xffffa566bd90
|
||||||
|
block_cache_name: LRUCache
|
||||||
|
block_cache_options:
|
||||||
|
capacity : 33554432
|
||||||
|
num_shard_bits : 6
|
||||||
|
strict_capacity_limit : 0
|
||||||
|
memory_allocator : None
|
||||||
|
high_pri_pool_ratio: 0.500
|
||||||
|
low_pri_pool_ratio: 0.000
|
||||||
|
persistent_cache: (nil)
|
||||||
|
block_size: 4096
|
||||||
|
block_size_deviation: 10
|
||||||
|
block_restart_interval: 16
|
||||||
|
index_block_restart_interval: 1
|
||||||
|
metadata_block_size: 4096
|
||||||
|
partition_filters: 0
|
||||||
|
use_delta_encoding: 1
|
||||||
|
filter_policy: nullptr
|
||||||
|
user_defined_index_factory: nullptr
|
||||||
|
fail_if_no_udi_on_open: 0
|
||||||
|
whole_key_filtering: 1
|
||||||
|
verify_compression: 0
|
||||||
|
read_amp_bytes_per_bit: 0
|
||||||
|
format_version: 6
|
||||||
|
enable_index_compression: 1
|
||||||
|
block_align: 0
|
||||||
|
max_auto_readahead_size: 262144
|
||||||
|
prepopulate_block_cache: 0
|
||||||
|
initial_auto_readahead_size: 8192
|
||||||
|
num_file_reads_for_auto_readahead: 2
|
||||||
|
2026/01/27-22:00:38.560818 1 Options.write_buffer_size: 67108864
|
||||||
|
2026/01/27-22:00:38.560819 1 Options.max_write_buffer_number: 4
|
||||||
|
2026/01/27-22:00:38.560820 1 Options.compression[0]: NoCompression
|
||||||
|
2026/01/27-22:00:38.560820 1 Options.compression[1]: NoCompression
|
||||||
|
2026/01/27-22:00:38.560821 1 Options.compression[2]: Snappy
|
||||||
|
2026/01/27-22:00:38.560822 1 Options.compression[3]: Snappy
|
||||||
|
2026/01/27-22:00:38.560822 1 Options.compression[4]: Snappy
|
||||||
|
2026/01/27-22:00:38.560823 1 Options.compression[5]: Snappy
|
||||||
|
2026/01/27-22:00:38.560823 1 Options.compression[6]: Snappy
|
||||||
|
2026/01/27-22:00:38.560824 1 Options.bottommost_compression: Disabled
|
||||||
|
2026/01/27-22:00:38.560824 1 Options.prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:00:38.560825 1 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:00:38.560825 1 Options.num_levels: 7
|
||||||
|
2026/01/27-22:00:38.560826 1 Options.min_write_buffer_number_to_merge: 1
|
||||||
|
2026/01/27-22:00:38.560826 1 Options.max_write_buffer_size_to_maintain: 0
|
||||||
|
2026/01/27-22:00:38.560827 1 Options.bottommost_compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:00:38.560827 1 Options.bottommost_compression_opts.level: 32767
|
||||||
|
2026/01/27-22:00:38.560828 1 Options.bottommost_compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:00:38.560828 1 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:00:38.560829 1 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:00:38.560829 1 Options.bottommost_compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:00:38.560830 1 Options.bottommost_compression_opts.enabled: false
|
||||||
|
2026/01/27-22:00:38.560830 1 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:00:38.560831 1 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:00:38.560831 1 Options.compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:00:38.560832 1 Options.compression_opts.level: 32767
|
||||||
|
2026/01/27-22:00:38.560832 1 Options.compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:00:38.560833 1 Options.compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:00:38.560833 1 Options.compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:00:38.560834 1 Options.compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:00:38.560834 1 Options.compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:00:38.560835 1 Options.compression_opts.enabled: false
|
||||||
|
2026/01/27-22:00:38.560835 1 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:00:38.560836 1 Options.level0_file_num_compaction_trigger: 4
|
||||||
|
2026/01/27-22:00:38.560836 1 Options.level0_slowdown_writes_trigger: 20
|
||||||
|
2026/01/27-22:00:38.560837 1 Options.level0_stop_writes_trigger: 40
|
||||||
|
2026/01/27-22:00:38.560837 1 Options.target_file_size_base: 134217728
|
||||||
|
2026/01/27-22:00:38.560838 1 Options.target_file_size_multiplier: 1
|
||||||
|
2026/01/27-22:00:38.560838 1 Options.max_bytes_for_level_base: 268435456
|
||||||
|
2026/01/27-22:00:38.560838 1 Options.level_compaction_dynamic_level_bytes: 1
|
||||||
|
2026/01/27-22:00:38.560840 1 Options.max_bytes_for_level_multiplier: 10.000000
|
||||||
|
2026/01/27-22:00:38.560840 1 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||||
|
2026/01/27-22:00:38.560841 1 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||||
|
2026/01/27-22:00:38.560841 1 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||||
|
2026/01/27-22:00:38.560842 1 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||||
|
2026/01/27-22:00:38.560842 1 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||||
|
2026/01/27-22:00:38.560843 1 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||||
|
2026/01/27-22:00:38.560843 1 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||||
|
2026/01/27-22:00:38.560844 1 Options.max_sequential_skip_in_iterations: 8
|
||||||
|
2026/01/27-22:00:38.560844 1 Options.memtable_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:00:38.560844 1 Options.memtable_avg_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:00:38.560845 1 Options.max_compaction_bytes: 3355443200
|
||||||
|
2026/01/27-22:00:38.560845 1 Options.arena_block_size: 1048576
|
||||||
|
2026/01/27-22:00:38.560846 1 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||||
|
2026/01/27-22:00:38.560846 1 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||||
|
2026/01/27-22:00:38.560847 1 Options.disable_auto_compactions: 0
|
||||||
|
2026/01/27-22:00:38.560848 1 Options.compaction_style: kCompactionStyleLevel
|
||||||
|
2026/01/27-22:00:38.560849 1 Options.compaction_pri: kMinOverlappingRatio
|
||||||
|
2026/01/27-22:00:38.560849 1 Options.compaction_options_universal.size_ratio: 1
|
||||||
|
2026/01/27-22:00:38.560850 1 Options.compaction_options_universal.min_merge_width: 2
|
||||||
|
2026/01/27-22:00:38.560850 1 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||||
|
2026/01/27-22:00:38.560851 1 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||||
|
2026/01/27-22:00:38.560851 1 Options.compaction_options_universal.compression_size_percent: -1
|
||||||
|
2026/01/27-22:00:38.560852 1 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||||
|
2026/01/27-22:00:38.560852 1 Options.compaction_options_universal.max_read_amp: -1
|
||||||
|
2026/01/27-22:00:38.560853 1 Options.compaction_options_universal.reduce_file_locking: 0
|
||||||
|
2026/01/27-22:00:38.560853 1 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||||
|
2026/01/27-22:00:38.560854 1 Options.compaction_options_fifo.allow_compaction: 0
|
||||||
|
2026/01/27-22:00:38.560855 1 Options.table_properties_collectors:
|
||||||
|
2026/01/27-22:00:38.560856 1 Options.inplace_update_support: 0
|
||||||
|
2026/01/27-22:00:38.560857 1 Options.inplace_update_num_locks: 10000
|
||||||
|
2026/01/27-22:00:38.560857 1 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||||
|
2026/01/27-22:00:38.560858 1 Options.memtable_whole_key_filtering: 0
|
||||||
|
2026/01/27-22:00:38.560858 1 Options.memtable_huge_page_size: 0
|
||||||
|
2026/01/27-22:00:38.560859 1 Options.bloom_locality: 0
|
||||||
|
2026/01/27-22:00:38.560859 1 Options.max_successive_merges: 0
|
||||||
|
2026/01/27-22:00:38.560860 1 Options.strict_max_successive_merges: 0
|
||||||
|
2026/01/27-22:00:38.560860 1 Options.optimize_filters_for_hits: 0
|
||||||
|
2026/01/27-22:00:38.560861 1 Options.paranoid_file_checks: 0
|
||||||
|
2026/01/27-22:00:38.560861 1 Options.force_consistency_checks: 1
|
||||||
|
2026/01/27-22:00:38.560862 1 Options.report_bg_io_stats: 0
|
||||||
|
2026/01/27-22:00:38.560862 1 Options.disallow_memtable_writes: 0
|
||||||
|
2026/01/27-22:00:38.560863 1 Options.ttl: 2592000
|
||||||
|
2026/01/27-22:00:38.560863 1 Options.periodic_compaction_seconds: 0
|
||||||
|
2026/01/27-22:00:38.560864 1 Options.default_temperature: kUnknown
|
||||||
|
2026/01/27-22:00:38.560864 1 Options.preclude_last_level_data_seconds: 0
|
||||||
|
2026/01/27-22:00:38.560865 1 Options.preserve_internal_time_seconds: 0
|
||||||
|
2026/01/27-22:00:38.560865 1 Options.enable_blob_files: false
|
||||||
|
2026/01/27-22:00:38.560866 1 Options.min_blob_size: 0
|
||||||
|
2026/01/27-22:00:38.560866 1 Options.blob_file_size: 268435456
|
||||||
|
2026/01/27-22:00:38.560867 1 Options.blob_compression_type: NoCompression
|
||||||
|
2026/01/27-22:00:38.560867 1 Options.enable_blob_garbage_collection: false
|
||||||
|
2026/01/27-22:00:38.560879 1 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||||
|
2026/01/27-22:00:38.560880 1 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||||
|
2026/01/27-22:00:38.560880 1 Options.blob_compaction_readahead_size: 0
|
||||||
|
2026/01/27-22:00:38.560881 1 Options.blob_file_starting_level: 0
|
||||||
|
2026/01/27-22:00:38.560881 1 Options.experimental_mempurge_threshold: 0.000000
|
||||||
|
2026/01/27-22:00:38.560882 1 Options.memtable_max_range_deletions: 0
|
||||||
|
2026/01/27-22:00:38.560882 1 Options.cf_allow_ingest_behind: false
|
||||||
|
2026/01/27-22:00:38.561145 1 [WARN] [db/db_impl/db_impl_open.cc:2688] DB::Open() failed: Invalid argument: Column families not opened: index, search, stream, propagate, pubsub, zset_score, metadata
|
||||||
|
2026/01/27-22:00:38.561190 1 [db/db_impl/db_impl.cc:467] Shutdown: canceling all background work
|
||||||
|
2026/01/27-22:00:38.561240 1 [db/db_impl/db_impl.cc:681] Shutdown complete
|
||||||
1449
local-dev/data/kvrocks/db/LOG.old.1769551520856746
Normal file
1449
local-dev/data/kvrocks/db/LOG.old.1769551520856746
Normal file
File diff suppressed because it is too large
Load Diff
391
local-dev/data/kvrocks/db/LOG.old.1769551520859596
Normal file
391
local-dev/data/kvrocks/db/LOG.old.1769551520859596
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
2026/01/27-22:05:20.858109 1 RocksDB version: 10.6.2
|
||||||
|
2026/01/27-22:05:20.858266 1 Git sha 0
|
||||||
|
2026/01/27-22:05:20.858267 1 Compile date 2025-11-08 14:59:16
|
||||||
|
2026/01/27-22:05:20.858268 1 DB SUMMARY
|
||||||
|
2026/01/27-22:05:20.858269 1 Host name (Env): 83baffb0044b
|
||||||
|
2026/01/27-22:05:20.858270 1 DB Session ID: KLAN4OO9759DRR73WKX0
|
||||||
|
2026/01/27-22:05:20.858345 1 CURRENT file: CURRENT
|
||||||
|
2026/01/27-22:05:20.858346 1 IDENTITY file: IDENTITY
|
||||||
|
2026/01/27-22:05:20.858357 1 MANIFEST file: MANIFEST-000016 size: 941 Bytes
|
||||||
|
2026/01/27-22:05:20.858358 1 SST files in /data/db dir, Total Num: 1, files: 000014.sst
|
||||||
|
2026/01/27-22:05:20.858359 1 Write Ahead Log file in /data/db: 000015.log size: 0 ;
|
||||||
|
2026/01/27-22:05:20.858360 1 Options.error_if_exists: 0
|
||||||
|
2026/01/27-22:05:20.858361 1 Options.create_if_missing: 1
|
||||||
|
2026/01/27-22:05:20.858361 1 Options.paranoid_checks: 1
|
||||||
|
2026/01/27-22:05:20.858362 1 Options.flush_verify_memtable_count: 1
|
||||||
|
2026/01/27-22:05:20.858362 1 Options.compaction_verify_record_count: 1
|
||||||
|
2026/01/27-22:05:20.858363 1 Options.track_and_verify_wals_in_manifest: 0
|
||||||
|
2026/01/27-22:05:20.858363 1 Options.track_and_verify_wals: 0
|
||||||
|
2026/01/27-22:05:20.858364 1 Options.verify_sst_unique_id_in_manifest: 1
|
||||||
|
2026/01/27-22:05:20.858364 1 Options.env: 0xffff8221d0c0
|
||||||
|
2026/01/27-22:05:20.858365 1 Options.fs: PosixFileSystem
|
||||||
|
2026/01/27-22:05:20.858366 1 Options.info_log: 0xffff8230f600
|
||||||
|
2026/01/27-22:05:20.858366 1 Options.max_file_opening_threads: 16
|
||||||
|
2026/01/27-22:05:20.858366 1 Options.statistics: 0xffff822135b0
|
||||||
|
2026/01/27-22:05:20.858367 1 Options.statistics stats level: 3
|
||||||
|
2026/01/27-22:05:20.858367 1 Options.use_fsync: 0
|
||||||
|
2026/01/27-22:05:20.858368 1 Options.max_log_file_size: 268435456
|
||||||
|
2026/01/27-22:05:20.858369 1 Options.max_manifest_file_size: 67108864
|
||||||
|
2026/01/27-22:05:20.858369 1 Options.log_file_time_to_roll: 0
|
||||||
|
2026/01/27-22:05:20.858370 1 Options.keep_log_file_num: 12
|
||||||
|
2026/01/27-22:05:20.858370 1 Options.recycle_log_file_num: 0
|
||||||
|
2026/01/27-22:05:20.858371 1 Options.allow_fallocate: 1
|
||||||
|
2026/01/27-22:05:20.858371 1 Options.allow_mmap_reads: 0
|
||||||
|
2026/01/27-22:05:20.858371 1 Options.allow_mmap_writes: 0
|
||||||
|
2026/01/27-22:05:20.858372 1 Options.use_direct_reads: 0
|
||||||
|
2026/01/27-22:05:20.858372 1 Options.use_direct_io_for_flush_and_compaction: 0
|
||||||
|
2026/01/27-22:05:20.858373 1 Options.create_missing_column_families: 1
|
||||||
|
2026/01/27-22:05:20.858373 1 Options.db_log_dir:
|
||||||
|
2026/01/27-22:05:20.858374 1 Options.wal_dir:
|
||||||
|
2026/01/27-22:05:20.858374 1 Options.table_cache_numshardbits: 6
|
||||||
|
2026/01/27-22:05:20.858375 1 Options.WAL_ttl_seconds: 10800
|
||||||
|
2026/01/27-22:05:20.858375 1 Options.WAL_size_limit_MB: 16384
|
||||||
|
2026/01/27-22:05:20.858376 1 Options.max_write_batch_group_size_bytes: 1048576
|
||||||
|
2026/01/27-22:05:20.858376 1 Options.manifest_preallocation_size: 4194304
|
||||||
|
2026/01/27-22:05:20.858377 1 Options.is_fd_close_on_exec: 1
|
||||||
|
2026/01/27-22:05:20.858377 1 Options.advise_random_on_open: 1
|
||||||
|
2026/01/27-22:05:20.858378 1 Options.db_write_buffer_size: 0
|
||||||
|
2026/01/27-22:05:20.858378 1 Options.write_buffer_manager: 0xffff8226bfc0
|
||||||
|
2026/01/27-22:05:20.858379 1 Options.use_adaptive_mutex: 0
|
||||||
|
2026/01/27-22:05:20.858379 1 Options.rate_limiter: 0xffff82236000
|
||||||
|
2026/01/27-22:05:20.858380 1 Options.sst_file_manager.rate_bytes_per_sec: 0
|
||||||
|
2026/01/27-22:05:20.858380 1 Options.wal_recovery_mode: 2
|
||||||
|
2026/01/27-22:05:20.858381 1 Options.enable_thread_tracking: 0
|
||||||
|
2026/01/27-22:05:20.858381 1 Options.enable_pipelined_write: 0
|
||||||
|
2026/01/27-22:05:20.858382 1 Options.unordered_write: 0
|
||||||
|
2026/01/27-22:05:20.858382 1 Options.allow_concurrent_memtable_write: 1
|
||||||
|
2026/01/27-22:05:20.858383 1 Options.enable_write_thread_adaptive_yield: 1
|
||||||
|
2026/01/27-22:05:20.858383 1 Options.write_thread_max_yield_usec: 100
|
||||||
|
2026/01/27-22:05:20.858384 1 Options.write_thread_slow_yield_usec: 3
|
||||||
|
2026/01/27-22:05:20.858384 1 Options.row_cache: None
|
||||||
|
2026/01/27-22:05:20.858384 1 Options.wal_filter: None
|
||||||
|
2026/01/27-22:05:20.858385 1 Options.avoid_flush_during_recovery: 0
|
||||||
|
2026/01/27-22:05:20.858385 1 Options.allow_ingest_behind: 0
|
||||||
|
2026/01/27-22:05:20.858386 1 Options.two_write_queues: 0
|
||||||
|
2026/01/27-22:05:20.858386 1 Options.manual_wal_flush: 0
|
||||||
|
2026/01/27-22:05:20.858387 1 Options.wal_compression: 0
|
||||||
|
2026/01/27-22:05:20.858387 1 Options.background_close_inactive_wals: 0
|
||||||
|
2026/01/27-22:05:20.858388 1 Options.atomic_flush: 0
|
||||||
|
2026/01/27-22:05:20.858388 1 Options.avoid_unnecessary_blocking_io: 1
|
||||||
|
2026/01/27-22:05:20.858389 1 Options.prefix_seek_opt_in_only: 0
|
||||||
|
2026/01/27-22:05:20.858389 1 Options.persist_stats_to_disk: 0
|
||||||
|
2026/01/27-22:05:20.858390 1 Options.write_dbid_to_manifest: 1
|
||||||
|
2026/01/27-22:05:20.858390 1 Options.write_identity_file: 1
|
||||||
|
2026/01/27-22:05:20.858391 1 Options.log_readahead_size: 0
|
||||||
|
2026/01/27-22:05:20.858391 1 Options.file_checksum_gen_factory: Unknown
|
||||||
|
2026/01/27-22:05:20.858392 1 Options.best_efforts_recovery: 0
|
||||||
|
2026/01/27-22:05:20.858392 1 Options.max_bgerror_resume_count: 2147483647
|
||||||
|
2026/01/27-22:05:20.858393 1 Options.bgerror_resume_retry_interval: 1000000
|
||||||
|
2026/01/27-22:05:20.858393 1 Options.allow_data_in_errors: 0
|
||||||
|
2026/01/27-22:05:20.858394 1 Options.db_host_id: __hostname__
|
||||||
|
2026/01/27-22:05:20.858394 1 Options.enforce_single_del_contracts: true
|
||||||
|
2026/01/27-22:05:20.858395 1 Options.metadata_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:05:20.858396 1 Options.wal_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:05:20.858396 1 Options.max_background_jobs: 4
|
||||||
|
2026/01/27-22:05:20.858396 1 Options.max_background_compactions: -1
|
||||||
|
2026/01/27-22:05:20.858397 1 Options.max_subcompactions: 2
|
||||||
|
2026/01/27-22:05:20.858397 1 Options.avoid_flush_during_shutdown: 0
|
||||||
|
2026/01/27-22:05:20.858398 1 Options.writable_file_max_buffer_size: 1048576
|
||||||
|
2026/01/27-22:05:20.858399 1 Options.delayed_write_rate : 536870912000
|
||||||
|
2026/01/27-22:05:20.858399 1 Options.max_total_wal_size: 536870912
|
||||||
|
2026/01/27-22:05:20.858400 1 Options.delete_obsolete_files_period_micros: 21600000000
|
||||||
|
2026/01/27-22:05:20.858400 1 Options.stats_dump_period_sec: 0
|
||||||
|
2026/01/27-22:05:20.858401 1 Options.stats_persist_period_sec: 600
|
||||||
|
2026/01/27-22:05:20.858401 1 Options.stats_history_buffer_size: 1048576
|
||||||
|
2026/01/27-22:05:20.858402 1 Options.max_open_files: 8096
|
||||||
|
2026/01/27-22:05:20.858402 1 Options.bytes_per_sync: 1048576
|
||||||
|
2026/01/27-22:05:20.858403 1 Options.wal_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:05:20.858403 1 Options.strict_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:05:20.858404 1 Options.compaction_readahead_size: 2097152
|
||||||
|
2026/01/27-22:05:20.858405 1 Options.max_background_flushes: -1
|
||||||
|
2026/01/27-22:05:20.858405 1 Options.daily_offpeak_time_utc:
|
||||||
|
2026/01/27-22:05:20.858406 1 Compression algorithms supported:
|
||||||
|
2026/01/27-22:05:20.858406 1 kCustomCompressionFE supported: 0
|
||||||
|
2026/01/27-22:05:20.858407 1 kCustomCompressionFC supported: 0
|
||||||
|
2026/01/27-22:05:20.858407 1 kCustomCompressionF8 supported: 0
|
||||||
|
2026/01/27-22:05:20.858408 1 kCustomCompressionF7 supported: 0
|
||||||
|
2026/01/27-22:05:20.858408 1 kCustomCompressionB2 supported: 0
|
||||||
|
2026/01/27-22:05:20.858409 1 kLZ4Compression supported: 1
|
||||||
|
2026/01/27-22:05:20.858410 1 kCustomCompression88 supported: 0
|
||||||
|
2026/01/27-22:05:20.858410 1 kCustomCompressionD8 supported: 0
|
||||||
|
2026/01/27-22:05:20.858411 1 kCustomCompression9F supported: 0
|
||||||
|
2026/01/27-22:05:20.858411 1 kCustomCompressionD6 supported: 0
|
||||||
|
2026/01/27-22:05:20.858412 1 kCustomCompressionA9 supported: 0
|
||||||
|
2026/01/27-22:05:20.858412 1 kCustomCompressionEC supported: 0
|
||||||
|
2026/01/27-22:05:20.858413 1 kCustomCompressionA3 supported: 0
|
||||||
|
2026/01/27-22:05:20.858413 1 kCustomCompressionCB supported: 0
|
||||||
|
2026/01/27-22:05:20.858414 1 kCustomCompression90 supported: 0
|
||||||
|
2026/01/27-22:05:20.858414 1 kCustomCompressionA0 supported: 0
|
||||||
|
2026/01/27-22:05:20.858415 1 kCustomCompressionC6 supported: 0
|
||||||
|
2026/01/27-22:05:20.858415 1 kCustomCompression9D supported: 0
|
||||||
|
2026/01/27-22:05:20.858415 1 kCustomCompression8B supported: 0
|
||||||
|
2026/01/27-22:05:20.858416 1 kCustomCompressionA8 supported: 0
|
||||||
|
2026/01/27-22:05:20.858416 1 kCustomCompression8D supported: 0
|
||||||
|
2026/01/27-22:05:20.858417 1 kCustomCompression97 supported: 0
|
||||||
|
2026/01/27-22:05:20.858417 1 kCustomCompression98 supported: 0
|
||||||
|
2026/01/27-22:05:20.858418 1 kCustomCompressionAC supported: 0
|
||||||
|
2026/01/27-22:05:20.858418 1 kCustomCompressionE9 supported: 0
|
||||||
|
2026/01/27-22:05:20.858419 1 kCustomCompression96 supported: 0
|
||||||
|
2026/01/27-22:05:20.858419 1 kCustomCompressionB1 supported: 0
|
||||||
|
2026/01/27-22:05:20.858420 1 kCustomCompression95 supported: 0
|
||||||
|
2026/01/27-22:05:20.858420 1 kCustomCompression84 supported: 0
|
||||||
|
2026/01/27-22:05:20.858421 1 kCustomCompression91 supported: 0
|
||||||
|
2026/01/27-22:05:20.858421 1 kCustomCompressionAB supported: 0
|
||||||
|
2026/01/27-22:05:20.858422 1 kCustomCompressionB3 supported: 0
|
||||||
|
2026/01/27-22:05:20.858422 1 kCustomCompression81 supported: 0
|
||||||
|
2026/01/27-22:05:20.858423 1 kCustomCompressionDC supported: 0
|
||||||
|
2026/01/27-22:05:20.858423 1 kBZip2Compression supported: 0
|
||||||
|
2026/01/27-22:05:20.858424 1 kCustomCompressionBB supported: 0
|
||||||
|
2026/01/27-22:05:20.858424 1 kCustomCompression9C supported: 0
|
||||||
|
2026/01/27-22:05:20.858425 1 kCustomCompressionC9 supported: 0
|
||||||
|
2026/01/27-22:05:20.858425 1 kCustomCompressionCC supported: 0
|
||||||
|
2026/01/27-22:05:20.858426 1 kCustomCompression92 supported: 0
|
||||||
|
2026/01/27-22:05:20.858426 1 kCustomCompressionB9 supported: 0
|
||||||
|
2026/01/27-22:05:20.858427 1 kCustomCompression8F supported: 0
|
||||||
|
2026/01/27-22:05:20.858427 1 kCustomCompression8A supported: 0
|
||||||
|
2026/01/27-22:05:20.858427 1 kCustomCompression9B supported: 0
|
||||||
|
2026/01/27-22:05:20.858428 1 kZSTD supported: 1
|
||||||
|
2026/01/27-22:05:20.858428 1 kCustomCompressionAA supported: 0
|
||||||
|
2026/01/27-22:05:20.858429 1 kCustomCompressionA2 supported: 0
|
||||||
|
2026/01/27-22:05:20.858429 1 kZlibCompression supported: 1
|
||||||
|
2026/01/27-22:05:20.858430 1 kXpressCompression supported: 0
|
||||||
|
2026/01/27-22:05:20.858431 1 kCustomCompressionFD supported: 0
|
||||||
|
2026/01/27-22:05:20.858431 1 kCustomCompressionE2 supported: 0
|
||||||
|
2026/01/27-22:05:20.858432 1 kLZ4HCCompression supported: 1
|
||||||
|
2026/01/27-22:05:20.858432 1 kCustomCompressionA6 supported: 0
|
||||||
|
2026/01/27-22:05:20.858433 1 kCustomCompression85 supported: 0
|
||||||
|
2026/01/27-22:05:20.858433 1 kCustomCompressionA4 supported: 0
|
||||||
|
2026/01/27-22:05:20.858434 1 kCustomCompression86 supported: 0
|
||||||
|
2026/01/27-22:05:20.858434 1 kCustomCompression83 supported: 0
|
||||||
|
2026/01/27-22:05:20.858434 1 kCustomCompression87 supported: 0
|
||||||
|
2026/01/27-22:05:20.858435 1 kCustomCompression89 supported: 0
|
||||||
|
2026/01/27-22:05:20.858435 1 kCustomCompression8C supported: 0
|
||||||
|
2026/01/27-22:05:20.858436 1 kCustomCompressionDB supported: 0
|
||||||
|
2026/01/27-22:05:20.858436 1 kCustomCompressionF3 supported: 0
|
||||||
|
2026/01/27-22:05:20.858437 1 kCustomCompressionE6 supported: 0
|
||||||
|
2026/01/27-22:05:20.858437 1 kCustomCompression8E supported: 0
|
||||||
|
2026/01/27-22:05:20.858438 1 kCustomCompressionDA supported: 0
|
||||||
|
2026/01/27-22:05:20.858438 1 kCustomCompression93 supported: 0
|
||||||
|
2026/01/27-22:05:20.858439 1 kCustomCompression94 supported: 0
|
||||||
|
2026/01/27-22:05:20.858440 1 kCustomCompression9E supported: 0
|
||||||
|
2026/01/27-22:05:20.858441 1 kCustomCompressionB4 supported: 0
|
||||||
|
2026/01/27-22:05:20.858441 1 kCustomCompressionFB supported: 0
|
||||||
|
2026/01/27-22:05:20.858442 1 kCustomCompressionB5 supported: 0
|
||||||
|
2026/01/27-22:05:20.858442 1 kCustomCompressionD5 supported: 0
|
||||||
|
2026/01/27-22:05:20.858443 1 kCustomCompressionB8 supported: 0
|
||||||
|
2026/01/27-22:05:20.858443 1 kCustomCompressionD1 supported: 0
|
||||||
|
2026/01/27-22:05:20.858444 1 kCustomCompressionBA supported: 0
|
||||||
|
2026/01/27-22:05:20.858444 1 kCustomCompressionBC supported: 0
|
||||||
|
2026/01/27-22:05:20.858445 1 kCustomCompressionCE supported: 0
|
||||||
|
2026/01/27-22:05:20.858445 1 kCustomCompressionBD supported: 0
|
||||||
|
2026/01/27-22:05:20.858445 1 kCustomCompressionC4 supported: 0
|
||||||
|
2026/01/27-22:05:20.858446 1 kCustomCompression9A supported: 0
|
||||||
|
2026/01/27-22:05:20.858446 1 kCustomCompression99 supported: 0
|
||||||
|
2026/01/27-22:05:20.858447 1 kCustomCompressionBE supported: 0
|
||||||
|
2026/01/27-22:05:20.858447 1 kCustomCompressionE5 supported: 0
|
||||||
|
2026/01/27-22:05:20.858448 1 kCustomCompressionD9 supported: 0
|
||||||
|
2026/01/27-22:05:20.858448 1 kCustomCompressionC1 supported: 0
|
||||||
|
2026/01/27-22:05:20.858449 1 kCustomCompressionC5 supported: 0
|
||||||
|
2026/01/27-22:05:20.858449 1 kCustomCompressionC2 supported: 0
|
||||||
|
2026/01/27-22:05:20.858450 1 kCustomCompressionA5 supported: 0
|
||||||
|
2026/01/27-22:05:20.858450 1 kCustomCompressionC7 supported: 0
|
||||||
|
2026/01/27-22:05:20.858451 1 kCustomCompressionBF supported: 0
|
||||||
|
2026/01/27-22:05:20.858451 1 kCustomCompressionE8 supported: 0
|
||||||
|
2026/01/27-22:05:20.858452 1 kCustomCompressionC8 supported: 0
|
||||||
|
2026/01/27-22:05:20.858452 1 kCustomCompressionAF supported: 0
|
||||||
|
2026/01/27-22:05:20.858453 1 kCustomCompressionCA supported: 0
|
||||||
|
2026/01/27-22:05:20.858453 1 kCustomCompressionCD supported: 0
|
||||||
|
2026/01/27-22:05:20.858454 1 kCustomCompressionC0 supported: 0
|
||||||
|
2026/01/27-22:05:20.858454 1 kCustomCompressionCF supported: 0
|
||||||
|
2026/01/27-22:05:20.858455 1 kCustomCompressionF9 supported: 0
|
||||||
|
2026/01/27-22:05:20.858455 1 kCustomCompressionD0 supported: 0
|
||||||
|
2026/01/27-22:05:20.858456 1 kCustomCompressionD2 supported: 0
|
||||||
|
2026/01/27-22:05:20.858456 1 kCustomCompressionAD supported: 0
|
||||||
|
2026/01/27-22:05:20.858457 1 kCustomCompressionD3 supported: 0
|
||||||
|
2026/01/27-22:05:20.858457 1 kCustomCompressionD4 supported: 0
|
||||||
|
2026/01/27-22:05:20.858458 1 kCustomCompressionD7 supported: 0
|
||||||
|
2026/01/27-22:05:20.858458 1 kCustomCompression82 supported: 0
|
||||||
|
2026/01/27-22:05:20.858459 1 kCustomCompressionDD supported: 0
|
||||||
|
2026/01/27-22:05:20.858459 1 kCustomCompressionC3 supported: 0
|
||||||
|
2026/01/27-22:05:20.858459 1 kCustomCompressionEE supported: 0
|
||||||
|
2026/01/27-22:05:20.858460 1 kCustomCompressionDE supported: 0
|
||||||
|
2026/01/27-22:05:20.858460 1 kCustomCompressionDF supported: 0
|
||||||
|
2026/01/27-22:05:20.858461 1 kCustomCompressionA7 supported: 0
|
||||||
|
2026/01/27-22:05:20.858461 1 kCustomCompressionE0 supported: 0
|
||||||
|
2026/01/27-22:05:20.858462 1 kCustomCompressionF1 supported: 0
|
||||||
|
2026/01/27-22:05:20.858462 1 kCustomCompressionE1 supported: 0
|
||||||
|
2026/01/27-22:05:20.858463 1 kCustomCompressionF5 supported: 0
|
||||||
|
2026/01/27-22:05:20.858463 1 kCustomCompression80 supported: 0
|
||||||
|
2026/01/27-22:05:20.858464 1 kCustomCompressionE3 supported: 0
|
||||||
|
2026/01/27-22:05:20.858464 1 kCustomCompressionE4 supported: 0
|
||||||
|
2026/01/27-22:05:20.858465 1 kCustomCompressionB0 supported: 0
|
||||||
|
2026/01/27-22:05:20.858465 1 kCustomCompressionEA supported: 0
|
||||||
|
2026/01/27-22:05:20.858466 1 kCustomCompressionFA supported: 0
|
||||||
|
2026/01/27-22:05:20.858466 1 kCustomCompressionE7 supported: 0
|
||||||
|
2026/01/27-22:05:20.858467 1 kCustomCompressionAE supported: 0
|
||||||
|
2026/01/27-22:05:20.858467 1 kCustomCompressionEB supported: 0
|
||||||
|
2026/01/27-22:05:20.858468 1 kCustomCompressionED supported: 0
|
||||||
|
2026/01/27-22:05:20.858468 1 kCustomCompressionB6 supported: 0
|
||||||
|
2026/01/27-22:05:20.858469 1 kCustomCompressionEF supported: 0
|
||||||
|
2026/01/27-22:05:20.858469 1 kCustomCompressionF0 supported: 0
|
||||||
|
2026/01/27-22:05:20.858470 1 kCustomCompressionB7 supported: 0
|
||||||
|
2026/01/27-22:05:20.858470 1 kCustomCompressionF2 supported: 0
|
||||||
|
2026/01/27-22:05:20.858470 1 kCustomCompressionA1 supported: 0
|
||||||
|
2026/01/27-22:05:20.858471 1 kCustomCompressionF4 supported: 0
|
||||||
|
2026/01/27-22:05:20.858472 1 kSnappyCompression supported: 1
|
||||||
|
2026/01/27-22:05:20.858472 1 kCustomCompressionF6 supported: 0
|
||||||
|
2026/01/27-22:05:20.858476 1 Fast CRC32 supported: Supported on Arm64
|
||||||
|
2026/01/27-22:05:20.858477 1 DMutex implementation: pthread_mutex_t
|
||||||
|
2026/01/27-22:05:20.858477 1 Jemalloc supported: 1
|
||||||
|
2026/01/27-22:05:20.858838 1 [db/version_set.cc:6190] Recovering from manifest file: /data/db/MANIFEST-000016
|
||||||
|
2026/01/27-22:05:20.858987 1 [db/column_family.cc:693] --------------- Options for column family [default]:
|
||||||
|
2026/01/27-22:05:20.858989 1 Options.comparator: leveldb.BytewiseComparator
|
||||||
|
2026/01/27-22:05:20.858990 1 Options.merge_operator: None
|
||||||
|
2026/01/27-22:05:20.858990 1 Options.compaction_filter: None
|
||||||
|
2026/01/27-22:05:20.858991 1 Options.compaction_filter_factory: None
|
||||||
|
2026/01/27-22:05:20.858991 1 Options.sst_partitioner_factory: None
|
||||||
|
2026/01/27-22:05:20.858992 1 Options.memtable_factory: SkipListFactory
|
||||||
|
2026/01/27-22:05:20.858992 1 Options.table_factory: BlockBasedTable
|
||||||
|
2026/01/27-22:05:20.859006 1 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0xffff822d15a0)
|
||||||
|
cache_index_and_filter_blocks: 0
|
||||||
|
cache_index_and_filter_blocks_with_high_priority: 1
|
||||||
|
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||||
|
pin_top_level_index_and_filter: 1
|
||||||
|
index_type: 0
|
||||||
|
data_block_index_type: 0
|
||||||
|
index_shortening: 1
|
||||||
|
data_block_hash_table_util_ratio: 0.750000
|
||||||
|
checksum: 4
|
||||||
|
no_block_cache: 0
|
||||||
|
block_cache: 0xffff8226bd90
|
||||||
|
block_cache_name: LRUCache
|
||||||
|
block_cache_options:
|
||||||
|
capacity : 33554432
|
||||||
|
num_shard_bits : 6
|
||||||
|
strict_capacity_limit : 0
|
||||||
|
memory_allocator : None
|
||||||
|
high_pri_pool_ratio: 0.500
|
||||||
|
low_pri_pool_ratio: 0.000
|
||||||
|
persistent_cache: (nil)
|
||||||
|
block_size: 4096
|
||||||
|
block_size_deviation: 10
|
||||||
|
block_restart_interval: 16
|
||||||
|
index_block_restart_interval: 1
|
||||||
|
metadata_block_size: 4096
|
||||||
|
partition_filters: 0
|
||||||
|
use_delta_encoding: 1
|
||||||
|
filter_policy: nullptr
|
||||||
|
user_defined_index_factory: nullptr
|
||||||
|
fail_if_no_udi_on_open: 0
|
||||||
|
whole_key_filtering: 1
|
||||||
|
verify_compression: 0
|
||||||
|
read_amp_bytes_per_bit: 0
|
||||||
|
format_version: 6
|
||||||
|
enable_index_compression: 1
|
||||||
|
block_align: 0
|
||||||
|
max_auto_readahead_size: 262144
|
||||||
|
prepopulate_block_cache: 0
|
||||||
|
initial_auto_readahead_size: 8192
|
||||||
|
num_file_reads_for_auto_readahead: 2
|
||||||
|
2026/01/27-22:05:20.859009 1 Options.write_buffer_size: 67108864
|
||||||
|
2026/01/27-22:05:20.859009 1 Options.max_write_buffer_number: 4
|
||||||
|
2026/01/27-22:05:20.859010 1 Options.compression[0]: NoCompression
|
||||||
|
2026/01/27-22:05:20.859011 1 Options.compression[1]: NoCompression
|
||||||
|
2026/01/27-22:05:20.859011 1 Options.compression[2]: Snappy
|
||||||
|
2026/01/27-22:05:20.859012 1 Options.compression[3]: Snappy
|
||||||
|
2026/01/27-22:05:20.859012 1 Options.compression[4]: Snappy
|
||||||
|
2026/01/27-22:05:20.859013 1 Options.compression[5]: Snappy
|
||||||
|
2026/01/27-22:05:20.859013 1 Options.compression[6]: Snappy
|
||||||
|
2026/01/27-22:05:20.859014 1 Options.bottommost_compression: Disabled
|
||||||
|
2026/01/27-22:05:20.859015 1 Options.prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:05:20.859015 1 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:05:20.859016 1 Options.num_levels: 7
|
||||||
|
2026/01/27-22:05:20.859016 1 Options.min_write_buffer_number_to_merge: 1
|
||||||
|
2026/01/27-22:05:20.859017 1 Options.max_write_buffer_size_to_maintain: 0
|
||||||
|
2026/01/27-22:05:20.859017 1 Options.bottommost_compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:05:20.859018 1 Options.bottommost_compression_opts.level: 32767
|
||||||
|
2026/01/27-22:05:20.859018 1 Options.bottommost_compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:05:20.859019 1 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:05:20.859019 1 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:05:20.859020 1 Options.bottommost_compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:05:20.859020 1 Options.bottommost_compression_opts.enabled: false
|
||||||
|
2026/01/27-22:05:20.859021 1 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:05:20.859021 1 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:05:20.859022 1 Options.compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:05:20.859022 1 Options.compression_opts.level: 32767
|
||||||
|
2026/01/27-22:05:20.859023 1 Options.compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:05:20.859023 1 Options.compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:05:20.859024 1 Options.compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:05:20.859024 1 Options.compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:05:20.859025 1 Options.compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:05:20.859025 1 Options.compression_opts.enabled: false
|
||||||
|
2026/01/27-22:05:20.859026 1 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:05:20.859026 1 Options.level0_file_num_compaction_trigger: 4
|
||||||
|
2026/01/27-22:05:20.859026 1 Options.level0_slowdown_writes_trigger: 20
|
||||||
|
2026/01/27-22:05:20.859027 1 Options.level0_stop_writes_trigger: 40
|
||||||
|
2026/01/27-22:05:20.859027 1 Options.target_file_size_base: 134217728
|
||||||
|
2026/01/27-22:05:20.859028 1 Options.target_file_size_multiplier: 1
|
||||||
|
2026/01/27-22:05:20.859028 1 Options.max_bytes_for_level_base: 268435456
|
||||||
|
2026/01/27-22:05:20.859029 1 Options.level_compaction_dynamic_level_bytes: 1
|
||||||
|
2026/01/27-22:05:20.859030 1 Options.max_bytes_for_level_multiplier: 10.000000
|
||||||
|
2026/01/27-22:05:20.859030 1 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||||
|
2026/01/27-22:05:20.859031 1 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||||
|
2026/01/27-22:05:20.859031 1 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||||
|
2026/01/27-22:05:20.859032 1 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||||
|
2026/01/27-22:05:20.859032 1 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||||
|
2026/01/27-22:05:20.859033 1 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||||
|
2026/01/27-22:05:20.859033 1 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||||
|
2026/01/27-22:05:20.859034 1 Options.max_sequential_skip_in_iterations: 8
|
||||||
|
2026/01/27-22:05:20.859034 1 Options.memtable_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:05:20.859035 1 Options.memtable_avg_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:05:20.859035 1 Options.max_compaction_bytes: 3355443200
|
||||||
|
2026/01/27-22:05:20.859036 1 Options.arena_block_size: 1048576
|
||||||
|
2026/01/27-22:05:20.859036 1 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||||
|
2026/01/27-22:05:20.859037 1 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||||
|
2026/01/27-22:05:20.859037 1 Options.disable_auto_compactions: 0
|
||||||
|
2026/01/27-22:05:20.859038 1 Options.compaction_style: kCompactionStyleLevel
|
||||||
|
2026/01/27-22:05:20.859038 1 Options.compaction_pri: kMinOverlappingRatio
|
||||||
|
2026/01/27-22:05:20.859039 1 Options.compaction_options_universal.size_ratio: 1
|
||||||
|
2026/01/27-22:05:20.859039 1 Options.compaction_options_universal.min_merge_width: 2
|
||||||
|
2026/01/27-22:05:20.859040 1 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||||
|
2026/01/27-22:05:20.859040 1 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||||
|
2026/01/27-22:05:20.859041 1 Options.compaction_options_universal.compression_size_percent: -1
|
||||||
|
2026/01/27-22:05:20.859042 1 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||||
|
2026/01/27-22:05:20.859042 1 Options.compaction_options_universal.max_read_amp: -1
|
||||||
|
2026/01/27-22:05:20.859043 1 Options.compaction_options_universal.reduce_file_locking: 0
|
||||||
|
2026/01/27-22:05:20.859043 1 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||||
|
2026/01/27-22:05:20.859043 1 Options.compaction_options_fifo.allow_compaction: 0
|
||||||
|
2026/01/27-22:05:20.859044 1 Options.table_properties_collectors:
|
||||||
|
2026/01/27-22:05:20.859045 1 Options.inplace_update_support: 0
|
||||||
|
2026/01/27-22:05:20.859046 1 Options.inplace_update_num_locks: 10000
|
||||||
|
2026/01/27-22:05:20.859046 1 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||||
|
2026/01/27-22:05:20.859049 1 Options.memtable_whole_key_filtering: 0
|
||||||
|
2026/01/27-22:05:20.859049 1 Options.memtable_huge_page_size: 0
|
||||||
|
2026/01/27-22:05:20.859050 1 Options.bloom_locality: 0
|
||||||
|
2026/01/27-22:05:20.859050 1 Options.max_successive_merges: 0
|
||||||
|
2026/01/27-22:05:20.859051 1 Options.strict_max_successive_merges: 0
|
||||||
|
2026/01/27-22:05:20.859051 1 Options.optimize_filters_for_hits: 0
|
||||||
|
2026/01/27-22:05:20.859052 1 Options.paranoid_file_checks: 0
|
||||||
|
2026/01/27-22:05:20.859052 1 Options.force_consistency_checks: 1
|
||||||
|
2026/01/27-22:05:20.859053 1 Options.report_bg_io_stats: 0
|
||||||
|
2026/01/27-22:05:20.859053 1 Options.disallow_memtable_writes: 0
|
||||||
|
2026/01/27-22:05:20.859054 1 Options.ttl: 2592000
|
||||||
|
2026/01/27-22:05:20.859054 1 Options.periodic_compaction_seconds: 0
|
||||||
|
2026/01/27-22:05:20.859055 1 Options.default_temperature: kUnknown
|
||||||
|
2026/01/27-22:05:20.859055 1 Options.preclude_last_level_data_seconds: 0
|
||||||
|
2026/01/27-22:05:20.859056 1 Options.preserve_internal_time_seconds: 0
|
||||||
|
2026/01/27-22:05:20.859056 1 Options.enable_blob_files: false
|
||||||
|
2026/01/27-22:05:20.859057 1 Options.min_blob_size: 0
|
||||||
|
2026/01/27-22:05:20.859058 1 Options.blob_file_size: 268435456
|
||||||
|
2026/01/27-22:05:20.859058 1 Options.blob_compression_type: NoCompression
|
||||||
|
2026/01/27-22:05:20.859059 1 Options.enable_blob_garbage_collection: false
|
||||||
|
2026/01/27-22:05:20.859059 1 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||||
|
2026/01/27-22:05:20.859060 1 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||||
|
2026/01/27-22:05:20.859060 1 Options.blob_compaction_readahead_size: 0
|
||||||
|
2026/01/27-22:05:20.859061 1 Options.blob_file_starting_level: 0
|
||||||
|
2026/01/27-22:05:20.859061 1 Options.experimental_mempurge_threshold: 0.000000
|
||||||
|
2026/01/27-22:05:20.859062 1 Options.memtable_max_range_deletions: 0
|
||||||
|
2026/01/27-22:05:20.859062 1 Options.cf_allow_ingest_behind: false
|
||||||
|
2026/01/27-22:05:20.859382 1 [WARN] [db/db_impl/db_impl_open.cc:2688] DB::Open() failed: Invalid argument: Column families not opened: index, search, stream, propagate, pubsub, zset_score, metadata
|
||||||
|
2026/01/27-22:05:20.859417 1 [db/db_impl/db_impl.cc:467] Shutdown: canceling all background work
|
||||||
|
2026/01/27-22:05:20.859456 1 [db/db_impl/db_impl.cc:681] Shutdown complete
|
||||||
1456
local-dev/data/kvrocks/db/LOG.old.1769552965239568
Normal file
1456
local-dev/data/kvrocks/db/LOG.old.1769552965239568
Normal file
File diff suppressed because it is too large
Load Diff
391
local-dev/data/kvrocks/db/LOG.old.1769552965242971
Normal file
391
local-dev/data/kvrocks/db/LOG.old.1769552965242971
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
2026/01/27-22:29:25.240257 1 RocksDB version: 10.6.2
|
||||||
|
2026/01/27-22:29:25.240319 1 Git sha 0
|
||||||
|
2026/01/27-22:29:25.240320 1 Compile date 2025-11-08 14:59:16
|
||||||
|
2026/01/27-22:29:25.240321 1 DB SUMMARY
|
||||||
|
2026/01/27-22:29:25.240322 1 Host name (Env): 5872b7ec3319
|
||||||
|
2026/01/27-22:29:25.240323 1 DB Session ID: NHD5FTT50V3BVJ0V5F19
|
||||||
|
2026/01/27-22:29:25.240426 1 CURRENT file: CURRENT
|
||||||
|
2026/01/27-22:29:25.240428 1 IDENTITY file: IDENTITY
|
||||||
|
2026/01/27-22:29:25.240430 1 MANIFEST file: MANIFEST-000020 size: 941 Bytes
|
||||||
|
2026/01/27-22:29:25.240432 1 SST files in /data/db dir, Total Num: 1, files: 000014.sst
|
||||||
|
2026/01/27-22:29:25.240433 1 Write Ahead Log file in /data/db: 000019.log size: 101968 ;
|
||||||
|
2026/01/27-22:29:25.240437 1 Options.error_if_exists: 0
|
||||||
|
2026/01/27-22:29:25.240437 1 Options.create_if_missing: 1
|
||||||
|
2026/01/27-22:29:25.240438 1 Options.paranoid_checks: 1
|
||||||
|
2026/01/27-22:29:25.240438 1 Options.flush_verify_memtable_count: 1
|
||||||
|
2026/01/27-22:29:25.240439 1 Options.compaction_verify_record_count: 1
|
||||||
|
2026/01/27-22:29:25.240440 1 Options.track_and_verify_wals_in_manifest: 0
|
||||||
|
2026/01/27-22:29:25.240440 1 Options.track_and_verify_wals: 0
|
||||||
|
2026/01/27-22:29:25.240441 1 Options.verify_sst_unique_id_in_manifest: 1
|
||||||
|
2026/01/27-22:29:25.240441 1 Options.env: 0xffff8981d0c0
|
||||||
|
2026/01/27-22:29:25.240442 1 Options.fs: PosixFileSystem
|
||||||
|
2026/01/27-22:29:25.240442 1 Options.info_log: 0xffff8990f600
|
||||||
|
2026/01/27-22:29:25.240443 1 Options.max_file_opening_threads: 16
|
||||||
|
2026/01/27-22:29:25.240443 1 Options.statistics: 0xffff898135b0
|
||||||
|
2026/01/27-22:29:25.240444 1 Options.statistics stats level: 3
|
||||||
|
2026/01/27-22:29:25.240444 1 Options.use_fsync: 0
|
||||||
|
2026/01/27-22:29:25.240445 1 Options.max_log_file_size: 268435456
|
||||||
|
2026/01/27-22:29:25.240446 1 Options.max_manifest_file_size: 67108864
|
||||||
|
2026/01/27-22:29:25.240448 1 Options.log_file_time_to_roll: 0
|
||||||
|
2026/01/27-22:29:25.240449 1 Options.keep_log_file_num: 12
|
||||||
|
2026/01/27-22:29:25.240450 1 Options.recycle_log_file_num: 0
|
||||||
|
2026/01/27-22:29:25.240450 1 Options.allow_fallocate: 1
|
||||||
|
2026/01/27-22:29:25.240451 1 Options.allow_mmap_reads: 0
|
||||||
|
2026/01/27-22:29:25.240451 1 Options.allow_mmap_writes: 0
|
||||||
|
2026/01/27-22:29:25.240452 1 Options.use_direct_reads: 0
|
||||||
|
2026/01/27-22:29:25.240453 1 Options.use_direct_io_for_flush_and_compaction: 0
|
||||||
|
2026/01/27-22:29:25.240453 1 Options.create_missing_column_families: 1
|
||||||
|
2026/01/27-22:29:25.240454 1 Options.db_log_dir:
|
||||||
|
2026/01/27-22:29:25.240455 1 Options.wal_dir:
|
||||||
|
2026/01/27-22:29:25.240455 1 Options.table_cache_numshardbits: 6
|
||||||
|
2026/01/27-22:29:25.240456 1 Options.WAL_ttl_seconds: 10800
|
||||||
|
2026/01/27-22:29:25.240456 1 Options.WAL_size_limit_MB: 16384
|
||||||
|
2026/01/27-22:29:25.240457 1 Options.max_write_batch_group_size_bytes: 1048576
|
||||||
|
2026/01/27-22:29:25.240458 1 Options.manifest_preallocation_size: 4194304
|
||||||
|
2026/01/27-22:29:25.240458 1 Options.is_fd_close_on_exec: 1
|
||||||
|
2026/01/27-22:29:25.240459 1 Options.advise_random_on_open: 1
|
||||||
|
2026/01/27-22:29:25.240460 1 Options.db_write_buffer_size: 0
|
||||||
|
2026/01/27-22:29:25.240460 1 Options.write_buffer_manager: 0xffff8986bfc0
|
||||||
|
2026/01/27-22:29:25.240461 1 Options.use_adaptive_mutex: 0
|
||||||
|
2026/01/27-22:29:25.240461 1 Options.rate_limiter: 0xffff89836000
|
||||||
|
2026/01/27-22:29:25.240462 1 Options.sst_file_manager.rate_bytes_per_sec: 0
|
||||||
|
2026/01/27-22:29:25.240465 1 Options.wal_recovery_mode: 2
|
||||||
|
2026/01/27-22:29:25.240466 1 Options.enable_thread_tracking: 0
|
||||||
|
2026/01/27-22:29:25.240467 1 Options.enable_pipelined_write: 0
|
||||||
|
2026/01/27-22:29:25.240468 1 Options.unordered_write: 0
|
||||||
|
2026/01/27-22:29:25.240468 1 Options.allow_concurrent_memtable_write: 1
|
||||||
|
2026/01/27-22:29:25.240469 1 Options.enable_write_thread_adaptive_yield: 1
|
||||||
|
2026/01/27-22:29:25.240469 1 Options.write_thread_max_yield_usec: 100
|
||||||
|
2026/01/27-22:29:25.240470 1 Options.write_thread_slow_yield_usec: 3
|
||||||
|
2026/01/27-22:29:25.240471 1 Options.row_cache: None
|
||||||
|
2026/01/27-22:29:25.240471 1 Options.wal_filter: None
|
||||||
|
2026/01/27-22:29:25.240472 1 Options.avoid_flush_during_recovery: 0
|
||||||
|
2026/01/27-22:29:25.240472 1 Options.allow_ingest_behind: 0
|
||||||
|
2026/01/27-22:29:25.240473 1 Options.two_write_queues: 0
|
||||||
|
2026/01/27-22:29:25.240474 1 Options.manual_wal_flush: 0
|
||||||
|
2026/01/27-22:29:25.240474 1 Options.wal_compression: 0
|
||||||
|
2026/01/27-22:29:25.240475 1 Options.background_close_inactive_wals: 0
|
||||||
|
2026/01/27-22:29:25.240475 1 Options.atomic_flush: 0
|
||||||
|
2026/01/27-22:29:25.240476 1 Options.avoid_unnecessary_blocking_io: 1
|
||||||
|
2026/01/27-22:29:25.240476 1 Options.prefix_seek_opt_in_only: 0
|
||||||
|
2026/01/27-22:29:25.240477 1 Options.persist_stats_to_disk: 0
|
||||||
|
2026/01/27-22:29:25.240480 1 Options.write_dbid_to_manifest: 1
|
||||||
|
2026/01/27-22:29:25.240481 1 Options.write_identity_file: 1
|
||||||
|
2026/01/27-22:29:25.240481 1 Options.log_readahead_size: 0
|
||||||
|
2026/01/27-22:29:25.240482 1 Options.file_checksum_gen_factory: Unknown
|
||||||
|
2026/01/27-22:29:25.240483 1 Options.best_efforts_recovery: 0
|
||||||
|
2026/01/27-22:29:25.240483 1 Options.max_bgerror_resume_count: 2147483647
|
||||||
|
2026/01/27-22:29:25.240484 1 Options.bgerror_resume_retry_interval: 1000000
|
||||||
|
2026/01/27-22:29:25.240484 1 Options.allow_data_in_errors: 0
|
||||||
|
2026/01/27-22:29:25.240485 1 Options.db_host_id: __hostname__
|
||||||
|
2026/01/27-22:29:25.240485 1 Options.enforce_single_del_contracts: true
|
||||||
|
2026/01/27-22:29:25.240486 1 Options.metadata_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:29:25.240487 1 Options.wal_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:29:25.240487 1 Options.max_background_jobs: 4
|
||||||
|
2026/01/27-22:29:25.240488 1 Options.max_background_compactions: -1
|
||||||
|
2026/01/27-22:29:25.240488 1 Options.max_subcompactions: 2
|
||||||
|
2026/01/27-22:29:25.240489 1 Options.avoid_flush_during_shutdown: 0
|
||||||
|
2026/01/27-22:29:25.240489 1 Options.writable_file_max_buffer_size: 1048576
|
||||||
|
2026/01/27-22:29:25.240492 1 Options.delayed_write_rate : 536870912000
|
||||||
|
2026/01/27-22:29:25.240493 1 Options.max_total_wal_size: 536870912
|
||||||
|
2026/01/27-22:29:25.240494 1 Options.delete_obsolete_files_period_micros: 21600000000
|
||||||
|
2026/01/27-22:29:25.240494 1 Options.stats_dump_period_sec: 0
|
||||||
|
2026/01/27-22:29:25.240495 1 Options.stats_persist_period_sec: 600
|
||||||
|
2026/01/27-22:29:25.240495 1 Options.stats_history_buffer_size: 1048576
|
||||||
|
2026/01/27-22:29:25.240496 1 Options.max_open_files: 8096
|
||||||
|
2026/01/27-22:29:25.240496 1 Options.bytes_per_sync: 1048576
|
||||||
|
2026/01/27-22:29:25.240497 1 Options.wal_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:29:25.240498 1 Options.strict_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:29:25.240498 1 Options.compaction_readahead_size: 2097152
|
||||||
|
2026/01/27-22:29:25.240499 1 Options.max_background_flushes: -1
|
||||||
|
2026/01/27-22:29:25.240499 1 Options.daily_offpeak_time_utc:
|
||||||
|
2026/01/27-22:29:25.240500 1 Compression algorithms supported:
|
||||||
|
2026/01/27-22:29:25.240500 1 kCustomCompressionFE supported: 0
|
||||||
|
2026/01/27-22:29:25.240501 1 kCustomCompressionFC supported: 0
|
||||||
|
2026/01/27-22:29:25.240502 1 kCustomCompressionF8 supported: 0
|
||||||
|
2026/01/27-22:29:25.240502 1 kCustomCompressionF7 supported: 0
|
||||||
|
2026/01/27-22:29:25.240503 1 kCustomCompressionB2 supported: 0
|
||||||
|
2026/01/27-22:29:25.240503 1 kLZ4Compression supported: 1
|
||||||
|
2026/01/27-22:29:25.240506 1 kCustomCompression88 supported: 0
|
||||||
|
2026/01/27-22:29:25.240506 1 kCustomCompressionD8 supported: 0
|
||||||
|
2026/01/27-22:29:25.240507 1 kCustomCompression9F supported: 0
|
||||||
|
2026/01/27-22:29:25.240507 1 kCustomCompressionD6 supported: 0
|
||||||
|
2026/01/27-22:29:25.240508 1 kCustomCompressionA9 supported: 0
|
||||||
|
2026/01/27-22:29:25.240508 1 kCustomCompressionEC supported: 0
|
||||||
|
2026/01/27-22:29:25.240509 1 kCustomCompressionA3 supported: 0
|
||||||
|
2026/01/27-22:29:25.240509 1 kCustomCompressionCB supported: 0
|
||||||
|
2026/01/27-22:29:25.240510 1 kCustomCompression90 supported: 0
|
||||||
|
2026/01/27-22:29:25.240510 1 kCustomCompressionA0 supported: 0
|
||||||
|
2026/01/27-22:29:25.240511 1 kCustomCompressionC6 supported: 0
|
||||||
|
2026/01/27-22:29:25.240513 1 kCustomCompression9D supported: 0
|
||||||
|
2026/01/27-22:29:25.240514 1 kCustomCompression8B supported: 0
|
||||||
|
2026/01/27-22:29:25.240514 1 kCustomCompressionA8 supported: 0
|
||||||
|
2026/01/27-22:29:25.240515 1 kCustomCompression8D supported: 0
|
||||||
|
2026/01/27-22:29:25.240515 1 kCustomCompression97 supported: 0
|
||||||
|
2026/01/27-22:29:25.240516 1 kCustomCompression98 supported: 0
|
||||||
|
2026/01/27-22:29:25.240516 1 kCustomCompressionAC supported: 0
|
||||||
|
2026/01/27-22:29:25.240517 1 kCustomCompressionE9 supported: 0
|
||||||
|
2026/01/27-22:29:25.240517 1 kCustomCompression96 supported: 0
|
||||||
|
2026/01/27-22:29:25.240518 1 kCustomCompressionB1 supported: 0
|
||||||
|
2026/01/27-22:29:25.240518 1 kCustomCompression95 supported: 0
|
||||||
|
2026/01/27-22:29:25.240519 1 kCustomCompression84 supported: 0
|
||||||
|
2026/01/27-22:29:25.240519 1 kCustomCompression91 supported: 0
|
||||||
|
2026/01/27-22:29:25.240520 1 kCustomCompressionAB supported: 0
|
||||||
|
2026/01/27-22:29:25.240520 1 kCustomCompressionB3 supported: 0
|
||||||
|
2026/01/27-22:29:25.240521 1 kCustomCompression81 supported: 0
|
||||||
|
2026/01/27-22:29:25.240521 1 kCustomCompressionDC supported: 0
|
||||||
|
2026/01/27-22:29:25.240522 1 kBZip2Compression supported: 0
|
||||||
|
2026/01/27-22:29:25.240523 1 kCustomCompressionBB supported: 0
|
||||||
|
2026/01/27-22:29:25.240523 1 kCustomCompression9C supported: 0
|
||||||
|
2026/01/27-22:29:25.240524 1 kCustomCompressionC9 supported: 0
|
||||||
|
2026/01/27-22:29:25.240525 1 kCustomCompressionCC supported: 0
|
||||||
|
2026/01/27-22:29:25.240525 1 kCustomCompression92 supported: 0
|
||||||
|
2026/01/27-22:29:25.240526 1 kCustomCompressionB9 supported: 0
|
||||||
|
2026/01/27-22:29:25.240526 1 kCustomCompression8F supported: 0
|
||||||
|
2026/01/27-22:29:25.240527 1 kCustomCompression8A supported: 0
|
||||||
|
2026/01/27-22:29:25.240528 1 kCustomCompression9B supported: 0
|
||||||
|
2026/01/27-22:29:25.240528 1 kZSTD supported: 1
|
||||||
|
2026/01/27-22:29:25.240529 1 kCustomCompressionAA supported: 0
|
||||||
|
2026/01/27-22:29:25.240529 1 kCustomCompressionA2 supported: 0
|
||||||
|
2026/01/27-22:29:25.240530 1 kZlibCompression supported: 1
|
||||||
|
2026/01/27-22:29:25.240531 1 kXpressCompression supported: 0
|
||||||
|
2026/01/27-22:29:25.240532 1 kCustomCompressionFD supported: 0
|
||||||
|
2026/01/27-22:29:25.240532 1 kCustomCompressionE2 supported: 0
|
||||||
|
2026/01/27-22:29:25.240533 1 kLZ4HCCompression supported: 1
|
||||||
|
2026/01/27-22:29:25.240534 1 kCustomCompressionA6 supported: 0
|
||||||
|
2026/01/27-22:29:25.240534 1 kCustomCompression85 supported: 0
|
||||||
|
2026/01/27-22:29:25.240535 1 kCustomCompressionA4 supported: 0
|
||||||
|
2026/01/27-22:29:25.240536 1 kCustomCompression86 supported: 0
|
||||||
|
2026/01/27-22:29:25.240536 1 kCustomCompression83 supported: 0
|
||||||
|
2026/01/27-22:29:25.240537 1 kCustomCompression87 supported: 0
|
||||||
|
2026/01/27-22:29:25.240537 1 kCustomCompression89 supported: 0
|
||||||
|
2026/01/27-22:29:25.240538 1 kCustomCompression8C supported: 0
|
||||||
|
2026/01/27-22:29:25.240539 1 kCustomCompressionDB supported: 0
|
||||||
|
2026/01/27-22:29:25.240539 1 kCustomCompressionF3 supported: 0
|
||||||
|
2026/01/27-22:29:25.240540 1 kCustomCompressionE6 supported: 0
|
||||||
|
2026/01/27-22:29:25.240541 1 kCustomCompression8E supported: 0
|
||||||
|
2026/01/27-22:29:25.240541 1 kCustomCompressionDA supported: 0
|
||||||
|
2026/01/27-22:29:25.240542 1 kCustomCompression93 supported: 0
|
||||||
|
2026/01/27-22:29:25.240542 1 kCustomCompression94 supported: 0
|
||||||
|
2026/01/27-22:29:25.240545 1 kCustomCompression9E supported: 0
|
||||||
|
2026/01/27-22:29:25.240545 1 kCustomCompressionB4 supported: 0
|
||||||
|
2026/01/27-22:29:25.240546 1 kCustomCompressionFB supported: 0
|
||||||
|
2026/01/27-22:29:25.240547 1 kCustomCompressionB5 supported: 0
|
||||||
|
2026/01/27-22:29:25.240547 1 kCustomCompressionD5 supported: 0
|
||||||
|
2026/01/27-22:29:25.240548 1 kCustomCompressionB8 supported: 0
|
||||||
|
2026/01/27-22:29:25.240548 1 kCustomCompressionD1 supported: 0
|
||||||
|
2026/01/27-22:29:25.240549 1 kCustomCompressionBA supported: 0
|
||||||
|
2026/01/27-22:29:25.240550 1 kCustomCompressionBC supported: 0
|
||||||
|
2026/01/27-22:29:25.240550 1 kCustomCompressionCE supported: 0
|
||||||
|
2026/01/27-22:29:25.240551 1 kCustomCompressionBD supported: 0
|
||||||
|
2026/01/27-22:29:25.240551 1 kCustomCompressionC4 supported: 0
|
||||||
|
2026/01/27-22:29:25.240552 1 kCustomCompression9A supported: 0
|
||||||
|
2026/01/27-22:29:25.240553 1 kCustomCompression99 supported: 0
|
||||||
|
2026/01/27-22:29:25.240553 1 kCustomCompressionBE supported: 0
|
||||||
|
2026/01/27-22:29:25.240554 1 kCustomCompressionE5 supported: 0
|
||||||
|
2026/01/27-22:29:25.240554 1 kCustomCompressionD9 supported: 0
|
||||||
|
2026/01/27-22:29:25.240555 1 kCustomCompressionC1 supported: 0
|
||||||
|
2026/01/27-22:29:25.240555 1 kCustomCompressionC5 supported: 0
|
||||||
|
2026/01/27-22:29:25.240556 1 kCustomCompressionC2 supported: 0
|
||||||
|
2026/01/27-22:29:25.240557 1 kCustomCompressionA5 supported: 0
|
||||||
|
2026/01/27-22:29:25.240557 1 kCustomCompressionC7 supported: 0
|
||||||
|
2026/01/27-22:29:25.240558 1 kCustomCompressionBF supported: 0
|
||||||
|
2026/01/27-22:29:25.240558 1 kCustomCompressionE8 supported: 0
|
||||||
|
2026/01/27-22:29:25.240559 1 kCustomCompressionC8 supported: 0
|
||||||
|
2026/01/27-22:29:25.240559 1 kCustomCompressionAF supported: 0
|
||||||
|
2026/01/27-22:29:25.240560 1 kCustomCompressionCA supported: 0
|
||||||
|
2026/01/27-22:29:25.240561 1 kCustomCompressionCD supported: 0
|
||||||
|
2026/01/27-22:29:25.240561 1 kCustomCompressionC0 supported: 0
|
||||||
|
2026/01/27-22:29:25.240562 1 kCustomCompressionCF supported: 0
|
||||||
|
2026/01/27-22:29:25.240562 1 kCustomCompressionF9 supported: 0
|
||||||
|
2026/01/27-22:29:25.240563 1 kCustomCompressionD0 supported: 0
|
||||||
|
2026/01/27-22:29:25.240564 1 kCustomCompressionD2 supported: 0
|
||||||
|
2026/01/27-22:29:25.240564 1 kCustomCompressionAD supported: 0
|
||||||
|
2026/01/27-22:29:25.240565 1 kCustomCompressionD3 supported: 0
|
||||||
|
2026/01/27-22:29:25.240566 1 kCustomCompressionD4 supported: 0
|
||||||
|
2026/01/27-22:29:25.240566 1 kCustomCompressionD7 supported: 0
|
||||||
|
2026/01/27-22:29:25.240567 1 kCustomCompression82 supported: 0
|
||||||
|
2026/01/27-22:29:25.240567 1 kCustomCompressionDD supported: 0
|
||||||
|
2026/01/27-22:29:25.240568 1 kCustomCompressionC3 supported: 0
|
||||||
|
2026/01/27-22:29:25.240568 1 kCustomCompressionEE supported: 0
|
||||||
|
2026/01/27-22:29:25.240569 1 kCustomCompressionDE supported: 0
|
||||||
|
2026/01/27-22:29:25.240569 1 kCustomCompressionDF supported: 0
|
||||||
|
2026/01/27-22:29:25.240570 1 kCustomCompressionA7 supported: 0
|
||||||
|
2026/01/27-22:29:25.240570 1 kCustomCompressionE0 supported: 0
|
||||||
|
2026/01/27-22:29:25.240570 1 kCustomCompressionF1 supported: 0
|
||||||
|
2026/01/27-22:29:25.240571 1 kCustomCompressionE1 supported: 0
|
||||||
|
2026/01/27-22:29:25.240571 1 kCustomCompressionF5 supported: 0
|
||||||
|
2026/01/27-22:29:25.240572 1 kCustomCompression80 supported: 0
|
||||||
|
2026/01/27-22:29:25.240572 1 kCustomCompressionE3 supported: 0
|
||||||
|
2026/01/27-22:29:25.240573 1 kCustomCompressionE4 supported: 0
|
||||||
|
2026/01/27-22:29:25.240573 1 kCustomCompressionB0 supported: 0
|
||||||
|
2026/01/27-22:29:25.240574 1 kCustomCompressionEA supported: 0
|
||||||
|
2026/01/27-22:29:25.240574 1 kCustomCompressionFA supported: 0
|
||||||
|
2026/01/27-22:29:25.240575 1 kCustomCompressionE7 supported: 0
|
||||||
|
2026/01/27-22:29:25.240575 1 kCustomCompressionAE supported: 0
|
||||||
|
2026/01/27-22:29:25.240576 1 kCustomCompressionEB supported: 0
|
||||||
|
2026/01/27-22:29:25.240576 1 kCustomCompressionED supported: 0
|
||||||
|
2026/01/27-22:29:25.240577 1 kCustomCompressionB6 supported: 0
|
||||||
|
2026/01/27-22:29:25.240579 1 kCustomCompressionEF supported: 0
|
||||||
|
2026/01/27-22:29:25.240580 1 kCustomCompressionF0 supported: 0
|
||||||
|
2026/01/27-22:29:25.240580 1 kCustomCompressionB7 supported: 0
|
||||||
|
2026/01/27-22:29:25.240581 1 kCustomCompressionF2 supported: 0
|
||||||
|
2026/01/27-22:29:25.240581 1 kCustomCompressionA1 supported: 0
|
||||||
|
2026/01/27-22:29:25.240582 1 kCustomCompressionF4 supported: 0
|
||||||
|
2026/01/27-22:29:25.240582 1 kSnappyCompression supported: 1
|
||||||
|
2026/01/27-22:29:25.240583 1 kCustomCompressionF6 supported: 0
|
||||||
|
2026/01/27-22:29:25.240584 1 Fast CRC32 supported: Supported on Arm64
|
||||||
|
2026/01/27-22:29:25.240584 1 DMutex implementation: pthread_mutex_t
|
||||||
|
2026/01/27-22:29:25.240585 1 Jemalloc supported: 1
|
||||||
|
2026/01/27-22:29:25.241055 1 [db/version_set.cc:6190] Recovering from manifest file: /data/db/MANIFEST-000020
|
||||||
|
2026/01/27-22:29:25.241240 1 [db/column_family.cc:693] --------------- Options for column family [default]:
|
||||||
|
2026/01/27-22:29:25.241243 1 Options.comparator: leveldb.BytewiseComparator
|
||||||
|
2026/01/27-22:29:25.241244 1 Options.merge_operator: None
|
||||||
|
2026/01/27-22:29:25.241245 1 Options.compaction_filter: None
|
||||||
|
2026/01/27-22:29:25.241246 1 Options.compaction_filter_factory: None
|
||||||
|
2026/01/27-22:29:25.241246 1 Options.sst_partitioner_factory: None
|
||||||
|
2026/01/27-22:29:25.241247 1 Options.memtable_factory: SkipListFactory
|
||||||
|
2026/01/27-22:29:25.241248 1 Options.table_factory: BlockBasedTable
|
||||||
|
2026/01/27-22:29:25.241278 1 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0xffff898d15a0)
|
||||||
|
cache_index_and_filter_blocks: 0
|
||||||
|
cache_index_and_filter_blocks_with_high_priority: 1
|
||||||
|
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||||
|
pin_top_level_index_and_filter: 1
|
||||||
|
index_type: 0
|
||||||
|
data_block_index_type: 0
|
||||||
|
index_shortening: 1
|
||||||
|
data_block_hash_table_util_ratio: 0.750000
|
||||||
|
checksum: 4
|
||||||
|
no_block_cache: 0
|
||||||
|
block_cache: 0xffff8986bd90
|
||||||
|
block_cache_name: LRUCache
|
||||||
|
block_cache_options:
|
||||||
|
capacity : 33554432
|
||||||
|
num_shard_bits : 6
|
||||||
|
strict_capacity_limit : 0
|
||||||
|
memory_allocator : None
|
||||||
|
high_pri_pool_ratio: 0.500
|
||||||
|
low_pri_pool_ratio: 0.000
|
||||||
|
persistent_cache: (nil)
|
||||||
|
block_size: 4096
|
||||||
|
block_size_deviation: 10
|
||||||
|
block_restart_interval: 16
|
||||||
|
index_block_restart_interval: 1
|
||||||
|
metadata_block_size: 4096
|
||||||
|
partition_filters: 0
|
||||||
|
use_delta_encoding: 1
|
||||||
|
filter_policy: nullptr
|
||||||
|
user_defined_index_factory: nullptr
|
||||||
|
fail_if_no_udi_on_open: 0
|
||||||
|
whole_key_filtering: 1
|
||||||
|
verify_compression: 0
|
||||||
|
read_amp_bytes_per_bit: 0
|
||||||
|
format_version: 6
|
||||||
|
enable_index_compression: 1
|
||||||
|
block_align: 0
|
||||||
|
max_auto_readahead_size: 262144
|
||||||
|
prepopulate_block_cache: 0
|
||||||
|
initial_auto_readahead_size: 8192
|
||||||
|
num_file_reads_for_auto_readahead: 2
|
||||||
|
2026/01/27-22:29:25.241289 1 Options.write_buffer_size: 67108864
|
||||||
|
2026/01/27-22:29:25.241289 1 Options.max_write_buffer_number: 4
|
||||||
|
2026/01/27-22:29:25.241291 1 Options.compression[0]: NoCompression
|
||||||
|
2026/01/27-22:29:25.241291 1 Options.compression[1]: NoCompression
|
||||||
|
2026/01/27-22:29:25.241292 1 Options.compression[2]: Snappy
|
||||||
|
2026/01/27-22:29:25.241292 1 Options.compression[3]: Snappy
|
||||||
|
2026/01/27-22:29:25.241293 1 Options.compression[4]: Snappy
|
||||||
|
2026/01/27-22:29:25.241293 1 Options.compression[5]: Snappy
|
||||||
|
2026/01/27-22:29:25.241294 1 Options.compression[6]: Snappy
|
||||||
|
2026/01/27-22:29:25.241294 1 Options.bottommost_compression: Disabled
|
||||||
|
2026/01/27-22:29:25.241295 1 Options.prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:29:25.241295 1 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:29:25.241296 1 Options.num_levels: 7
|
||||||
|
2026/01/27-22:29:25.241296 1 Options.min_write_buffer_number_to_merge: 1
|
||||||
|
2026/01/27-22:29:25.241297 1 Options.max_write_buffer_size_to_maintain: 0
|
||||||
|
2026/01/27-22:29:25.241297 1 Options.bottommost_compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:29:25.241298 1 Options.bottommost_compression_opts.level: 32767
|
||||||
|
2026/01/27-22:29:25.241298 1 Options.bottommost_compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:29:25.241299 1 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:29:25.241299 1 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:29:25.241300 1 Options.bottommost_compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:29:25.241301 1 Options.bottommost_compression_opts.enabled: false
|
||||||
|
2026/01/27-22:29:25.241301 1 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:29:25.241302 1 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:29:25.241302 1 Options.compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:29:25.241303 1 Options.compression_opts.level: 32767
|
||||||
|
2026/01/27-22:29:25.241303 1 Options.compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:29:25.241304 1 Options.compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:29:25.241304 1 Options.compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:29:25.241304 1 Options.compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:29:25.241305 1 Options.compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:29:25.241305 1 Options.compression_opts.enabled: false
|
||||||
|
2026/01/27-22:29:25.241306 1 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:29:25.241306 1 Options.level0_file_num_compaction_trigger: 4
|
||||||
|
2026/01/27-22:29:25.241307 1 Options.level0_slowdown_writes_trigger: 20
|
||||||
|
2026/01/27-22:29:25.241307 1 Options.level0_stop_writes_trigger: 40
|
||||||
|
2026/01/27-22:29:25.241308 1 Options.target_file_size_base: 134217728
|
||||||
|
2026/01/27-22:29:25.241308 1 Options.target_file_size_multiplier: 1
|
||||||
|
2026/01/27-22:29:25.241309 1 Options.max_bytes_for_level_base: 268435456
|
||||||
|
2026/01/27-22:29:25.241309 1 Options.level_compaction_dynamic_level_bytes: 1
|
||||||
|
2026/01/27-22:29:25.241310 1 Options.max_bytes_for_level_multiplier: 10.000000
|
||||||
|
2026/01/27-22:29:25.241311 1 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||||
|
2026/01/27-22:29:25.241311 1 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||||
|
2026/01/27-22:29:25.241312 1 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||||
|
2026/01/27-22:29:25.241312 1 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||||
|
2026/01/27-22:29:25.241313 1 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||||
|
2026/01/27-22:29:25.241313 1 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||||
|
2026/01/27-22:29:25.241314 1 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||||
|
2026/01/27-22:29:25.241314 1 Options.max_sequential_skip_in_iterations: 8
|
||||||
|
2026/01/27-22:29:25.241315 1 Options.memtable_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:29:25.241315 1 Options.memtable_avg_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:29:25.241316 1 Options.max_compaction_bytes: 3355443200
|
||||||
|
2026/01/27-22:29:25.241316 1 Options.arena_block_size: 1048576
|
||||||
|
2026/01/27-22:29:25.241317 1 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||||
|
2026/01/27-22:29:25.241317 1 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||||
|
2026/01/27-22:29:25.241318 1 Options.disable_auto_compactions: 0
|
||||||
|
2026/01/27-22:29:25.241318 1 Options.compaction_style: kCompactionStyleLevel
|
||||||
|
2026/01/27-22:29:25.241319 1 Options.compaction_pri: kMinOverlappingRatio
|
||||||
|
2026/01/27-22:29:25.241319 1 Options.compaction_options_universal.size_ratio: 1
|
||||||
|
2026/01/27-22:29:25.241320 1 Options.compaction_options_universal.min_merge_width: 2
|
||||||
|
2026/01/27-22:29:25.241320 1 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||||
|
2026/01/27-22:29:25.241321 1 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||||
|
2026/01/27-22:29:25.241322 1 Options.compaction_options_universal.compression_size_percent: -1
|
||||||
|
2026/01/27-22:29:25.241322 1 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||||
|
2026/01/27-22:29:25.241323 1 Options.compaction_options_universal.max_read_amp: -1
|
||||||
|
2026/01/27-22:29:25.241323 1 Options.compaction_options_universal.reduce_file_locking: 0
|
||||||
|
2026/01/27-22:29:25.241324 1 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||||
|
2026/01/27-22:29:25.241324 1 Options.compaction_options_fifo.allow_compaction: 0
|
||||||
|
2026/01/27-22:29:25.241326 1 Options.table_properties_collectors:
|
||||||
|
2026/01/27-22:29:25.241327 1 Options.inplace_update_support: 0
|
||||||
|
2026/01/27-22:29:25.241327 1 Options.inplace_update_num_locks: 10000
|
||||||
|
2026/01/27-22:29:25.241328 1 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||||
|
2026/01/27-22:29:25.241329 1 Options.memtable_whole_key_filtering: 0
|
||||||
|
2026/01/27-22:29:25.241329 1 Options.memtable_huge_page_size: 0
|
||||||
|
2026/01/27-22:29:25.241329 1 Options.bloom_locality: 0
|
||||||
|
2026/01/27-22:29:25.241330 1 Options.max_successive_merges: 0
|
||||||
|
2026/01/27-22:29:25.241330 1 Options.strict_max_successive_merges: 0
|
||||||
|
2026/01/27-22:29:25.241331 1 Options.optimize_filters_for_hits: 0
|
||||||
|
2026/01/27-22:29:25.241331 1 Options.paranoid_file_checks: 0
|
||||||
|
2026/01/27-22:29:25.241332 1 Options.force_consistency_checks: 1
|
||||||
|
2026/01/27-22:29:25.241332 1 Options.report_bg_io_stats: 0
|
||||||
|
2026/01/27-22:29:25.241333 1 Options.disallow_memtable_writes: 0
|
||||||
|
2026/01/27-22:29:25.241333 1 Options.ttl: 2592000
|
||||||
|
2026/01/27-22:29:25.241334 1 Options.periodic_compaction_seconds: 0
|
||||||
|
2026/01/27-22:29:25.241334 1 Options.default_temperature: kUnknown
|
||||||
|
2026/01/27-22:29:25.241335 1 Options.preclude_last_level_data_seconds: 0
|
||||||
|
2026/01/27-22:29:25.241335 1 Options.preserve_internal_time_seconds: 0
|
||||||
|
2026/01/27-22:29:25.241336 1 Options.enable_blob_files: false
|
||||||
|
2026/01/27-22:29:25.241336 1 Options.min_blob_size: 0
|
||||||
|
2026/01/27-22:29:25.241337 1 Options.blob_file_size: 268435456
|
||||||
|
2026/01/27-22:29:25.241337 1 Options.blob_compression_type: NoCompression
|
||||||
|
2026/01/27-22:29:25.241338 1 Options.enable_blob_garbage_collection: false
|
||||||
|
2026/01/27-22:29:25.241338 1 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||||
|
2026/01/27-22:29:25.241339 1 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||||
|
2026/01/27-22:29:25.241340 1 Options.blob_compaction_readahead_size: 0
|
||||||
|
2026/01/27-22:29:25.241340 1 Options.blob_file_starting_level: 0
|
||||||
|
2026/01/27-22:29:25.241341 1 Options.experimental_mempurge_threshold: 0.000000
|
||||||
|
2026/01/27-22:29:25.241341 1 Options.memtable_max_range_deletions: 0
|
||||||
|
2026/01/27-22:29:25.241342 1 Options.cf_allow_ingest_behind: false
|
||||||
|
2026/01/27-22:29:25.242680 1 [WARN] [db/db_impl/db_impl_open.cc:2688] DB::Open() failed: Invalid argument: Column families not opened: index, search, stream, propagate, pubsub, zset_score, metadata
|
||||||
|
2026/01/27-22:29:25.242737 1 [db/db_impl/db_impl.cc:467] Shutdown: canceling all background work
|
||||||
|
2026/01/27-22:29:25.242782 1 [db/db_impl/db_impl.cc:681] Shutdown complete
|
||||||
1449
local-dev/data/kvrocks/db/LOG.old.1769552979167350
Normal file
1449
local-dev/data/kvrocks/db/LOG.old.1769552979167350
Normal file
File diff suppressed because it is too large
Load Diff
391
local-dev/data/kvrocks/db/LOG.old.1769552979169205
Normal file
391
local-dev/data/kvrocks/db/LOG.old.1769552979169205
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
2026/01/27-22:29:39.168333 1 RocksDB version: 10.6.2
|
||||||
|
2026/01/27-22:29:39.168394 1 Git sha 0
|
||||||
|
2026/01/27-22:29:39.168395 1 Compile date 2025-11-08 14:59:16
|
||||||
|
2026/01/27-22:29:39.168396 1 DB SUMMARY
|
||||||
|
2026/01/27-22:29:39.168397 1 Host name (Env): db98b7caa3d9
|
||||||
|
2026/01/27-22:29:39.168398 1 DB Session ID: M5A8FG11TXBDE6GONB6Y
|
||||||
|
2026/01/27-22:29:39.168483 1 CURRENT file: CURRENT
|
||||||
|
2026/01/27-22:29:39.168484 1 IDENTITY file: IDENTITY
|
||||||
|
2026/01/27-22:29:39.168485 1 MANIFEST file: MANIFEST-000025 size: 1092 Bytes
|
||||||
|
2026/01/27-22:29:39.168487 1 SST files in /data/db dir, Total Num: 2, files: 000014.sst 000023.sst
|
||||||
|
2026/01/27-22:29:39.168487 1 Write Ahead Log file in /data/db: 000024.log size: 0 ;
|
||||||
|
2026/01/27-22:29:39.168488 1 Options.error_if_exists: 0
|
||||||
|
2026/01/27-22:29:39.168489 1 Options.create_if_missing: 1
|
||||||
|
2026/01/27-22:29:39.168489 1 Options.paranoid_checks: 1
|
||||||
|
2026/01/27-22:29:39.168490 1 Options.flush_verify_memtable_count: 1
|
||||||
|
2026/01/27-22:29:39.168490 1 Options.compaction_verify_record_count: 1
|
||||||
|
2026/01/27-22:29:39.168491 1 Options.track_and_verify_wals_in_manifest: 0
|
||||||
|
2026/01/27-22:29:39.168491 1 Options.track_and_verify_wals: 0
|
||||||
|
2026/01/27-22:29:39.168492 1 Options.verify_sst_unique_id_in_manifest: 1
|
||||||
|
2026/01/27-22:29:39.168492 1 Options.env: 0xffff9a21d0c0
|
||||||
|
2026/01/27-22:29:39.168493 1 Options.fs: PosixFileSystem
|
||||||
|
2026/01/27-22:29:39.168493 1 Options.info_log: 0xffff9a30f600
|
||||||
|
2026/01/27-22:29:39.168494 1 Options.max_file_opening_threads: 16
|
||||||
|
2026/01/27-22:29:39.168494 1 Options.statistics: 0xffff9a2135b0
|
||||||
|
2026/01/27-22:29:39.168495 1 Options.statistics stats level: 3
|
||||||
|
2026/01/27-22:29:39.168495 1 Options.use_fsync: 0
|
||||||
|
2026/01/27-22:29:39.168496 1 Options.max_log_file_size: 268435456
|
||||||
|
2026/01/27-22:29:39.168496 1 Options.max_manifest_file_size: 67108864
|
||||||
|
2026/01/27-22:29:39.168497 1 Options.log_file_time_to_roll: 0
|
||||||
|
2026/01/27-22:29:39.168497 1 Options.keep_log_file_num: 12
|
||||||
|
2026/01/27-22:29:39.168498 1 Options.recycle_log_file_num: 0
|
||||||
|
2026/01/27-22:29:39.168498 1 Options.allow_fallocate: 1
|
||||||
|
2026/01/27-22:29:39.168499 1 Options.allow_mmap_reads: 0
|
||||||
|
2026/01/27-22:29:39.168499 1 Options.allow_mmap_writes: 0
|
||||||
|
2026/01/27-22:29:39.168500 1 Options.use_direct_reads: 0
|
||||||
|
2026/01/27-22:29:39.168500 1 Options.use_direct_io_for_flush_and_compaction: 0
|
||||||
|
2026/01/27-22:29:39.168501 1 Options.create_missing_column_families: 1
|
||||||
|
2026/01/27-22:29:39.168501 1 Options.db_log_dir:
|
||||||
|
2026/01/27-22:29:39.168502 1 Options.wal_dir:
|
||||||
|
2026/01/27-22:29:39.168502 1 Options.table_cache_numshardbits: 6
|
||||||
|
2026/01/27-22:29:39.168503 1 Options.WAL_ttl_seconds: 10800
|
||||||
|
2026/01/27-22:29:39.168503 1 Options.WAL_size_limit_MB: 16384
|
||||||
|
2026/01/27-22:29:39.168504 1 Options.max_write_batch_group_size_bytes: 1048576
|
||||||
|
2026/01/27-22:29:39.168504 1 Options.manifest_preallocation_size: 4194304
|
||||||
|
2026/01/27-22:29:39.168505 1 Options.is_fd_close_on_exec: 1
|
||||||
|
2026/01/27-22:29:39.168505 1 Options.advise_random_on_open: 1
|
||||||
|
2026/01/27-22:29:39.168506 1 Options.db_write_buffer_size: 0
|
||||||
|
2026/01/27-22:29:39.168506 1 Options.write_buffer_manager: 0xffff9a26bfc0
|
||||||
|
2026/01/27-22:29:39.168507 1 Options.use_adaptive_mutex: 0
|
||||||
|
2026/01/27-22:29:39.168507 1 Options.rate_limiter: 0xffff9a236000
|
||||||
|
2026/01/27-22:29:39.168508 1 Options.sst_file_manager.rate_bytes_per_sec: 0
|
||||||
|
2026/01/27-22:29:39.168508 1 Options.wal_recovery_mode: 2
|
||||||
|
2026/01/27-22:29:39.168509 1 Options.enable_thread_tracking: 0
|
||||||
|
2026/01/27-22:29:39.168509 1 Options.enable_pipelined_write: 0
|
||||||
|
2026/01/27-22:29:39.168509 1 Options.unordered_write: 0
|
||||||
|
2026/01/27-22:29:39.168510 1 Options.allow_concurrent_memtable_write: 1
|
||||||
|
2026/01/27-22:29:39.168510 1 Options.enable_write_thread_adaptive_yield: 1
|
||||||
|
2026/01/27-22:29:39.168511 1 Options.write_thread_max_yield_usec: 100
|
||||||
|
2026/01/27-22:29:39.168511 1 Options.write_thread_slow_yield_usec: 3
|
||||||
|
2026/01/27-22:29:39.168512 1 Options.row_cache: None
|
||||||
|
2026/01/27-22:29:39.168512 1 Options.wal_filter: None
|
||||||
|
2026/01/27-22:29:39.168513 1 Options.avoid_flush_during_recovery: 0
|
||||||
|
2026/01/27-22:29:39.168513 1 Options.allow_ingest_behind: 0
|
||||||
|
2026/01/27-22:29:39.168514 1 Options.two_write_queues: 0
|
||||||
|
2026/01/27-22:29:39.168514 1 Options.manual_wal_flush: 0
|
||||||
|
2026/01/27-22:29:39.168515 1 Options.wal_compression: 0
|
||||||
|
2026/01/27-22:29:39.168515 1 Options.background_close_inactive_wals: 0
|
||||||
|
2026/01/27-22:29:39.168516 1 Options.atomic_flush: 0
|
||||||
|
2026/01/27-22:29:39.168516 1 Options.avoid_unnecessary_blocking_io: 1
|
||||||
|
2026/01/27-22:29:39.168516 1 Options.prefix_seek_opt_in_only: 0
|
||||||
|
2026/01/27-22:29:39.168517 1 Options.persist_stats_to_disk: 0
|
||||||
|
2026/01/27-22:29:39.168517 1 Options.write_dbid_to_manifest: 1
|
||||||
|
2026/01/27-22:29:39.168518 1 Options.write_identity_file: 1
|
||||||
|
2026/01/27-22:29:39.168518 1 Options.log_readahead_size: 0
|
||||||
|
2026/01/27-22:29:39.168519 1 Options.file_checksum_gen_factory: Unknown
|
||||||
|
2026/01/27-22:29:39.168519 1 Options.best_efforts_recovery: 0
|
||||||
|
2026/01/27-22:29:39.168520 1 Options.max_bgerror_resume_count: 2147483647
|
||||||
|
2026/01/27-22:29:39.168520 1 Options.bgerror_resume_retry_interval: 1000000
|
||||||
|
2026/01/27-22:29:39.168521 1 Options.allow_data_in_errors: 0
|
||||||
|
2026/01/27-22:29:39.168521 1 Options.db_host_id: __hostname__
|
||||||
|
2026/01/27-22:29:39.168522 1 Options.enforce_single_del_contracts: true
|
||||||
|
2026/01/27-22:29:39.168523 1 Options.metadata_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:29:39.168523 1 Options.wal_write_temperature: kUnknown
|
||||||
|
2026/01/27-22:29:39.168523 1 Options.max_background_jobs: 4
|
||||||
|
2026/01/27-22:29:39.168524 1 Options.max_background_compactions: -1
|
||||||
|
2026/01/27-22:29:39.168524 1 Options.max_subcompactions: 2
|
||||||
|
2026/01/27-22:29:39.168525 1 Options.avoid_flush_during_shutdown: 0
|
||||||
|
2026/01/27-22:29:39.168525 1 Options.writable_file_max_buffer_size: 1048576
|
||||||
|
2026/01/27-22:29:39.168526 1 Options.delayed_write_rate : 536870912000
|
||||||
|
2026/01/27-22:29:39.168527 1 Options.max_total_wal_size: 536870912
|
||||||
|
2026/01/27-22:29:39.168528 1 Options.delete_obsolete_files_period_micros: 21600000000
|
||||||
|
2026/01/27-22:29:39.168528 1 Options.stats_dump_period_sec: 0
|
||||||
|
2026/01/27-22:29:39.168528 1 Options.stats_persist_period_sec: 600
|
||||||
|
2026/01/27-22:29:39.168529 1 Options.stats_history_buffer_size: 1048576
|
||||||
|
2026/01/27-22:29:39.168530 1 Options.max_open_files: 8096
|
||||||
|
2026/01/27-22:29:39.168530 1 Options.bytes_per_sync: 1048576
|
||||||
|
2026/01/27-22:29:39.168531 1 Options.wal_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:29:39.168531 1 Options.strict_bytes_per_sync: 0
|
||||||
|
2026/01/27-22:29:39.168532 1 Options.compaction_readahead_size: 2097152
|
||||||
|
2026/01/27-22:29:39.168532 1 Options.max_background_flushes: -1
|
||||||
|
2026/01/27-22:29:39.168533 1 Options.daily_offpeak_time_utc:
|
||||||
|
2026/01/27-22:29:39.168533 1 Compression algorithms supported:
|
||||||
|
2026/01/27-22:29:39.168534 1 kCustomCompressionFE supported: 0
|
||||||
|
2026/01/27-22:29:39.168534 1 kCustomCompressionFC supported: 0
|
||||||
|
2026/01/27-22:29:39.168535 1 kCustomCompressionF8 supported: 0
|
||||||
|
2026/01/27-22:29:39.168535 1 kCustomCompressionF7 supported: 0
|
||||||
|
2026/01/27-22:29:39.168536 1 kCustomCompressionB2 supported: 0
|
||||||
|
2026/01/27-22:29:39.168537 1 kLZ4Compression supported: 1
|
||||||
|
2026/01/27-22:29:39.168537 1 kCustomCompression88 supported: 0
|
||||||
|
2026/01/27-22:29:39.168538 1 kCustomCompressionD8 supported: 0
|
||||||
|
2026/01/27-22:29:39.168538 1 kCustomCompression9F supported: 0
|
||||||
|
2026/01/27-22:29:39.168539 1 kCustomCompressionD6 supported: 0
|
||||||
|
2026/01/27-22:29:39.168539 1 kCustomCompressionA9 supported: 0
|
||||||
|
2026/01/27-22:29:39.168540 1 kCustomCompressionEC supported: 0
|
||||||
|
2026/01/27-22:29:39.168540 1 kCustomCompressionA3 supported: 0
|
||||||
|
2026/01/27-22:29:39.168541 1 kCustomCompressionCB supported: 0
|
||||||
|
2026/01/27-22:29:39.168541 1 kCustomCompression90 supported: 0
|
||||||
|
2026/01/27-22:29:39.168542 1 kCustomCompressionA0 supported: 0
|
||||||
|
2026/01/27-22:29:39.168542 1 kCustomCompressionC6 supported: 0
|
||||||
|
2026/01/27-22:29:39.168543 1 kCustomCompression9D supported: 0
|
||||||
|
2026/01/27-22:29:39.168543 1 kCustomCompression8B supported: 0
|
||||||
|
2026/01/27-22:29:39.168544 1 kCustomCompressionA8 supported: 0
|
||||||
|
2026/01/27-22:29:39.168544 1 kCustomCompression8D supported: 0
|
||||||
|
2026/01/27-22:29:39.168545 1 kCustomCompression97 supported: 0
|
||||||
|
2026/01/27-22:29:39.168545 1 kCustomCompression98 supported: 0
|
||||||
|
2026/01/27-22:29:39.168546 1 kCustomCompressionAC supported: 0
|
||||||
|
2026/01/27-22:29:39.168546 1 kCustomCompressionE9 supported: 0
|
||||||
|
2026/01/27-22:29:39.168547 1 kCustomCompression96 supported: 0
|
||||||
|
2026/01/27-22:29:39.168547 1 kCustomCompressionB1 supported: 0
|
||||||
|
2026/01/27-22:29:39.168548 1 kCustomCompression95 supported: 0
|
||||||
|
2026/01/27-22:29:39.168548 1 kCustomCompression84 supported: 0
|
||||||
|
2026/01/27-22:29:39.168549 1 kCustomCompression91 supported: 0
|
||||||
|
2026/01/27-22:29:39.168549 1 kCustomCompressionAB supported: 0
|
||||||
|
2026/01/27-22:29:39.168550 1 kCustomCompressionB3 supported: 0
|
||||||
|
2026/01/27-22:29:39.168550 1 kCustomCompression81 supported: 0
|
||||||
|
2026/01/27-22:29:39.168551 1 kCustomCompressionDC supported: 0
|
||||||
|
2026/01/27-22:29:39.168551 1 kBZip2Compression supported: 0
|
||||||
|
2026/01/27-22:29:39.168552 1 kCustomCompressionBB supported: 0
|
||||||
|
2026/01/27-22:29:39.168552 1 kCustomCompression9C supported: 0
|
||||||
|
2026/01/27-22:29:39.168553 1 kCustomCompressionC9 supported: 0
|
||||||
|
2026/01/27-22:29:39.168553 1 kCustomCompressionCC supported: 0
|
||||||
|
2026/01/27-22:29:39.168554 1 kCustomCompression92 supported: 0
|
||||||
|
2026/01/27-22:29:39.168554 1 kCustomCompressionB9 supported: 0
|
||||||
|
2026/01/27-22:29:39.168554 1 kCustomCompression8F supported: 0
|
||||||
|
2026/01/27-22:29:39.168555 1 kCustomCompression8A supported: 0
|
||||||
|
2026/01/27-22:29:39.168555 1 kCustomCompression9B supported: 0
|
||||||
|
2026/01/27-22:29:39.168556 1 kZSTD supported: 1
|
||||||
|
2026/01/27-22:29:39.168556 1 kCustomCompressionAA supported: 0
|
||||||
|
2026/01/27-22:29:39.168557 1 kCustomCompressionA2 supported: 0
|
||||||
|
2026/01/27-22:29:39.168558 1 kZlibCompression supported: 1
|
||||||
|
2026/01/27-22:29:39.168558 1 kXpressCompression supported: 0
|
||||||
|
2026/01/27-22:29:39.168559 1 kCustomCompressionFD supported: 0
|
||||||
|
2026/01/27-22:29:39.168559 1 kCustomCompressionE2 supported: 0
|
||||||
|
2026/01/27-22:29:39.168560 1 kLZ4HCCompression supported: 1
|
||||||
|
2026/01/27-22:29:39.168560 1 kCustomCompressionA6 supported: 0
|
||||||
|
2026/01/27-22:29:39.168561 1 kCustomCompression85 supported: 0
|
||||||
|
2026/01/27-22:29:39.168561 1 kCustomCompressionA4 supported: 0
|
||||||
|
2026/01/27-22:29:39.168562 1 kCustomCompression86 supported: 0
|
||||||
|
2026/01/27-22:29:39.168562 1 kCustomCompression83 supported: 0
|
||||||
|
2026/01/27-22:29:39.168562 1 kCustomCompression87 supported: 0
|
||||||
|
2026/01/27-22:29:39.168563 1 kCustomCompression89 supported: 0
|
||||||
|
2026/01/27-22:29:39.168563 1 kCustomCompression8C supported: 0
|
||||||
|
2026/01/27-22:29:39.168564 1 kCustomCompressionDB supported: 0
|
||||||
|
2026/01/27-22:29:39.168564 1 kCustomCompressionF3 supported: 0
|
||||||
|
2026/01/27-22:29:39.168565 1 kCustomCompressionE6 supported: 0
|
||||||
|
2026/01/27-22:29:39.168565 1 kCustomCompression8E supported: 0
|
||||||
|
2026/01/27-22:29:39.168566 1 kCustomCompressionDA supported: 0
|
||||||
|
2026/01/27-22:29:39.168566 1 kCustomCompression93 supported: 0
|
||||||
|
2026/01/27-22:29:39.168567 1 kCustomCompression94 supported: 0
|
||||||
|
2026/01/27-22:29:39.168570 1 kCustomCompression9E supported: 0
|
||||||
|
2026/01/27-22:29:39.168570 1 kCustomCompressionB4 supported: 0
|
||||||
|
2026/01/27-22:29:39.168571 1 kCustomCompressionFB supported: 0
|
||||||
|
2026/01/27-22:29:39.168571 1 kCustomCompressionB5 supported: 0
|
||||||
|
2026/01/27-22:29:39.168572 1 kCustomCompressionD5 supported: 0
|
||||||
|
2026/01/27-22:29:39.168572 1 kCustomCompressionB8 supported: 0
|
||||||
|
2026/01/27-22:29:39.168572 1 kCustomCompressionD1 supported: 0
|
||||||
|
2026/01/27-22:29:39.168573 1 kCustomCompressionBA supported: 0
|
||||||
|
2026/01/27-22:29:39.168573 1 kCustomCompressionBC supported: 0
|
||||||
|
2026/01/27-22:29:39.168574 1 kCustomCompressionCE supported: 0
|
||||||
|
2026/01/27-22:29:39.168574 1 kCustomCompressionBD supported: 0
|
||||||
|
2026/01/27-22:29:39.168575 1 kCustomCompressionC4 supported: 0
|
||||||
|
2026/01/27-22:29:39.168575 1 kCustomCompression9A supported: 0
|
||||||
|
2026/01/27-22:29:39.168577 1 kCustomCompression99 supported: 0
|
||||||
|
2026/01/27-22:29:39.168578 1 kCustomCompressionBE supported: 0
|
||||||
|
2026/01/27-22:29:39.168578 1 kCustomCompressionE5 supported: 0
|
||||||
|
2026/01/27-22:29:39.168579 1 kCustomCompressionD9 supported: 0
|
||||||
|
2026/01/27-22:29:39.168579 1 kCustomCompressionC1 supported: 0
|
||||||
|
2026/01/27-22:29:39.168580 1 kCustomCompressionC5 supported: 0
|
||||||
|
2026/01/27-22:29:39.168580 1 kCustomCompressionC2 supported: 0
|
||||||
|
2026/01/27-22:29:39.168581 1 kCustomCompressionA5 supported: 0
|
||||||
|
2026/01/27-22:29:39.168581 1 kCustomCompressionC7 supported: 0
|
||||||
|
2026/01/27-22:29:39.168581 1 kCustomCompressionBF supported: 0
|
||||||
|
2026/01/27-22:29:39.168582 1 kCustomCompressionE8 supported: 0
|
||||||
|
2026/01/27-22:29:39.168582 1 kCustomCompressionC8 supported: 0
|
||||||
|
2026/01/27-22:29:39.168583 1 kCustomCompressionAF supported: 0
|
||||||
|
2026/01/27-22:29:39.168583 1 kCustomCompressionCA supported: 0
|
||||||
|
2026/01/27-22:29:39.168584 1 kCustomCompressionCD supported: 0
|
||||||
|
2026/01/27-22:29:39.168584 1 kCustomCompressionC0 supported: 0
|
||||||
|
2026/01/27-22:29:39.168585 1 kCustomCompressionCF supported: 0
|
||||||
|
2026/01/27-22:29:39.168585 1 kCustomCompressionF9 supported: 0
|
||||||
|
2026/01/27-22:29:39.168586 1 kCustomCompressionD0 supported: 0
|
||||||
|
2026/01/27-22:29:39.168586 1 kCustomCompressionD2 supported: 0
|
||||||
|
2026/01/27-22:29:39.168587 1 kCustomCompressionAD supported: 0
|
||||||
|
2026/01/27-22:29:39.168587 1 kCustomCompressionD3 supported: 0
|
||||||
|
2026/01/27-22:29:39.168588 1 kCustomCompressionD4 supported: 0
|
||||||
|
2026/01/27-22:29:39.168588 1 kCustomCompressionD7 supported: 0
|
||||||
|
2026/01/27-22:29:39.168589 1 kCustomCompression82 supported: 0
|
||||||
|
2026/01/27-22:29:39.168589 1 kCustomCompressionDD supported: 0
|
||||||
|
2026/01/27-22:29:39.168590 1 kCustomCompressionC3 supported: 0
|
||||||
|
2026/01/27-22:29:39.168590 1 kCustomCompressionEE supported: 0
|
||||||
|
2026/01/27-22:29:39.168591 1 kCustomCompressionDE supported: 0
|
||||||
|
2026/01/27-22:29:39.168591 1 kCustomCompressionDF supported: 0
|
||||||
|
2026/01/27-22:29:39.168592 1 kCustomCompressionA7 supported: 0
|
||||||
|
2026/01/27-22:29:39.168592 1 kCustomCompressionE0 supported: 0
|
||||||
|
2026/01/27-22:29:39.168593 1 kCustomCompressionF1 supported: 0
|
||||||
|
2026/01/27-22:29:39.168593 1 kCustomCompressionE1 supported: 0
|
||||||
|
2026/01/27-22:29:39.168594 1 kCustomCompressionF5 supported: 0
|
||||||
|
2026/01/27-22:29:39.168594 1 kCustomCompression80 supported: 0
|
||||||
|
2026/01/27-22:29:39.168595 1 kCustomCompressionE3 supported: 0
|
||||||
|
2026/01/27-22:29:39.168595 1 kCustomCompressionE4 supported: 0
|
||||||
|
2026/01/27-22:29:39.168596 1 kCustomCompressionB0 supported: 0
|
||||||
|
2026/01/27-22:29:39.168596 1 kCustomCompressionEA supported: 0
|
||||||
|
2026/01/27-22:29:39.168597 1 kCustomCompressionFA supported: 0
|
||||||
|
2026/01/27-22:29:39.168597 1 kCustomCompressionE7 supported: 0
|
||||||
|
2026/01/27-22:29:39.168598 1 kCustomCompressionAE supported: 0
|
||||||
|
2026/01/27-22:29:39.168598 1 kCustomCompressionEB supported: 0
|
||||||
|
2026/01/27-22:29:39.168598 1 kCustomCompressionED supported: 0
|
||||||
|
2026/01/27-22:29:39.168599 1 kCustomCompressionB6 supported: 0
|
||||||
|
2026/01/27-22:29:39.168599 1 kCustomCompressionEF supported: 0
|
||||||
|
2026/01/27-22:29:39.168600 1 kCustomCompressionF0 supported: 0
|
||||||
|
2026/01/27-22:29:39.168600 1 kCustomCompressionB7 supported: 0
|
||||||
|
2026/01/27-22:29:39.168601 1 kCustomCompressionF2 supported: 0
|
||||||
|
2026/01/27-22:29:39.168601 1 kCustomCompressionA1 supported: 0
|
||||||
|
2026/01/27-22:29:39.168602 1 kCustomCompressionF4 supported: 0
|
||||||
|
2026/01/27-22:29:39.168602 1 kSnappyCompression supported: 1
|
||||||
|
2026/01/27-22:29:39.168603 1 kCustomCompressionF6 supported: 0
|
||||||
|
2026/01/27-22:29:39.168604 1 Fast CRC32 supported: Supported on Arm64
|
||||||
|
2026/01/27-22:29:39.168605 1 DMutex implementation: pthread_mutex_t
|
||||||
|
2026/01/27-22:29:39.168605 1 Jemalloc supported: 1
|
||||||
|
2026/01/27-22:29:39.168746 1 [db/version_set.cc:6190] Recovering from manifest file: /data/db/MANIFEST-000025
|
||||||
|
2026/01/27-22:29:39.168844 1 [db/column_family.cc:693] --------------- Options for column family [default]:
|
||||||
|
2026/01/27-22:29:39.168846 1 Options.comparator: leveldb.BytewiseComparator
|
||||||
|
2026/01/27-22:29:39.168846 1 Options.merge_operator: None
|
||||||
|
2026/01/27-22:29:39.168847 1 Options.compaction_filter: None
|
||||||
|
2026/01/27-22:29:39.168847 1 Options.compaction_filter_factory: None
|
||||||
|
2026/01/27-22:29:39.168848 1 Options.sst_partitioner_factory: None
|
||||||
|
2026/01/27-22:29:39.168848 1 Options.memtable_factory: SkipListFactory
|
||||||
|
2026/01/27-22:29:39.168849 1 Options.table_factory: BlockBasedTable
|
||||||
|
2026/01/27-22:29:39.168863 1 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0xffff9a2d15a0)
|
||||||
|
cache_index_and_filter_blocks: 0
|
||||||
|
cache_index_and_filter_blocks_with_high_priority: 1
|
||||||
|
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||||
|
pin_top_level_index_and_filter: 1
|
||||||
|
index_type: 0
|
||||||
|
data_block_index_type: 0
|
||||||
|
index_shortening: 1
|
||||||
|
data_block_hash_table_util_ratio: 0.750000
|
||||||
|
checksum: 4
|
||||||
|
no_block_cache: 0
|
||||||
|
block_cache: 0xffff9a26bd90
|
||||||
|
block_cache_name: LRUCache
|
||||||
|
block_cache_options:
|
||||||
|
capacity : 33554432
|
||||||
|
num_shard_bits : 6
|
||||||
|
strict_capacity_limit : 0
|
||||||
|
memory_allocator : None
|
||||||
|
high_pri_pool_ratio: 0.500
|
||||||
|
low_pri_pool_ratio: 0.000
|
||||||
|
persistent_cache: (nil)
|
||||||
|
block_size: 4096
|
||||||
|
block_size_deviation: 10
|
||||||
|
block_restart_interval: 16
|
||||||
|
index_block_restart_interval: 1
|
||||||
|
metadata_block_size: 4096
|
||||||
|
partition_filters: 0
|
||||||
|
use_delta_encoding: 1
|
||||||
|
filter_policy: nullptr
|
||||||
|
user_defined_index_factory: nullptr
|
||||||
|
fail_if_no_udi_on_open: 0
|
||||||
|
whole_key_filtering: 1
|
||||||
|
verify_compression: 0
|
||||||
|
read_amp_bytes_per_bit: 0
|
||||||
|
format_version: 6
|
||||||
|
enable_index_compression: 1
|
||||||
|
block_align: 0
|
||||||
|
max_auto_readahead_size: 262144
|
||||||
|
prepopulate_block_cache: 0
|
||||||
|
initial_auto_readahead_size: 8192
|
||||||
|
num_file_reads_for_auto_readahead: 2
|
||||||
|
2026/01/27-22:29:39.168867 1 Options.write_buffer_size: 67108864
|
||||||
|
2026/01/27-22:29:39.168873 1 Options.max_write_buffer_number: 4
|
||||||
|
2026/01/27-22:29:39.168874 1 Options.compression[0]: NoCompression
|
||||||
|
2026/01/27-22:29:39.168875 1 Options.compression[1]: NoCompression
|
||||||
|
2026/01/27-22:29:39.168875 1 Options.compression[2]: Snappy
|
||||||
|
2026/01/27-22:29:39.168876 1 Options.compression[3]: Snappy
|
||||||
|
2026/01/27-22:29:39.168876 1 Options.compression[4]: Snappy
|
||||||
|
2026/01/27-22:29:39.168877 1 Options.compression[5]: Snappy
|
||||||
|
2026/01/27-22:29:39.168877 1 Options.compression[6]: Snappy
|
||||||
|
2026/01/27-22:29:39.168878 1 Options.bottommost_compression: Disabled
|
||||||
|
2026/01/27-22:29:39.168878 1 Options.prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:29:39.168879 1 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||||
|
2026/01/27-22:29:39.168879 1 Options.num_levels: 7
|
||||||
|
2026/01/27-22:29:39.168880 1 Options.min_write_buffer_number_to_merge: 1
|
||||||
|
2026/01/27-22:29:39.168880 1 Options.max_write_buffer_size_to_maintain: 0
|
||||||
|
2026/01/27-22:29:39.168881 1 Options.bottommost_compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:29:39.168881 1 Options.bottommost_compression_opts.level: 32767
|
||||||
|
2026/01/27-22:29:39.168882 1 Options.bottommost_compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:29:39.168882 1 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:29:39.168883 1 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:29:39.168883 1 Options.bottommost_compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:29:39.168884 1 Options.bottommost_compression_opts.enabled: false
|
||||||
|
2026/01/27-22:29:39.168884 1 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:29:39.168885 1 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:29:39.168885 1 Options.compression_opts.window_bits: -14
|
||||||
|
2026/01/27-22:29:39.168886 1 Options.compression_opts.level: 32767
|
||||||
|
2026/01/27-22:29:39.168886 1 Options.compression_opts.strategy: 0
|
||||||
|
2026/01/27-22:29:39.168887 1 Options.compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-22:29:39.168887 1 Options.compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-22:29:39.168887 1 Options.compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-22:29:39.168888 1 Options.compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-22:29:39.168888 1 Options.compression_opts.enabled: false
|
||||||
|
2026/01/27-22:29:39.168889 1 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-22:29:39.168889 1 Options.level0_file_num_compaction_trigger: 4
|
||||||
|
2026/01/27-22:29:39.168890 1 Options.level0_slowdown_writes_trigger: 20
|
||||||
|
2026/01/27-22:29:39.168890 1 Options.level0_stop_writes_trigger: 40
|
||||||
|
2026/01/27-22:29:39.168891 1 Options.target_file_size_base: 134217728
|
||||||
|
2026/01/27-22:29:39.168891 1 Options.target_file_size_multiplier: 1
|
||||||
|
2026/01/27-22:29:39.168892 1 Options.max_bytes_for_level_base: 268435456
|
||||||
|
2026/01/27-22:29:39.168892 1 Options.level_compaction_dynamic_level_bytes: 1
|
||||||
|
2026/01/27-22:29:39.168893 1 Options.max_bytes_for_level_multiplier: 10.000000
|
||||||
|
2026/01/27-22:29:39.168894 1 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||||
|
2026/01/27-22:29:39.168895 1 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||||
|
2026/01/27-22:29:39.168895 1 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||||
|
2026/01/27-22:29:39.168895 1 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||||
|
2026/01/27-22:29:39.168896 1 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||||
|
2026/01/27-22:29:39.168896 1 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||||
|
2026/01/27-22:29:39.168897 1 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||||
|
2026/01/27-22:29:39.168897 1 Options.max_sequential_skip_in_iterations: 8
|
||||||
|
2026/01/27-22:29:39.168898 1 Options.memtable_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:29:39.168898 1 Options.memtable_avg_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-22:29:39.168899 1 Options.max_compaction_bytes: 3355443200
|
||||||
|
2026/01/27-22:29:39.168899 1 Options.arena_block_size: 1048576
|
||||||
|
2026/01/27-22:29:39.168900 1 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||||
|
2026/01/27-22:29:39.168900 1 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||||
|
2026/01/27-22:29:39.168901 1 Options.disable_auto_compactions: 0
|
||||||
|
2026/01/27-22:29:39.168901 1 Options.compaction_style: kCompactionStyleLevel
|
||||||
|
2026/01/27-22:29:39.168902 1 Options.compaction_pri: kMinOverlappingRatio
|
||||||
|
2026/01/27-22:29:39.168902 1 Options.compaction_options_universal.size_ratio: 1
|
||||||
|
2026/01/27-22:29:39.168903 1 Options.compaction_options_universal.min_merge_width: 2
|
||||||
|
2026/01/27-22:29:39.168903 1 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||||
|
2026/01/27-22:29:39.168904 1 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||||
|
2026/01/27-22:29:39.168904 1 Options.compaction_options_universal.compression_size_percent: -1
|
||||||
|
2026/01/27-22:29:39.168905 1 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||||
|
2026/01/27-22:29:39.168905 1 Options.compaction_options_universal.max_read_amp: -1
|
||||||
|
2026/01/27-22:29:39.168906 1 Options.compaction_options_universal.reduce_file_locking: 0
|
||||||
|
2026/01/27-22:29:39.168906 1 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||||
|
2026/01/27-22:29:39.168907 1 Options.compaction_options_fifo.allow_compaction: 0
|
||||||
|
2026/01/27-22:29:39.168908 1 Options.table_properties_collectors:
|
||||||
|
2026/01/27-22:29:39.168908 1 Options.inplace_update_support: 0
|
||||||
|
2026/01/27-22:29:39.168909 1 Options.inplace_update_num_locks: 10000
|
||||||
|
2026/01/27-22:29:39.168910 1 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||||
|
2026/01/27-22:29:39.168911 1 Options.memtable_whole_key_filtering: 0
|
||||||
|
2026/01/27-22:29:39.168911 1 Options.memtable_huge_page_size: 0
|
||||||
|
2026/01/27-22:29:39.168911 1 Options.bloom_locality: 0
|
||||||
|
2026/01/27-22:29:39.168912 1 Options.max_successive_merges: 0
|
||||||
|
2026/01/27-22:29:39.168912 1 Options.strict_max_successive_merges: 0
|
||||||
|
2026/01/27-22:29:39.168913 1 Options.optimize_filters_for_hits: 0
|
||||||
|
2026/01/27-22:29:39.168913 1 Options.paranoid_file_checks: 0
|
||||||
|
2026/01/27-22:29:39.168914 1 Options.force_consistency_checks: 1
|
||||||
|
2026/01/27-22:29:39.168914 1 Options.report_bg_io_stats: 0
|
||||||
|
2026/01/27-22:29:39.168915 1 Options.disallow_memtable_writes: 0
|
||||||
|
2026/01/27-22:29:39.168915 1 Options.ttl: 2592000
|
||||||
|
2026/01/27-22:29:39.168916 1 Options.periodic_compaction_seconds: 0
|
||||||
|
2026/01/27-22:29:39.168916 1 Options.default_temperature: kUnknown
|
||||||
|
2026/01/27-22:29:39.168917 1 Options.preclude_last_level_data_seconds: 0
|
||||||
|
2026/01/27-22:29:39.168917 1 Options.preserve_internal_time_seconds: 0
|
||||||
|
2026/01/27-22:29:39.168918 1 Options.enable_blob_files: false
|
||||||
|
2026/01/27-22:29:39.168918 1 Options.min_blob_size: 0
|
||||||
|
2026/01/27-22:29:39.168919 1 Options.blob_file_size: 268435456
|
||||||
|
2026/01/27-22:29:39.168919 1 Options.blob_compression_type: NoCompression
|
||||||
|
2026/01/27-22:29:39.168920 1 Options.enable_blob_garbage_collection: false
|
||||||
|
2026/01/27-22:29:39.168920 1 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||||
|
2026/01/27-22:29:39.168921 1 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||||
|
2026/01/27-22:29:39.168921 1 Options.blob_compaction_readahead_size: 0
|
||||||
|
2026/01/27-22:29:39.168922 1 Options.blob_file_starting_level: 0
|
||||||
|
2026/01/27-22:29:39.168922 1 Options.experimental_mempurge_threshold: 0.000000
|
||||||
|
2026/01/27-22:29:39.168923 1 Options.memtable_max_range_deletions: 0
|
||||||
|
2026/01/27-22:29:39.168923 1 Options.cf_allow_ingest_behind: false
|
||||||
|
2026/01/27-22:29:39.168977 1 [WARN] [db/db_impl/db_impl_open.cc:2688] DB::Open() failed: Invalid argument: Column families not opened: index, search, stream, propagate, pubsub, zset_score, metadata
|
||||||
|
2026/01/27-22:29:39.169006 1 [db/db_impl/db_impl.cc:467] Shutdown: canceling all background work
|
||||||
|
2026/01/27-22:29:39.169031 1 [db/db_impl/db_impl.cc:681] Shutdown complete
|
||||||
1468
local-dev/data/kvrocks/db/LOG.old.1769556178501276
Normal file
1468
local-dev/data/kvrocks/db/LOG.old.1769556178501276
Normal file
File diff suppressed because it is too large
Load Diff
391
local-dev/data/kvrocks/db/LOG.old.1769556178503672
Normal file
391
local-dev/data/kvrocks/db/LOG.old.1769556178503672
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
2026/01/27-23:22:58.502039 1 RocksDB version: 10.6.2
|
||||||
|
2026/01/27-23:22:58.502469 1 Git sha 0
|
||||||
|
2026/01/27-23:22:58.502470 1 Compile date 2025-11-08 14:59:16
|
||||||
|
2026/01/27-23:22:58.502472 1 DB SUMMARY
|
||||||
|
2026/01/27-23:22:58.502473 1 Host name (Env): aae070ac4a88
|
||||||
|
2026/01/27-23:22:58.502474 1 DB Session ID: SI1XGUJ3JZXKO7QMB6X0
|
||||||
|
2026/01/27-23:22:58.502586 1 CURRENT file: CURRENT
|
||||||
|
2026/01/27-23:22:58.502587 1 IDENTITY file: IDENTITY
|
||||||
|
2026/01/27-23:22:58.502589 1 MANIFEST file: MANIFEST-000029 size: 1104 Bytes
|
||||||
|
2026/01/27-23:22:58.502590 1 SST files in /data/db dir, Total Num: 2, files: 000014.sst 000023.sst
|
||||||
|
2026/01/27-23:22:58.502591 1 Write Ahead Log file in /data/db: 000028.log size: 86377 ;
|
||||||
|
2026/01/27-23:22:58.502592 1 Options.error_if_exists: 0
|
||||||
|
2026/01/27-23:22:58.502593 1 Options.create_if_missing: 1
|
||||||
|
2026/01/27-23:22:58.502593 1 Options.paranoid_checks: 1
|
||||||
|
2026/01/27-23:22:58.502594 1 Options.flush_verify_memtable_count: 1
|
||||||
|
2026/01/27-23:22:58.502595 1 Options.compaction_verify_record_count: 1
|
||||||
|
2026/01/27-23:22:58.502595 1 Options.track_and_verify_wals_in_manifest: 0
|
||||||
|
2026/01/27-23:22:58.502596 1 Options.track_and_verify_wals: 0
|
||||||
|
2026/01/27-23:22:58.502596 1 Options.verify_sst_unique_id_in_manifest: 1
|
||||||
|
2026/01/27-23:22:58.502597 1 Options.env: 0xffff9341d0c0
|
||||||
|
2026/01/27-23:22:58.502598 1 Options.fs: PosixFileSystem
|
||||||
|
2026/01/27-23:22:58.502599 1 Options.info_log: 0xffff9350f600
|
||||||
|
2026/01/27-23:22:58.502599 1 Options.max_file_opening_threads: 16
|
||||||
|
2026/01/27-23:22:58.502600 1 Options.statistics: 0xffff934135b0
|
||||||
|
2026/01/27-23:22:58.502600 1 Options.statistics stats level: 3
|
||||||
|
2026/01/27-23:22:58.502601 1 Options.use_fsync: 0
|
||||||
|
2026/01/27-23:22:58.502602 1 Options.max_log_file_size: 268435456
|
||||||
|
2026/01/27-23:22:58.502602 1 Options.max_manifest_file_size: 67108864
|
||||||
|
2026/01/27-23:22:58.502603 1 Options.log_file_time_to_roll: 0
|
||||||
|
2026/01/27-23:22:58.502603 1 Options.keep_log_file_num: 12
|
||||||
|
2026/01/27-23:22:58.502604 1 Options.recycle_log_file_num: 0
|
||||||
|
2026/01/27-23:22:58.502605 1 Options.allow_fallocate: 1
|
||||||
|
2026/01/27-23:22:58.502605 1 Options.allow_mmap_reads: 0
|
||||||
|
2026/01/27-23:22:58.502606 1 Options.allow_mmap_writes: 0
|
||||||
|
2026/01/27-23:22:58.502606 1 Options.use_direct_reads: 0
|
||||||
|
2026/01/27-23:22:58.502607 1 Options.use_direct_io_for_flush_and_compaction: 0
|
||||||
|
2026/01/27-23:22:58.502607 1 Options.create_missing_column_families: 1
|
||||||
|
2026/01/27-23:22:58.502608 1 Options.db_log_dir:
|
||||||
|
2026/01/27-23:22:58.502609 1 Options.wal_dir:
|
||||||
|
2026/01/27-23:22:58.502609 1 Options.table_cache_numshardbits: 6
|
||||||
|
2026/01/27-23:22:58.502610 1 Options.WAL_ttl_seconds: 10800
|
||||||
|
2026/01/27-23:22:58.502611 1 Options.WAL_size_limit_MB: 16384
|
||||||
|
2026/01/27-23:22:58.502611 1 Options.max_write_batch_group_size_bytes: 1048576
|
||||||
|
2026/01/27-23:22:58.502612 1 Options.manifest_preallocation_size: 4194304
|
||||||
|
2026/01/27-23:22:58.502612 1 Options.is_fd_close_on_exec: 1
|
||||||
|
2026/01/27-23:22:58.502613 1 Options.advise_random_on_open: 1
|
||||||
|
2026/01/27-23:22:58.502614 1 Options.db_write_buffer_size: 0
|
||||||
|
2026/01/27-23:22:58.502614 1 Options.write_buffer_manager: 0xffff9346bfc0
|
||||||
|
2026/01/27-23:22:58.502615 1 Options.use_adaptive_mutex: 0
|
||||||
|
2026/01/27-23:22:58.502615 1 Options.rate_limiter: 0xffff93436000
|
||||||
|
2026/01/27-23:22:58.502616 1 Options.sst_file_manager.rate_bytes_per_sec: 0
|
||||||
|
2026/01/27-23:22:58.502617 1 Options.wal_recovery_mode: 2
|
||||||
|
2026/01/27-23:22:58.502617 1 Options.enable_thread_tracking: 0
|
||||||
|
2026/01/27-23:22:58.502618 1 Options.enable_pipelined_write: 0
|
||||||
|
2026/01/27-23:22:58.502618 1 Options.unordered_write: 0
|
||||||
|
2026/01/27-23:22:58.502619 1 Options.allow_concurrent_memtable_write: 1
|
||||||
|
2026/01/27-23:22:58.502619 1 Options.enable_write_thread_adaptive_yield: 1
|
||||||
|
2026/01/27-23:22:58.502620 1 Options.write_thread_max_yield_usec: 100
|
||||||
|
2026/01/27-23:22:58.502621 1 Options.write_thread_slow_yield_usec: 3
|
||||||
|
2026/01/27-23:22:58.502621 1 Options.row_cache: None
|
||||||
|
2026/01/27-23:22:58.502622 1 Options.wal_filter: None
|
||||||
|
2026/01/27-23:22:58.502622 1 Options.avoid_flush_during_recovery: 0
|
||||||
|
2026/01/27-23:22:58.502623 1 Options.allow_ingest_behind: 0
|
||||||
|
2026/01/27-23:22:58.502623 1 Options.two_write_queues: 0
|
||||||
|
2026/01/27-23:22:58.502624 1 Options.manual_wal_flush: 0
|
||||||
|
2026/01/27-23:22:58.502625 1 Options.wal_compression: 0
|
||||||
|
2026/01/27-23:22:58.502625 1 Options.background_close_inactive_wals: 0
|
||||||
|
2026/01/27-23:22:58.502626 1 Options.atomic_flush: 0
|
||||||
|
2026/01/27-23:22:58.502626 1 Options.avoid_unnecessary_blocking_io: 1
|
||||||
|
2026/01/27-23:22:58.502627 1 Options.prefix_seek_opt_in_only: 0
|
||||||
|
2026/01/27-23:22:58.502628 1 Options.persist_stats_to_disk: 0
|
||||||
|
2026/01/27-23:22:58.502628 1 Options.write_dbid_to_manifest: 1
|
||||||
|
2026/01/27-23:22:58.502629 1 Options.write_identity_file: 1
|
||||||
|
2026/01/27-23:22:58.502629 1 Options.log_readahead_size: 0
|
||||||
|
2026/01/27-23:22:58.502630 1 Options.file_checksum_gen_factory: Unknown
|
||||||
|
2026/01/27-23:22:58.502630 1 Options.best_efforts_recovery: 0
|
||||||
|
2026/01/27-23:22:58.502631 1 Options.max_bgerror_resume_count: 2147483647
|
||||||
|
2026/01/27-23:22:58.502632 1 Options.bgerror_resume_retry_interval: 1000000
|
||||||
|
2026/01/27-23:22:58.502632 1 Options.allow_data_in_errors: 0
|
||||||
|
2026/01/27-23:22:58.502633 1 Options.db_host_id: __hostname__
|
||||||
|
2026/01/27-23:22:58.502633 1 Options.enforce_single_del_contracts: true
|
||||||
|
2026/01/27-23:22:58.502634 1 Options.metadata_write_temperature: kUnknown
|
||||||
|
2026/01/27-23:22:58.502635 1 Options.wal_write_temperature: kUnknown
|
||||||
|
2026/01/27-23:22:58.502635 1 Options.max_background_jobs: 4
|
||||||
|
2026/01/27-23:22:58.502636 1 Options.max_background_compactions: -1
|
||||||
|
2026/01/27-23:22:58.502637 1 Options.max_subcompactions: 2
|
||||||
|
2026/01/27-23:22:58.502637 1 Options.avoid_flush_during_shutdown: 0
|
||||||
|
2026/01/27-23:22:58.502638 1 Options.writable_file_max_buffer_size: 1048576
|
||||||
|
2026/01/27-23:22:58.502638 1 Options.delayed_write_rate : 536870912000
|
||||||
|
2026/01/27-23:22:58.502640 1 Options.max_total_wal_size: 536870912
|
||||||
|
2026/01/27-23:22:58.502640 1 Options.delete_obsolete_files_period_micros: 21600000000
|
||||||
|
2026/01/27-23:22:58.502641 1 Options.stats_dump_period_sec: 0
|
||||||
|
2026/01/27-23:22:58.502642 1 Options.stats_persist_period_sec: 600
|
||||||
|
2026/01/27-23:22:58.502643 1 Options.stats_history_buffer_size: 1048576
|
||||||
|
2026/01/27-23:22:58.502644 1 Options.max_open_files: 8096
|
||||||
|
2026/01/27-23:22:58.502644 1 Options.bytes_per_sync: 1048576
|
||||||
|
2026/01/27-23:22:58.502645 1 Options.wal_bytes_per_sync: 0
|
||||||
|
2026/01/27-23:22:58.502645 1 Options.strict_bytes_per_sync: 0
|
||||||
|
2026/01/27-23:22:58.502646 1 Options.compaction_readahead_size: 2097152
|
||||||
|
2026/01/27-23:22:58.502646 1 Options.max_background_flushes: -1
|
||||||
|
2026/01/27-23:22:58.502647 1 Options.daily_offpeak_time_utc:
|
||||||
|
2026/01/27-23:22:58.502647 1 Compression algorithms supported:
|
||||||
|
2026/01/27-23:22:58.502648 1 kCustomCompressionFE supported: 0
|
||||||
|
2026/01/27-23:22:58.502649 1 kCustomCompressionFC supported: 0
|
||||||
|
2026/01/27-23:22:58.502649 1 kCustomCompressionF8 supported: 0
|
||||||
|
2026/01/27-23:22:58.502650 1 kCustomCompressionF7 supported: 0
|
||||||
|
2026/01/27-23:22:58.502651 1 kCustomCompressionB2 supported: 0
|
||||||
|
2026/01/27-23:22:58.502651 1 kLZ4Compression supported: 1
|
||||||
|
2026/01/27-23:22:58.502652 1 kCustomCompression88 supported: 0
|
||||||
|
2026/01/27-23:22:58.502653 1 kCustomCompressionD8 supported: 0
|
||||||
|
2026/01/27-23:22:58.502653 1 kCustomCompression9F supported: 0
|
||||||
|
2026/01/27-23:22:58.502654 1 kCustomCompressionD6 supported: 0
|
||||||
|
2026/01/27-23:22:58.502654 1 kCustomCompressionA9 supported: 0
|
||||||
|
2026/01/27-23:22:58.502655 1 kCustomCompressionEC supported: 0
|
||||||
|
2026/01/27-23:22:58.502655 1 kCustomCompressionA3 supported: 0
|
||||||
|
2026/01/27-23:22:58.502656 1 kCustomCompressionCB supported: 0
|
||||||
|
2026/01/27-23:22:58.502657 1 kCustomCompression90 supported: 0
|
||||||
|
2026/01/27-23:22:58.502657 1 kCustomCompressionA0 supported: 0
|
||||||
|
2026/01/27-23:22:58.502658 1 kCustomCompressionC6 supported: 0
|
||||||
|
2026/01/27-23:22:58.502659 1 kCustomCompression9D supported: 0
|
||||||
|
2026/01/27-23:22:58.502659 1 kCustomCompression8B supported: 0
|
||||||
|
2026/01/27-23:22:58.502660 1 kCustomCompressionA8 supported: 0
|
||||||
|
2026/01/27-23:22:58.502660 1 kCustomCompression8D supported: 0
|
||||||
|
2026/01/27-23:22:58.502661 1 kCustomCompression97 supported: 0
|
||||||
|
2026/01/27-23:22:58.502661 1 kCustomCompression98 supported: 0
|
||||||
|
2026/01/27-23:22:58.502662 1 kCustomCompressionAC supported: 0
|
||||||
|
2026/01/27-23:22:58.502662 1 kCustomCompressionE9 supported: 0
|
||||||
|
2026/01/27-23:22:58.502663 1 kCustomCompression96 supported: 0
|
||||||
|
2026/01/27-23:22:58.502663 1 kCustomCompressionB1 supported: 0
|
||||||
|
2026/01/27-23:22:58.502664 1 kCustomCompression95 supported: 0
|
||||||
|
2026/01/27-23:22:58.502664 1 kCustomCompression84 supported: 0
|
||||||
|
2026/01/27-23:22:58.502665 1 kCustomCompression91 supported: 0
|
||||||
|
2026/01/27-23:22:58.502665 1 kCustomCompressionAB supported: 0
|
||||||
|
2026/01/27-23:22:58.502666 1 kCustomCompressionB3 supported: 0
|
||||||
|
2026/01/27-23:22:58.502666 1 kCustomCompression81 supported: 0
|
||||||
|
2026/01/27-23:22:58.502667 1 kCustomCompressionDC supported: 0
|
||||||
|
2026/01/27-23:22:58.502667 1 kBZip2Compression supported: 0
|
||||||
|
2026/01/27-23:22:58.502668 1 kCustomCompressionBB supported: 0
|
||||||
|
2026/01/27-23:22:58.502668 1 kCustomCompression9C supported: 0
|
||||||
|
2026/01/27-23:22:58.502668 1 kCustomCompressionC9 supported: 0
|
||||||
|
2026/01/27-23:22:58.502669 1 kCustomCompressionCC supported: 0
|
||||||
|
2026/01/27-23:22:58.502669 1 kCustomCompression92 supported: 0
|
||||||
|
2026/01/27-23:22:58.502670 1 kCustomCompressionB9 supported: 0
|
||||||
|
2026/01/27-23:22:58.502670 1 kCustomCompression8F supported: 0
|
||||||
|
2026/01/27-23:22:58.502671 1 kCustomCompression8A supported: 0
|
||||||
|
2026/01/27-23:22:58.502671 1 kCustomCompression9B supported: 0
|
||||||
|
2026/01/27-23:22:58.502671 1 kZSTD supported: 1
|
||||||
|
2026/01/27-23:22:58.502672 1 kCustomCompressionAA supported: 0
|
||||||
|
2026/01/27-23:22:58.502672 1 kCustomCompressionA2 supported: 0
|
||||||
|
2026/01/27-23:22:58.502673 1 kZlibCompression supported: 1
|
||||||
|
2026/01/27-23:22:58.502673 1 kXpressCompression supported: 0
|
||||||
|
2026/01/27-23:22:58.502674 1 kCustomCompressionFD supported: 0
|
||||||
|
2026/01/27-23:22:58.502674 1 kCustomCompressionE2 supported: 0
|
||||||
|
2026/01/27-23:22:58.502675 1 kLZ4HCCompression supported: 1
|
||||||
|
2026/01/27-23:22:58.502675 1 kCustomCompressionA6 supported: 0
|
||||||
|
2026/01/27-23:22:58.502676 1 kCustomCompression85 supported: 0
|
||||||
|
2026/01/27-23:22:58.502676 1 kCustomCompressionA4 supported: 0
|
||||||
|
2026/01/27-23:22:58.502676 1 kCustomCompression86 supported: 0
|
||||||
|
2026/01/27-23:22:58.502677 1 kCustomCompression83 supported: 0
|
||||||
|
2026/01/27-23:22:58.502677 1 kCustomCompression87 supported: 0
|
||||||
|
2026/01/27-23:22:58.502678 1 kCustomCompression89 supported: 0
|
||||||
|
2026/01/27-23:22:58.502678 1 kCustomCompression8C supported: 0
|
||||||
|
2026/01/27-23:22:58.502679 1 kCustomCompressionDB supported: 0
|
||||||
|
2026/01/27-23:22:58.502679 1 kCustomCompressionF3 supported: 0
|
||||||
|
2026/01/27-23:22:58.502679 1 kCustomCompressionE6 supported: 0
|
||||||
|
2026/01/27-23:22:58.502680 1 kCustomCompression8E supported: 0
|
||||||
|
2026/01/27-23:22:58.502680 1 kCustomCompressionDA supported: 0
|
||||||
|
2026/01/27-23:22:58.502681 1 kCustomCompression93 supported: 0
|
||||||
|
2026/01/27-23:22:58.502681 1 kCustomCompression94 supported: 0
|
||||||
|
2026/01/27-23:22:58.502685 1 kCustomCompression9E supported: 0
|
||||||
|
2026/01/27-23:22:58.502685 1 kCustomCompressionB4 supported: 0
|
||||||
|
2026/01/27-23:22:58.502686 1 kCustomCompressionFB supported: 0
|
||||||
|
2026/01/27-23:22:58.502686 1 kCustomCompressionB5 supported: 0
|
||||||
|
2026/01/27-23:22:58.502686 1 kCustomCompressionD5 supported: 0
|
||||||
|
2026/01/27-23:22:58.502687 1 kCustomCompressionB8 supported: 0
|
||||||
|
2026/01/27-23:22:58.502687 1 kCustomCompressionD1 supported: 0
|
||||||
|
2026/01/27-23:22:58.502688 1 kCustomCompressionBA supported: 0
|
||||||
|
2026/01/27-23:22:58.502688 1 kCustomCompressionBC supported: 0
|
||||||
|
2026/01/27-23:22:58.502689 1 kCustomCompressionCE supported: 0
|
||||||
|
2026/01/27-23:22:58.502689 1 kCustomCompressionBD supported: 0
|
||||||
|
2026/01/27-23:22:58.502689 1 kCustomCompressionC4 supported: 0
|
||||||
|
2026/01/27-23:22:58.502690 1 kCustomCompression9A supported: 0
|
||||||
|
2026/01/27-23:22:58.502690 1 kCustomCompression99 supported: 0
|
||||||
|
2026/01/27-23:22:58.502691 1 kCustomCompressionBE supported: 0
|
||||||
|
2026/01/27-23:22:58.502691 1 kCustomCompressionE5 supported: 0
|
||||||
|
2026/01/27-23:22:58.502692 1 kCustomCompressionD9 supported: 0
|
||||||
|
2026/01/27-23:22:58.502692 1 kCustomCompressionC1 supported: 0
|
||||||
|
2026/01/27-23:22:58.502693 1 kCustomCompressionC5 supported: 0
|
||||||
|
2026/01/27-23:22:58.502694 1 kCustomCompressionC2 supported: 0
|
||||||
|
2026/01/27-23:22:58.502694 1 kCustomCompressionA5 supported: 0
|
||||||
|
2026/01/27-23:22:58.502695 1 kCustomCompressionC7 supported: 0
|
||||||
|
2026/01/27-23:22:58.502695 1 kCustomCompressionBF supported: 0
|
||||||
|
2026/01/27-23:22:58.502696 1 kCustomCompressionE8 supported: 0
|
||||||
|
2026/01/27-23:22:58.502696 1 kCustomCompressionC8 supported: 0
|
||||||
|
2026/01/27-23:22:58.502697 1 kCustomCompressionAF supported: 0
|
||||||
|
2026/01/27-23:22:58.502698 1 kCustomCompressionCA supported: 0
|
||||||
|
2026/01/27-23:22:58.502698 1 kCustomCompressionCD supported: 0
|
||||||
|
2026/01/27-23:22:58.502699 1 kCustomCompressionC0 supported: 0
|
||||||
|
2026/01/27-23:22:58.502699 1 kCustomCompressionCF supported: 0
|
||||||
|
2026/01/27-23:22:58.502700 1 kCustomCompressionF9 supported: 0
|
||||||
|
2026/01/27-23:22:58.502700 1 kCustomCompressionD0 supported: 0
|
||||||
|
2026/01/27-23:22:58.502701 1 kCustomCompressionD2 supported: 0
|
||||||
|
2026/01/27-23:22:58.502701 1 kCustomCompressionAD supported: 0
|
||||||
|
2026/01/27-23:22:58.502702 1 kCustomCompressionD3 supported: 0
|
||||||
|
2026/01/27-23:22:58.502703 1 kCustomCompressionD4 supported: 0
|
||||||
|
2026/01/27-23:22:58.502703 1 kCustomCompressionD7 supported: 0
|
||||||
|
2026/01/27-23:22:58.502704 1 kCustomCompression82 supported: 0
|
||||||
|
2026/01/27-23:22:58.502704 1 kCustomCompressionDD supported: 0
|
||||||
|
2026/01/27-23:22:58.502705 1 kCustomCompressionC3 supported: 0
|
||||||
|
2026/01/27-23:22:58.502705 1 kCustomCompressionEE supported: 0
|
||||||
|
2026/01/27-23:22:58.502706 1 kCustomCompressionDE supported: 0
|
||||||
|
2026/01/27-23:22:58.502706 1 kCustomCompressionDF supported: 0
|
||||||
|
2026/01/27-23:22:58.502707 1 kCustomCompressionA7 supported: 0
|
||||||
|
2026/01/27-23:22:58.502707 1 kCustomCompressionE0 supported: 0
|
||||||
|
2026/01/27-23:22:58.502708 1 kCustomCompressionF1 supported: 0
|
||||||
|
2026/01/27-23:22:58.502708 1 kCustomCompressionE1 supported: 0
|
||||||
|
2026/01/27-23:22:58.502709 1 kCustomCompressionF5 supported: 0
|
||||||
|
2026/01/27-23:22:58.502709 1 kCustomCompression80 supported: 0
|
||||||
|
2026/01/27-23:22:58.502710 1 kCustomCompressionE3 supported: 0
|
||||||
|
2026/01/27-23:22:58.502711 1 kCustomCompressionE4 supported: 0
|
||||||
|
2026/01/27-23:22:58.502711 1 kCustomCompressionB0 supported: 0
|
||||||
|
2026/01/27-23:22:58.502712 1 kCustomCompressionEA supported: 0
|
||||||
|
2026/01/27-23:22:58.502712 1 kCustomCompressionFA supported: 0
|
||||||
|
2026/01/27-23:22:58.502713 1 kCustomCompressionE7 supported: 0
|
||||||
|
2026/01/27-23:22:58.502713 1 kCustomCompressionAE supported: 0
|
||||||
|
2026/01/27-23:22:58.502714 1 kCustomCompressionEB supported: 0
|
||||||
|
2026/01/27-23:22:58.502714 1 kCustomCompressionED supported: 0
|
||||||
|
2026/01/27-23:22:58.502715 1 kCustomCompressionB6 supported: 0
|
||||||
|
2026/01/27-23:22:58.502715 1 kCustomCompressionEF supported: 0
|
||||||
|
2026/01/27-23:22:58.502716 1 kCustomCompressionF0 supported: 0
|
||||||
|
2026/01/27-23:22:58.502716 1 kCustomCompressionB7 supported: 0
|
||||||
|
2026/01/27-23:22:58.502717 1 kCustomCompressionF2 supported: 0
|
||||||
|
2026/01/27-23:22:58.502717 1 kCustomCompressionA1 supported: 0
|
||||||
|
2026/01/27-23:22:58.502718 1 kCustomCompressionF4 supported: 0
|
||||||
|
2026/01/27-23:22:58.502719 1 kSnappyCompression supported: 1
|
||||||
|
2026/01/27-23:22:58.502719 1 kCustomCompressionF6 supported: 0
|
||||||
|
2026/01/27-23:22:58.502720 1 Fast CRC32 supported: Supported on Arm64
|
||||||
|
2026/01/27-23:22:58.502721 1 DMutex implementation: pthread_mutex_t
|
||||||
|
2026/01/27-23:22:58.502722 1 Jemalloc supported: 1
|
||||||
|
2026/01/27-23:22:58.503054 1 [db/version_set.cc:6190] Recovering from manifest file: /data/db/MANIFEST-000029
|
||||||
|
2026/01/27-23:22:58.503246 1 [db/column_family.cc:693] --------------- Options for column family [default]:
|
||||||
|
2026/01/27-23:22:58.503249 1 Options.comparator: leveldb.BytewiseComparator
|
||||||
|
2026/01/27-23:22:58.503250 1 Options.merge_operator: None
|
||||||
|
2026/01/27-23:22:58.503250 1 Options.compaction_filter: None
|
||||||
|
2026/01/27-23:22:58.503251 1 Options.compaction_filter_factory: None
|
||||||
|
2026/01/27-23:22:58.503251 1 Options.sst_partitioner_factory: None
|
||||||
|
2026/01/27-23:22:58.503252 1 Options.memtable_factory: SkipListFactory
|
||||||
|
2026/01/27-23:22:58.503253 1 Options.table_factory: BlockBasedTable
|
||||||
|
2026/01/27-23:22:58.503273 1 table_factory options: flush_block_policy_factory: FlushBlockBySizePolicyFactory (0xffff934d15a0)
|
||||||
|
cache_index_and_filter_blocks: 0
|
||||||
|
cache_index_and_filter_blocks_with_high_priority: 1
|
||||||
|
pin_l0_filter_and_index_blocks_in_cache: 0
|
||||||
|
pin_top_level_index_and_filter: 1
|
||||||
|
index_type: 0
|
||||||
|
data_block_index_type: 0
|
||||||
|
index_shortening: 1
|
||||||
|
data_block_hash_table_util_ratio: 0.750000
|
||||||
|
checksum: 4
|
||||||
|
no_block_cache: 0
|
||||||
|
block_cache: 0xffff9346bd90
|
||||||
|
block_cache_name: LRUCache
|
||||||
|
block_cache_options:
|
||||||
|
capacity : 33554432
|
||||||
|
num_shard_bits : 6
|
||||||
|
strict_capacity_limit : 0
|
||||||
|
memory_allocator : None
|
||||||
|
high_pri_pool_ratio: 0.500
|
||||||
|
low_pri_pool_ratio: 0.000
|
||||||
|
persistent_cache: (nil)
|
||||||
|
block_size: 4096
|
||||||
|
block_size_deviation: 10
|
||||||
|
block_restart_interval: 16
|
||||||
|
index_block_restart_interval: 1
|
||||||
|
metadata_block_size: 4096
|
||||||
|
partition_filters: 0
|
||||||
|
use_delta_encoding: 1
|
||||||
|
filter_policy: nullptr
|
||||||
|
user_defined_index_factory: nullptr
|
||||||
|
fail_if_no_udi_on_open: 0
|
||||||
|
whole_key_filtering: 1
|
||||||
|
verify_compression: 0
|
||||||
|
read_amp_bytes_per_bit: 0
|
||||||
|
format_version: 6
|
||||||
|
enable_index_compression: 1
|
||||||
|
block_align: 0
|
||||||
|
max_auto_readahead_size: 262144
|
||||||
|
prepopulate_block_cache: 0
|
||||||
|
initial_auto_readahead_size: 8192
|
||||||
|
num_file_reads_for_auto_readahead: 2
|
||||||
|
2026/01/27-23:22:58.503278 1 Options.write_buffer_size: 67108864
|
||||||
|
2026/01/27-23:22:58.503279 1 Options.max_write_buffer_number: 4
|
||||||
|
2026/01/27-23:22:58.503280 1 Options.compression[0]: NoCompression
|
||||||
|
2026/01/27-23:22:58.503281 1 Options.compression[1]: NoCompression
|
||||||
|
2026/01/27-23:22:58.503281 1 Options.compression[2]: Snappy
|
||||||
|
2026/01/27-23:22:58.503282 1 Options.compression[3]: Snappy
|
||||||
|
2026/01/27-23:22:58.503282 1 Options.compression[4]: Snappy
|
||||||
|
2026/01/27-23:22:58.503283 1 Options.compression[5]: Snappy
|
||||||
|
2026/01/27-23:22:58.503284 1 Options.compression[6]: Snappy
|
||||||
|
2026/01/27-23:22:58.503284 1 Options.bottommost_compression: Disabled
|
||||||
|
2026/01/27-23:22:58.503285 1 Options.prefix_extractor: nullptr
|
||||||
|
2026/01/27-23:22:58.503286 1 Options.memtable_insert_with_hint_prefix_extractor: nullptr
|
||||||
|
2026/01/27-23:22:58.503286 1 Options.num_levels: 7
|
||||||
|
2026/01/27-23:22:58.503287 1 Options.min_write_buffer_number_to_merge: 1
|
||||||
|
2026/01/27-23:22:58.503287 1 Options.max_write_buffer_size_to_maintain: 0
|
||||||
|
2026/01/27-23:22:58.503288 1 Options.bottommost_compression_opts.window_bits: -14
|
||||||
|
2026/01/27-23:22:58.503289 1 Options.bottommost_compression_opts.level: 32767
|
||||||
|
2026/01/27-23:22:58.503290 1 Options.bottommost_compression_opts.strategy: 0
|
||||||
|
2026/01/27-23:22:58.503290 1 Options.bottommost_compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-23:22:58.503291 1 Options.bottommost_compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-23:22:58.503292 1 Options.bottommost_compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-23:22:58.503292 1 Options.bottommost_compression_opts.enabled: false
|
||||||
|
2026/01/27-23:22:58.503293 1 Options.bottommost_compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-23:22:58.503294 1 Options.bottommost_compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-23:22:58.503294 1 Options.compression_opts.window_bits: -14
|
||||||
|
2026/01/27-23:22:58.503295 1 Options.compression_opts.level: 32767
|
||||||
|
2026/01/27-23:22:58.503296 1 Options.compression_opts.strategy: 0
|
||||||
|
2026/01/27-23:22:58.503296 1 Options.compression_opts.max_dict_bytes: 0
|
||||||
|
2026/01/27-23:22:58.503297 1 Options.compression_opts.zstd_max_train_bytes: 0
|
||||||
|
2026/01/27-23:22:58.503297 1 Options.compression_opts.use_zstd_dict_trainer: true
|
||||||
|
2026/01/27-23:22:58.503298 1 Options.compression_opts.parallel_threads: 1
|
||||||
|
2026/01/27-23:22:58.503299 1 Options.compression_opts.enabled: false
|
||||||
|
2026/01/27-23:22:58.503299 1 Options.compression_opts.max_dict_buffer_bytes: 0
|
||||||
|
2026/01/27-23:22:58.503300 1 Options.level0_file_num_compaction_trigger: 4
|
||||||
|
2026/01/27-23:22:58.503300 1 Options.level0_slowdown_writes_trigger: 20
|
||||||
|
2026/01/27-23:22:58.503301 1 Options.level0_stop_writes_trigger: 40
|
||||||
|
2026/01/27-23:22:58.503301 1 Options.target_file_size_base: 134217728
|
||||||
|
2026/01/27-23:22:58.503302 1 Options.target_file_size_multiplier: 1
|
||||||
|
2026/01/27-23:22:58.503303 1 Options.max_bytes_for_level_base: 268435456
|
||||||
|
2026/01/27-23:22:58.503303 1 Options.level_compaction_dynamic_level_bytes: 1
|
||||||
|
2026/01/27-23:22:58.503304 1 Options.max_bytes_for_level_multiplier: 10.000000
|
||||||
|
2026/01/27-23:22:58.503305 1 Options.max_bytes_for_level_multiplier_addtl[0]: 1
|
||||||
|
2026/01/27-23:22:58.503306 1 Options.max_bytes_for_level_multiplier_addtl[1]: 1
|
||||||
|
2026/01/27-23:22:58.503307 1 Options.max_bytes_for_level_multiplier_addtl[2]: 1
|
||||||
|
2026/01/27-23:22:58.503307 1 Options.max_bytes_for_level_multiplier_addtl[3]: 1
|
||||||
|
2026/01/27-23:22:58.503308 1 Options.max_bytes_for_level_multiplier_addtl[4]: 1
|
||||||
|
2026/01/27-23:22:58.503308 1 Options.max_bytes_for_level_multiplier_addtl[5]: 1
|
||||||
|
2026/01/27-23:22:58.503309 1 Options.max_bytes_for_level_multiplier_addtl[6]: 1
|
||||||
|
2026/01/27-23:22:58.503309 1 Options.max_sequential_skip_in_iterations: 8
|
||||||
|
2026/01/27-23:22:58.503310 1 Options.memtable_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-23:22:58.503310 1 Options.memtable_avg_op_scan_flush_trigger: 0
|
||||||
|
2026/01/27-23:22:58.503311 1 Options.max_compaction_bytes: 3355443200
|
||||||
|
2026/01/27-23:22:58.503311 1 Options.arena_block_size: 1048576
|
||||||
|
2026/01/27-23:22:58.503312 1 Options.soft_pending_compaction_bytes_limit: 68719476736
|
||||||
|
2026/01/27-23:22:58.503312 1 Options.hard_pending_compaction_bytes_limit: 274877906944
|
||||||
|
2026/01/27-23:22:58.503313 1 Options.disable_auto_compactions: 0
|
||||||
|
2026/01/27-23:22:58.503314 1 Options.compaction_style: kCompactionStyleLevel
|
||||||
|
2026/01/27-23:22:58.503314 1 Options.compaction_pri: kMinOverlappingRatio
|
||||||
|
2026/01/27-23:22:58.503315 1 Options.compaction_options_universal.size_ratio: 1
|
||||||
|
2026/01/27-23:22:58.503315 1 Options.compaction_options_universal.min_merge_width: 2
|
||||||
|
2026/01/27-23:22:58.503316 1 Options.compaction_options_universal.max_merge_width: 4294967295
|
||||||
|
2026/01/27-23:22:58.503316 1 Options.compaction_options_universal.max_size_amplification_percent: 200
|
||||||
|
2026/01/27-23:22:58.503317 1 Options.compaction_options_universal.compression_size_percent: -1
|
||||||
|
2026/01/27-23:22:58.503318 1 Options.compaction_options_universal.stop_style: kCompactionStopStyleTotalSize
|
||||||
|
2026/01/27-23:22:58.503318 1 Options.compaction_options_universal.max_read_amp: -1
|
||||||
|
2026/01/27-23:22:58.503319 1 Options.compaction_options_universal.reduce_file_locking: 0
|
||||||
|
2026/01/27-23:22:58.503319 1 Options.compaction_options_fifo.max_table_files_size: 1073741824
|
||||||
|
2026/01/27-23:22:58.503320 1 Options.compaction_options_fifo.allow_compaction: 0
|
||||||
|
2026/01/27-23:22:58.503321 1 Options.table_properties_collectors:
|
||||||
|
2026/01/27-23:22:58.503321 1 Options.inplace_update_support: 0
|
||||||
|
2026/01/27-23:22:58.503322 1 Options.inplace_update_num_locks: 10000
|
||||||
|
2026/01/27-23:22:58.503323 1 Options.memtable_prefix_bloom_size_ratio: 0.000000
|
||||||
|
2026/01/27-23:22:58.503323 1 Options.memtable_whole_key_filtering: 0
|
||||||
|
2026/01/27-23:22:58.503324 1 Options.memtable_huge_page_size: 0
|
||||||
|
2026/01/27-23:22:58.503324 1 Options.bloom_locality: 0
|
||||||
|
2026/01/27-23:22:58.503325 1 Options.max_successive_merges: 0
|
||||||
|
2026/01/27-23:22:58.503325 1 Options.strict_max_successive_merges: 0
|
||||||
|
2026/01/27-23:22:58.503326 1 Options.optimize_filters_for_hits: 0
|
||||||
|
2026/01/27-23:22:58.503326 1 Options.paranoid_file_checks: 0
|
||||||
|
2026/01/27-23:22:58.503327 1 Options.force_consistency_checks: 1
|
||||||
|
2026/01/27-23:22:58.503327 1 Options.report_bg_io_stats: 0
|
||||||
|
2026/01/27-23:22:58.503328 1 Options.disallow_memtable_writes: 0
|
||||||
|
2026/01/27-23:22:58.503328 1 Options.ttl: 2592000
|
||||||
|
2026/01/27-23:22:58.503329 1 Options.periodic_compaction_seconds: 0
|
||||||
|
2026/01/27-23:22:58.503329 1 Options.default_temperature: kUnknown
|
||||||
|
2026/01/27-23:22:58.503330 1 Options.preclude_last_level_data_seconds: 0
|
||||||
|
2026/01/27-23:22:58.503330 1 Options.preserve_internal_time_seconds: 0
|
||||||
|
2026/01/27-23:22:58.503331 1 Options.enable_blob_files: false
|
||||||
|
2026/01/27-23:22:58.503331 1 Options.min_blob_size: 0
|
||||||
|
2026/01/27-23:22:58.503332 1 Options.blob_file_size: 268435456
|
||||||
|
2026/01/27-23:22:58.503332 1 Options.blob_compression_type: NoCompression
|
||||||
|
2026/01/27-23:22:58.503333 1 Options.enable_blob_garbage_collection: false
|
||||||
|
2026/01/27-23:22:58.503333 1 Options.blob_garbage_collection_age_cutoff: 0.250000
|
||||||
|
2026/01/27-23:22:58.503334 1 Options.blob_garbage_collection_force_threshold: 1.000000
|
||||||
|
2026/01/27-23:22:58.503335 1 Options.blob_compaction_readahead_size: 0
|
||||||
|
2026/01/27-23:22:58.503335 1 Options.blob_file_starting_level: 0
|
||||||
|
2026/01/27-23:22:58.503336 1 Options.experimental_mempurge_threshold: 0.000000
|
||||||
|
2026/01/27-23:22:58.503336 1 Options.memtable_max_range_deletions: 0
|
||||||
|
2026/01/27-23:22:58.503337 1 Options.cf_allow_ingest_behind: false
|
||||||
|
2026/01/27-23:22:58.503427 1 [WARN] [db/db_impl/db_impl_open.cc:2688] DB::Open() failed: Invalid argument: Column families not opened: index, search, stream, propagate, pubsub, zset_score, metadata
|
||||||
|
2026/01/27-23:22:58.503463 1 [db/db_impl/db_impl.cc:467] Shutdown: canceling all background work
|
||||||
|
2026/01/27-23:22:58.503492 1 [db/db_impl/db_impl.cc:681] Shutdown complete
|
||||||
BIN
local-dev/data/kvrocks/db/MANIFEST-000035
Normal file
BIN
local-dev/data/kvrocks/db/MANIFEST-000035
Normal file
Binary file not shown.
1071
local-dev/data/kvrocks/db/OPTIONS-000031
Normal file
1071
local-dev/data/kvrocks/db/OPTIONS-000031
Normal file
File diff suppressed because it is too large
Load Diff
1071
local-dev/data/kvrocks/db/OPTIONS-000037
Normal file
1071
local-dev/data/kvrocks/db/OPTIONS-000037
Normal file
File diff suppressed because it is too large
Load Diff
143
local-dev/data/kvrocks/kvrocks_2026-01-27.log
Normal file
143
local-dev/data/kvrocks/kvrocks_2026-01-27.log
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
[2026-01-27T21:55:32.811461+00:00][I][main.cc:168] kvrocks version 2.14.0 (commit a71eb42f)
|
||||||
|
[2026-01-27T21:55:32.841671+00:00][I][storage.cc:407] [storage] Success to load the data from disk: 12 ms
|
||||||
|
[2026-01-27T21:55:32.843628+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.843938+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844064+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844141+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844201+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844268+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844338+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844401+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T21:55:32.844625+00:00][I][worker.cc:596] [worker] Thread #281473273094752 started
|
||||||
|
[2026-01-27T21:55:32.844653+00:00][I][worker.cc:596] [worker] Thread #281473281548896 started
|
||||||
|
[2026-01-27T21:55:32.844671+00:00][I][worker.cc:596] [worker] Thread #281473290003040 started
|
||||||
|
[2026-01-27T21:55:32.844708+00:00][I][worker.cc:596] [worker] Thread #281473366090336 started
|
||||||
|
[2026-01-27T21:55:32.844742+00:00][I][worker.cc:596] [worker] Thread #281473357636192 started
|
||||||
|
[2026-01-27T21:55:32.844787+00:00][I][worker.cc:596] [worker] Thread #281473349182048 started
|
||||||
|
[2026-01-27T21:55:32.844825+00:00][I][worker.cc:596] [worker] Thread #281473340727904 started
|
||||||
|
[2026-01-27T21:55:32.844861+00:00][I][worker.cc:596] [worker] Thread #281473332273760 started
|
||||||
|
[2026-01-27T21:55:32.844960+00:00][I][server.cc:245] [server] Ready to accept connections
|
||||||
|
[2026-01-27T21:56:34.369240+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-27T21:56:34.377799+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-27T21:56:34.378156+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-27T21:56:34.378349+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
|
[2026-01-27T21:59:36.368485+00:00][I][main.cc:53] Signal Terminated (15) received, stopping the server
|
||||||
|
[2026-01-27T22:00:38.556809+00:00][I][main.cc:168] kvrocks version 2.14.0 (commit a71eb42f)
|
||||||
|
[2026-01-27T22:00:38.571773+00:00][I][event_listener.cc:187] [event_listener/table_file_created] column family: metadata, file path: /data/db/000014.sst, file size: 2427, job_id: 1, reason: recovery, status: OK
|
||||||
|
[2026-01-27T22:00:38.579255+00:00][I][storage.cc:407] [storage] Success to load the data from disk: 17 ms
|
||||||
|
[2026-01-27T22:00:38.581394+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.581635+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.581731+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.581905+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.582059+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.582166+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.582287+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.582369+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:00:38.582500+00:00][I][worker.cc:596] [worker] Thread #281473264837216 started
|
||||||
|
[2026-01-27T22:00:38.582607+00:00][I][worker.cc:596] [worker] Thread #281473273291360 started
|
||||||
|
[2026-01-27T22:00:38.582648+00:00][I][worker.cc:596] [worker] Thread #281473281745504 started
|
||||||
|
[2026-01-27T22:00:38.582698+00:00][I][worker.cc:596] [worker] Thread #281473336730208 started
|
||||||
|
[2026-01-27T22:00:38.582731+00:00][I][worker.cc:596] [worker] Thread #281473328276064 started
|
||||||
|
[2026-01-27T22:00:38.582767+00:00][I][worker.cc:596] [worker] Thread #281473319821920 started
|
||||||
|
[2026-01-27T22:00:38.582805+00:00][I][worker.cc:596] [worker] Thread #281473311367776 started
|
||||||
|
[2026-01-27T22:00:38.582859+00:00][I][worker.cc:596] [worker] Thread #281473302913632 started
|
||||||
|
[2026-01-27T22:00:38.582953+00:00][I][server.cc:245] [server] Ready to accept connections
|
||||||
|
[2026-01-27T22:01:40.207616+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-27T22:01:40.208939+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-27T22:01:40.209035+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-27T22:01:40.209124+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
|
[2026-01-27T22:04:28.316771+00:00][I][main.cc:53] Signal Terminated (15) received, stopping the server
|
||||||
|
[2026-01-27T22:05:20.855690+00:00][I][main.cc:168] kvrocks version 2.14.0 (commit a71eb42f)
|
||||||
|
[2026-01-27T22:05:20.871111+00:00][I][storage.cc:407] [storage] Success to load the data from disk: 11 ms
|
||||||
|
[2026-01-27T22:05:20.872974+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.873484+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.873699+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.874015+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.874074+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.874129+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.874184+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.874242+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:05:20.874356+00:00][I][worker.cc:596] [worker] Thread #281472658825824 started
|
||||||
|
[2026-01-27T22:05:20.874371+00:00][I][worker.cc:596] [worker] Thread #281472667279968 started
|
||||||
|
[2026-01-27T22:05:20.874386+00:00][I][worker.cc:596] [worker] Thread #281472675734112 started
|
||||||
|
[2026-01-27T22:05:20.874415+00:00][I][worker.cc:596] [worker] Thread #281472739041888 started
|
||||||
|
[2026-01-27T22:05:20.874436+00:00][I][worker.cc:596] [worker] Thread #281472726458976 started
|
||||||
|
[2026-01-27T22:05:20.874450+00:00][I][worker.cc:596] [worker] Thread #281472718004832 started
|
||||||
|
[2026-01-27T22:05:20.874464+00:00][I][worker.cc:596] [worker] Thread #281472709550688 started
|
||||||
|
[2026-01-27T22:05:20.874485+00:00][I][worker.cc:596] [worker] Thread #281472701096544 started
|
||||||
|
[2026-01-27T22:05:20.874543+00:00][I][server.cc:245] [server] Ready to accept connections
|
||||||
|
[2026-01-27T22:06:22.367592+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-27T22:06:22.370793+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-27T22:06:22.371106+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-27T22:06:22.371313+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
|
[2026-01-27T22:29:24.678219+00:00][I][main.cc:53] Signal Terminated (15) received, stopping the server
|
||||||
|
[2026-01-27T22:29:25.238671+00:00][I][main.cc:168] kvrocks version 2.14.0 (commit a71eb42f)
|
||||||
|
[2026-01-27T22:29:25.251917+00:00][I][event_listener.cc:187] [event_listener/table_file_created] column family: metadata, file path: /data/db/000023.sst, file size: 2476, job_id: 1, reason: recovery, status: OK
|
||||||
|
[2026-01-27T22:29:25.259557+00:00][I][storage.cc:407] [storage] Success to load the data from disk: 16 ms
|
||||||
|
[2026-01-27T22:29:25.262110+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262274+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262372+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262449+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262518+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262618+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262684+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262746+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:25.262900+00:00][I][worker.cc:596] [worker] Thread #281472793043552 started
|
||||||
|
[2026-01-27T22:29:25.262932+00:00][I][worker.cc:596] [worker] Thread #281472801497696 started
|
||||||
|
[2026-01-27T22:29:25.262956+00:00][I][worker.cc:596] [worker] Thread #281472809951840 started
|
||||||
|
[2026-01-27T22:29:25.262989+00:00][I][worker.cc:596] [worker] Thread #281472873259616 started
|
||||||
|
[2026-01-27T22:29:25.263017+00:00][I][worker.cc:596] [worker] Thread #281472860676704 started
|
||||||
|
[2026-01-27T22:29:25.263051+00:00][I][worker.cc:596] [worker] Thread #281472852222560 started
|
||||||
|
[2026-01-27T22:29:25.263086+00:00][I][worker.cc:596] [worker] Thread #281472843768416 started
|
||||||
|
[2026-01-27T22:29:25.263115+00:00][I][worker.cc:596] [worker] Thread #281472835314272 started
|
||||||
|
[2026-01-27T22:29:25.263201+00:00][I][server.cc:245] [server] Ready to accept connections
|
||||||
|
[2026-01-27T22:29:38.668808+00:00][I][main.cc:53] Signal Terminated (15) received, stopping the server
|
||||||
|
[2026-01-27T22:29:39.166069+00:00][I][main.cc:168] kvrocks version 2.14.0 (commit a71eb42f)
|
||||||
|
[2026-01-27T22:29:39.182475+00:00][I][storage.cc:407] [storage] Success to load the data from disk: 13 ms
|
||||||
|
[2026-01-27T22:29:39.183886+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184001+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184110+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184542+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184647+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184722+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184822+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.184900+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T22:29:39.185008+00:00][I][worker.cc:596] [worker] Thread #281473065673312 started
|
||||||
|
[2026-01-27T22:29:39.185045+00:00][I][worker.cc:596] [worker] Thread #281473074127456 started
|
||||||
|
[2026-01-27T22:29:39.185068+00:00][I][worker.cc:596] [worker] Thread #281473082581600 started
|
||||||
|
[2026-01-27T22:29:39.185101+00:00][I][worker.cc:596] [worker] Thread #281473147986528 started
|
||||||
|
[2026-01-27T22:29:39.185127+00:00][I][worker.cc:596] [worker] Thread #281473133306464 started
|
||||||
|
[2026-01-27T22:29:39.185153+00:00][I][worker.cc:596] [worker] Thread #281473124852320 started
|
||||||
|
[2026-01-27T22:29:39.185193+00:00][I][worker.cc:596] [worker] Thread #281473116398176 started
|
||||||
|
[2026-01-27T22:29:39.185221+00:00][I][worker.cc:596] [worker] Thread #281473107944032 started
|
||||||
|
[2026-01-27T22:29:39.185302+00:00][I][server.cc:245] [server] Ready to accept connections
|
||||||
|
[2026-01-27T22:30:40.725701+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-27T22:30:40.726451+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-27T22:30:40.726546+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-27T22:30:40.726624+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
|
[2026-01-27T23:22:53.541798+00:00][I][main.cc:53] Signal Terminated (15) received, stopping the server
|
||||||
|
[2026-01-27T23:22:58.500203+00:00][I][main.cc:168] kvrocks version 2.14.0 (commit a71eb42f)
|
||||||
|
[2026-01-27T23:22:58.511777+00:00][I][event_listener.cc:187] [event_listener/table_file_created] column family: default, file path: /data/db/000032.sst, file size: 2104, job_id: 1, reason: recovery, status: OK
|
||||||
|
[2026-01-27T23:22:58.513628+00:00][I][event_listener.cc:187] [event_listener/table_file_created] column family: metadata, file path: /data/db/000033.sst, file size: 6606, job_id: 1, reason: recovery, status: OK
|
||||||
|
[2026-01-27T23:22:58.525506+00:00][I][storage.cc:407] [storage] Success to load the data from disk: 21 ms
|
||||||
|
[2026-01-27T23:22:58.527352+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.527574+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.527688+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.527767+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.527848+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.527949+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.528244+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.528341+00:00][I][worker.cc:76] [worker] Listening on: 0.0.0.0:6666
|
||||||
|
[2026-01-27T23:22:58.528525+00:00][I][worker.cc:596] [worker] Thread #281472916578912 started
|
||||||
|
[2026-01-27T23:22:58.528585+00:00][I][worker.cc:596] [worker] Thread #281472958849632 started
|
||||||
|
[2026-01-27T23:22:58.528618+00:00][I][worker.cc:596] [worker] Thread #281472967303776 started
|
||||||
|
[2026-01-27T23:22:58.528648+00:00][I][worker.cc:596] [worker] Thread #281473036837472 started
|
||||||
|
[2026-01-27T23:22:58.528952+00:00][I][worker.cc:596] [worker] Thread #281473022157408 started
|
||||||
|
[2026-01-27T23:22:58.528990+00:00][I][worker.cc:596] [worker] Thread #281473009574496 started
|
||||||
|
[2026-01-27T23:22:58.529021+00:00][I][worker.cc:596] [worker] Thread #281473001120352 started
|
||||||
|
[2026-01-27T23:22:58.529044+00:00][I][worker.cc:596] [worker] Thread #281472992666208 started
|
||||||
|
[2026-01-27T23:22:58.529123+00:00][I][server.cc:245] [server] Ready to accept connections
|
||||||
|
[2026-01-27T23:24:00.045680+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-27T23:24:00.046224+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-27T23:24:00.046312+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-27T23:24:00.046352+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
4
local-dev/data/kvrocks/kvrocks_2026-01-28.log
Normal file
4
local-dev/data/kvrocks/kvrocks_2026-01-28.log
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[2026-01-28T00:00:56.433217+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-28T00:00:56.435397+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-28T00:00:56.435483+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-28T00:00:56.435537+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
4
local-dev/data/kvrocks/kvrocks_2026-01-29.log
Normal file
4
local-dev/data/kvrocks/kvrocks_2026-01-29.log
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[2026-01-29T00:00:32.264105+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-29T00:00:32.270121+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-29T00:00:32.270189+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-29T00:00:32.270251+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
5
local-dev/data/kvrocks/kvrocks_2026-01-30.log
Normal file
5
local-dev/data/kvrocks/kvrocks_2026-01-30.log
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[2026-01-30T00:00:53.731511+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: pubsub
|
||||||
|
[2026-01-30T00:00:53.732305+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: pubsub finished, result: OK
|
||||||
|
[2026-01-30T00:00:53.732942+00:00][I][compaction_checker.cc:35] [compaction checker] Start to compact the column family: propagate
|
||||||
|
[2026-01-30T00:00:53.733051+00:00][I][compaction_checker.cc:38] [compaction checker] Compact the column family: propagate finished, result: OK
|
||||||
|
[2026-01-30T00:17:42.821542+00:00][I][main.cc:53] Signal Terminated (15) received, stopping the server
|
||||||
169
local-dev/debug-middleware.js
Normal file
169
local-dev/debug-middleware.js
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
/**
|
||||||
|
* Debug Middleware for Local Development
|
||||||
|
* Captures and logs all requests for research
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const DATA_DIR = process.env.DATA_DIR || '/app/data';
|
||||||
|
const LOG_FILE = path.join(DATA_DIR, 'debug-requests.jsonl');
|
||||||
|
const capturedRequests = [];
|
||||||
|
const MAX_CAPTURED = 500;
|
||||||
|
|
||||||
|
function extractSubdomain(host) {
|
||||||
|
if (!host) return null;
|
||||||
|
const hostname = host.split(':')[0];
|
||||||
|
const match = hostname.match(/^(sessions|account-data|telemetry|tools|oauth\.accounts|accounts)\./);
|
||||||
|
return match ? match[1] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug middleware - logs requests (skip internal paths)
|
||||||
|
*/
|
||||||
|
function debugMiddleware(req, res, next) {
|
||||||
|
// Skip debug/health/admin endpoints
|
||||||
|
if (req.path.startsWith('/debug') || req.path === '/health' || req.path === '/favicon.ico') {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
const startTime = Date.now();
|
||||||
|
const subdomain = extractSubdomain(req.headers.host);
|
||||||
|
|
||||||
|
// Color logging
|
||||||
|
const colors = { reset: '\x1b[0m', green: '\x1b[32m', blue: '\x1b[34m', yellow: '\x1b[33m', magenta: '\x1b[35m', cyan: '\x1b[36m', red: '\x1b[31m' };
|
||||||
|
const subColor = { 'sessions': colors.green, 'account-data': colors.blue, 'telemetry': colors.yellow, 'tools': colors.magenta }[subdomain] || colors.cyan;
|
||||||
|
|
||||||
|
console.log(`${subColor}[${subdomain || 'main'}]${colors.reset} ${req.method} ${req.url}`);
|
||||||
|
|
||||||
|
// Capture response
|
||||||
|
const origSend = res.send.bind(res);
|
||||||
|
const origJson = res.json.bind(res);
|
||||||
|
let responseBody = null;
|
||||||
|
|
||||||
|
res.send = function(body) {
|
||||||
|
responseBody = typeof body === 'string' && body.length > 2000 ? body.substring(0, 2000) + '...' : body;
|
||||||
|
return origSend(body);
|
||||||
|
};
|
||||||
|
|
||||||
|
res.json = function(body) {
|
||||||
|
try {
|
||||||
|
const str = JSON.stringify(body);
|
||||||
|
responseBody = str.length > 2000 ? { _truncated: true, _len: str.length } : body;
|
||||||
|
} catch (e) {
|
||||||
|
responseBody = { _error: 'serialize failed' };
|
||||||
|
}
|
||||||
|
return origJson(body);
|
||||||
|
};
|
||||||
|
|
||||||
|
res.on('finish', () => {
|
||||||
|
const duration = Date.now() - startTime;
|
||||||
|
const statusColor = res.statusCode >= 400 ? colors.red : colors.green;
|
||||||
|
console.log(` ${statusColor}-> ${res.statusCode}${colors.reset} (${duration}ms)`);
|
||||||
|
|
||||||
|
const entry = {
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
method: req.method,
|
||||||
|
path: req.path,
|
||||||
|
host: req.headers.host,
|
||||||
|
subdomain,
|
||||||
|
query: req.query,
|
||||||
|
body: req.body,
|
||||||
|
response: { statusCode: res.statusCode, duration, body: responseBody }
|
||||||
|
};
|
||||||
|
|
||||||
|
capturedRequests.unshift(entry);
|
||||||
|
if (capturedRequests.length > MAX_CAPTURED) capturedRequests.pop();
|
||||||
|
|
||||||
|
try { fs.appendFileSync(LOG_FILE, JSON.stringify(entry) + '\n'); } catch (e) {}
|
||||||
|
});
|
||||||
|
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup debug routes
|
||||||
|
*/
|
||||||
|
function setupDebugRoutes(app) {
|
||||||
|
// Debug dashboard
|
||||||
|
app.get('/debug', (req, res) => {
|
||||||
|
res.send(`<!DOCTYPE html>
|
||||||
|
<html><head><title>Debug</title>
|
||||||
|
<style>
|
||||||
|
body{font-family:monospace;background:#1a1a2e;color:#eee;padding:20px}
|
||||||
|
h1{color:#00d4ff}.section{background:#16213e;padding:15px;margin:10px 0;border-radius:8px}
|
||||||
|
.req{background:#0f3460;padding:8px;margin:4px 0;border-radius:4px;font-size:12px}
|
||||||
|
.GET{color:#4ade80}.POST{color:#60a5fa}.DELETE{color:#f87171}
|
||||||
|
.sub{color:#c084fc;font-weight:bold}pre{background:#0a0a1a;padding:8px;overflow-x:auto;font-size:11px}
|
||||||
|
button{background:#00d4ff;color:#000;border:none;padding:6px 12px;cursor:pointer;margin:4px;border-radius:4px}
|
||||||
|
select{padding:6px;background:#0f3460;border:1px solid #00d4ff;color:#fff;border-radius:4px}
|
||||||
|
details summary{cursor:pointer;color:#60a5fa}
|
||||||
|
</style></head><body>
|
||||||
|
<h1>Debug Dashboard</h1>
|
||||||
|
<div class="section"><button onclick="refresh()">Refresh</button><button onclick="clearReqs()">Clear</button>
|
||||||
|
<select id="filter" onchange="refresh()"><option value="">All</option><option value="sessions">sessions</option>
|
||||||
|
<option value="account-data">account-data</option><option value="telemetry">telemetry</option><option value="tools">tools</option></select>
|
||||||
|
<span id="count"></span></div>
|
||||||
|
<div class="section"><h2>Subdomains</h2><div id="subs"></div></div>
|
||||||
|
<div class="section"><h2>Requests</h2><div id="reqs" style="max-height:500px;overflow-y:auto"></div></div>
|
||||||
|
<script>
|
||||||
|
async function refresh(){
|
||||||
|
const f=document.getElementById('filter').value;
|
||||||
|
const r=await fetch('/debug/requests'+(f?'?subdomain='+f:''));
|
||||||
|
const d=await r.json();
|
||||||
|
document.getElementById('count').textContent=d.total+' total';
|
||||||
|
document.getElementById('reqs').innerHTML=d.requests.map(r=>\`<div class="req">
|
||||||
|
<span class="\${r.method}">\${r.method}</span> <span class="sub">\${r.subdomain||'main'}</span> \${r.path}
|
||||||
|
<span style="color:\${r.response?.statusCode<400?'#4ade80':'#f87171'}">\${r.response?.statusCode}</span>
|
||||||
|
<details><summary>Details</summary><pre>\${JSON.stringify(r,null,2)}</pre></details></div>\`).join('');
|
||||||
|
const s=await fetch('/debug/subdomains');
|
||||||
|
const sd=await s.json();
|
||||||
|
document.getElementById('subs').innerHTML=Object.entries(sd).map(([k,v])=>'<span class="sub">'+k+'</span>: '+v.count).join(' | ');
|
||||||
|
}
|
||||||
|
async function clearReqs(){await fetch('/debug/requests',{method:'DELETE'});refresh();}
|
||||||
|
setInterval(refresh,5000);refresh();
|
||||||
|
</script></body></html>`);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/debug/requests', (req, res) => {
|
||||||
|
let filtered = capturedRequests;
|
||||||
|
if (req.query.subdomain) filtered = filtered.filter(r => r.subdomain === req.query.subdomain);
|
||||||
|
res.json({ total: capturedRequests.length, filtered: filtered.length, requests: filtered.slice(0, 100) });
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/debug/subdomains', (req, res) => {
|
||||||
|
const summary = {};
|
||||||
|
for (const r of capturedRequests) {
|
||||||
|
const sub = r.subdomain || 'main';
|
||||||
|
if (!summary[sub]) summary[sub] = { count: 0 };
|
||||||
|
summary[sub].count++;
|
||||||
|
}
|
||||||
|
res.json(summary);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.delete('/debug/requests', (req, res) => {
|
||||||
|
capturedRequests.length = 0;
|
||||||
|
res.json({ cleared: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
// Catch-all for unknown endpoints (must be registered last)
|
||||||
|
app.all('*', (req, res, next) => {
|
||||||
|
// Only catch truly unknown paths
|
||||||
|
if (res.headersSent) return;
|
||||||
|
|
||||||
|
const subdomain = extractSubdomain(req.headers.host);
|
||||||
|
console.log(`\x1b[31m[UNKNOWN]\x1b[0m ${req.method} ${req.path} (subdomain: ${subdomain})`);
|
||||||
|
|
||||||
|
res.status(200).json({
|
||||||
|
debug: true,
|
||||||
|
message: 'Unknown endpoint captured',
|
||||||
|
method: req.method,
|
||||||
|
path: req.path,
|
||||||
|
subdomain,
|
||||||
|
headers: req.headers,
|
||||||
|
body: req.body
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { debugMiddleware, setupDebugRoutes, capturedRequests };
|
||||||
800
local-dev/debug-wrapper.js
Normal file
800
local-dev/debug-wrapper.js
Normal file
@@ -0,0 +1,800 @@
|
|||||||
|
/**
|
||||||
|
* Debug Wrapper Entry Point
|
||||||
|
* Wraps the existing hytale-auth-server with debug capabilities
|
||||||
|
*/
|
||||||
|
|
||||||
|
const http = require('http');
|
||||||
|
const https = require('https');
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
|
||||||
|
// Only load debug functionality if DEBUG_MODE is enabled
|
||||||
|
const DEBUG_MODE = process.env.DEBUG_MODE === 'true';
|
||||||
|
|
||||||
|
const DATA_DIR = process.env.DATA_DIR || '/app/data';
|
||||||
|
const LOG_FILE = path.join(DATA_DIR, 'debug-requests.jsonl');
|
||||||
|
const SSL_DIR = path.join(DATA_DIR, 'ssl');
|
||||||
|
const SSL_KEY = path.join(SSL_DIR, 'server.key');
|
||||||
|
const SSL_CERT = path.join(SSL_DIR, 'server.crt');
|
||||||
|
const HTTPS_PORT = parseInt(process.env.HTTPS_PORT || '3443');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate self-signed SSL certificates if they don't exist
|
||||||
|
*/
|
||||||
|
function ensureSSLCertificates() {
|
||||||
|
if (!fs.existsSync(SSL_DIR)) {
|
||||||
|
fs.mkdirSync(SSL_DIR, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fs.existsSync(SSL_KEY) || !fs.existsSync(SSL_CERT)) {
|
||||||
|
console.log('Generating self-signed SSL certificates...');
|
||||||
|
try {
|
||||||
|
execSync(`openssl req -x509 -newkey rsa:2048 -keyout "${SSL_KEY}" -out "${SSL_CERT}" -days 365 -nodes -subj "/CN=localhost" 2>/dev/null`);
|
||||||
|
console.log('SSL certificates generated successfully');
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Failed to generate SSL certificates:', err.message);
|
||||||
|
console.error('HTTPS will not be available. Install openssl or provide certificates manually.');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return {
|
||||||
|
key: fs.readFileSync(SSL_KEY),
|
||||||
|
cert: fs.readFileSync(SSL_CERT)
|
||||||
|
};
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Failed to read SSL certificates:', err.message);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// In-memory request storage for debug dashboard
|
||||||
|
const capturedRequests = [];
|
||||||
|
const MAX_CAPTURED = 500;
|
||||||
|
|
||||||
|
// Color codes for terminal output
|
||||||
|
const colors = {
|
||||||
|
reset: '\x1b[0m',
|
||||||
|
green: '\x1b[32m',
|
||||||
|
blue: '\x1b[34m',
|
||||||
|
yellow: '\x1b[33m',
|
||||||
|
magenta: '\x1b[35m',
|
||||||
|
cyan: '\x1b[36m',
|
||||||
|
red: '\x1b[31m'
|
||||||
|
};
|
||||||
|
|
||||||
|
function extractSubdomain(host) {
|
||||||
|
if (!host) return null;
|
||||||
|
const hostname = host.split(':')[0];
|
||||||
|
const match = hostname.match(/^(sessions|account-data|telemetry|tools|oauth\.accounts|accounts)\./);
|
||||||
|
return match ? match[1] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSubdomainColor(subdomain) {
|
||||||
|
const subColors = {
|
||||||
|
'sessions': colors.green,
|
||||||
|
'account-data': colors.blue,
|
||||||
|
'telemetry': colors.yellow,
|
||||||
|
'tools': colors.magenta
|
||||||
|
};
|
||||||
|
return subColors[subdomain] || colors.cyan;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serve the debug dashboard HTML
|
||||||
|
*/
|
||||||
|
function serveDebugDashboard(res) {
|
||||||
|
const html = `<!DOCTYPE html>
|
||||||
|
<html><head><title>Debug Dashboard - Local Dev</title>
|
||||||
|
<style>
|
||||||
|
body{font-family:monospace;background:#1a1a2e;color:#eee;padding:20px;margin:0}
|
||||||
|
h1{color:#00d4ff;margin-bottom:10px}
|
||||||
|
.info{color:#888;font-size:12px;margin-bottom:20px}
|
||||||
|
.section{background:#16213e;padding:15px;margin:10px 0;border-radius:8px}
|
||||||
|
.req{background:#0f3460;padding:10px;margin:5px 0;border-radius:4px;font-size:12px;border-left:3px solid #00d4ff}
|
||||||
|
.req.error{border-left-color:#f87171}
|
||||||
|
.GET{color:#4ade80}.POST{color:#60a5fa}.DELETE{color:#f87171}.PUT{color:#fbbf24}
|
||||||
|
.sub{color:#c084fc;font-weight:bold}
|
||||||
|
.status{padding:2px 6px;border-radius:3px;font-size:11px}
|
||||||
|
.status.ok{background:#166534;color:#4ade80}
|
||||||
|
.status.error{background:#7f1d1d;color:#f87171}
|
||||||
|
pre{background:#0a0a1a;padding:10px;overflow-x:auto;font-size:11px;border-radius:4px;max-height:300px;overflow-y:auto}
|
||||||
|
button{background:#00d4ff;color:#000;border:none;padding:8px 16px;cursor:pointer;margin:4px;border-radius:4px;font-weight:bold}
|
||||||
|
button:hover{background:#00b8e6}
|
||||||
|
button.danger{background:#dc2626}
|
||||||
|
button.danger:hover{background:#b91c1c}
|
||||||
|
button.paused{background:#fbbf24;color:#000}
|
||||||
|
select{padding:8px;background:#0f3460;border:1px solid #00d4ff;color:#fff;border-radius:4px}
|
||||||
|
details summary{cursor:pointer;color:#60a5fa;padding:5px 0}
|
||||||
|
.timestamp{color:#666;font-size:10px}
|
||||||
|
.duration{color:#fbbf24}
|
||||||
|
.path{color:#fff}
|
||||||
|
#count{margin-left:10px;color:#4ade80}
|
||||||
|
#pauseStatus{margin-left:10px;color:#fbbf24;font-weight:bold}
|
||||||
|
.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
|
||||||
|
</style></head><body>
|
||||||
|
<h1>Debug Dashboard - Local Development</h1>
|
||||||
|
<div class="info">Capturing all requests to auth server for research purposes</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="controls">
|
||||||
|
<button onclick="refresh()">Refresh</button>
|
||||||
|
<button id="pauseBtn" onclick="togglePause()">Pause</button>
|
||||||
|
<button class="danger" onclick="clearReqs()">Clear All</button>
|
||||||
|
<select id="filter" onchange="refresh()">
|
||||||
|
<option value="">All Subdomains</option>
|
||||||
|
<option value="sessions">sessions</option>
|
||||||
|
<option value="account-data">account-data</option>
|
||||||
|
<option value="telemetry">telemetry</option>
|
||||||
|
<option value="tools">tools</option>
|
||||||
|
<option value="main">main (no subdomain)</option>
|
||||||
|
</select>
|
||||||
|
<span id="count"></span>
|
||||||
|
<span id="pauseStatus"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Subdomain Summary</h2>
|
||||||
|
<div id="subs"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Recent Requests</h2>
|
||||||
|
<div id="reqs" style="max-height:600px;overflow-y:auto"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let isPaused = false;
|
||||||
|
let refreshInterval = null;
|
||||||
|
|
||||||
|
async function refresh() {
|
||||||
|
const f = document.getElementById('filter').value;
|
||||||
|
const r = await fetch('/debug/requests' + (f ? '?subdomain=' + f : ''));
|
||||||
|
const d = await r.json();
|
||||||
|
document.getElementById('count').textContent = d.total + ' total, ' + d.filtered + ' shown';
|
||||||
|
|
||||||
|
document.getElementById('reqs').innerHTML = d.requests.map((r, i) => {
|
||||||
|
const statusClass = r.response?.statusCode >= 400 ? 'error' : 'ok';
|
||||||
|
const reqClass = r.response?.statusCode >= 400 ? 'error' : '';
|
||||||
|
return \`<div class="req \${reqClass}">
|
||||||
|
<div>
|
||||||
|
<span class="timestamp">\${r.timestamp}</span>
|
||||||
|
<span class="\${r.method}">\${r.method}</span>
|
||||||
|
<span class="sub">\${r.subdomain || 'main'}</span>
|
||||||
|
<span class="path">\${r.path}</span>
|
||||||
|
<span class="status \${statusClass}">\${r.response?.statusCode || '?'}</span>
|
||||||
|
<span class="duration">\${r.response?.duration || 0}ms</span>
|
||||||
|
</div>
|
||||||
|
<details ontoggle="handleDetailsToggle(this)">
|
||||||
|
<summary>Request Details</summary>
|
||||||
|
<pre>\${JSON.stringify({
|
||||||
|
host: r.host,
|
||||||
|
query: r.query,
|
||||||
|
body: r.body,
|
||||||
|
headers: r.headers
|
||||||
|
}, null, 2)}</pre>
|
||||||
|
</details>
|
||||||
|
<details ontoggle="handleDetailsToggle(this)">
|
||||||
|
<summary>Response</summary>
|
||||||
|
<pre>\${JSON.stringify(r.response, null, 2)}</pre>
|
||||||
|
</details>
|
||||||
|
</div>\`;
|
||||||
|
}).join('');
|
||||||
|
|
||||||
|
const s = await fetch('/debug/subdomains');
|
||||||
|
const sd = await s.json();
|
||||||
|
document.getElementById('subs').innerHTML = Object.entries(sd)
|
||||||
|
.map(([k, v]) => '<span class="sub">' + k + '</span>: ' + v.count)
|
||||||
|
.join(' | ') || '<em>No requests yet</em>';
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDetailsToggle(el) {
|
||||||
|
// Auto-pause when any details block is opened
|
||||||
|
if (el.open && !isPaused) {
|
||||||
|
togglePause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function togglePause() {
|
||||||
|
isPaused = !isPaused;
|
||||||
|
const btn = document.getElementById('pauseBtn');
|
||||||
|
const status = document.getElementById('pauseStatus');
|
||||||
|
if (isPaused) {
|
||||||
|
btn.textContent = 'Resume';
|
||||||
|
btn.classList.add('paused');
|
||||||
|
status.textContent = '(auto-refresh paused)';
|
||||||
|
if (refreshInterval) {
|
||||||
|
clearInterval(refreshInterval);
|
||||||
|
refreshInterval = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
btn.textContent = 'Pause';
|
||||||
|
btn.classList.remove('paused');
|
||||||
|
status.textContent = '';
|
||||||
|
refreshInterval = setInterval(autoRefresh, 3000);
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function autoRefresh() {
|
||||||
|
if (!isPaused) {
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function clearReqs() {
|
||||||
|
if (confirm('Clear all captured requests?')) {
|
||||||
|
await fetch('/debug/requests', { method: 'DELETE' });
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshInterval = setInterval(autoRefresh, 3000);
|
||||||
|
refresh();
|
||||||
|
</script>
|
||||||
|
</body></html>`;
|
||||||
|
|
||||||
|
res.writeHead(200, { 'Content-Type': 'text/html' });
|
||||||
|
res.end(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle debug API endpoints
|
||||||
|
*/
|
||||||
|
function handleDebugApi(req, res, urlPath, url) {
|
||||||
|
if (urlPath === '/debug' || urlPath === '/debug/') {
|
||||||
|
serveDebugDashboard(res);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/debug/requests') {
|
||||||
|
if (req.method === 'DELETE') {
|
||||||
|
capturedRequests.length = 0;
|
||||||
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||||
|
res.end(JSON.stringify({ cleared: true }));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
let filtered = capturedRequests;
|
||||||
|
const subdomain = url.searchParams.get('subdomain');
|
||||||
|
if (subdomain) {
|
||||||
|
if (subdomain === 'main') {
|
||||||
|
filtered = filtered.filter(r => !r.subdomain);
|
||||||
|
} else {
|
||||||
|
filtered = filtered.filter(r => r.subdomain === subdomain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||||
|
res.end(JSON.stringify({
|
||||||
|
total: capturedRequests.length,
|
||||||
|
filtered: filtered.length,
|
||||||
|
requests: filtered.slice(0, 100)
|
||||||
|
}));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/debug/subdomains') {
|
||||||
|
const summary = {};
|
||||||
|
for (const r of capturedRequests) {
|
||||||
|
const sub = r.subdomain || 'main';
|
||||||
|
if (!summary[sub]) summary[sub] = { count: 0 };
|
||||||
|
summary[sub].count++;
|
||||||
|
}
|
||||||
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||||
|
res.end(JSON.stringify(summary));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capture request/response for debugging
|
||||||
|
*/
|
||||||
|
function captureRequest(req, res, url, startTime) {
|
||||||
|
const subdomain = extractSubdomain(req.headers.host);
|
||||||
|
const originalEnd = res.end.bind(res);
|
||||||
|
let responseBody = null;
|
||||||
|
|
||||||
|
// Intercept res.end to capture response
|
||||||
|
res.end = function(chunk, encoding, callback) {
|
||||||
|
if (chunk) {
|
||||||
|
try {
|
||||||
|
const str = chunk.toString();
|
||||||
|
if (str.length > 2000) {
|
||||||
|
responseBody = { _truncated: true, _length: str.length, _preview: str.substring(0, 500) };
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
responseBody = JSON.parse(str);
|
||||||
|
} catch {
|
||||||
|
responseBody = str;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
responseBody = { _error: 'Could not capture response' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const duration = Date.now() - startTime;
|
||||||
|
|
||||||
|
// Log with colors
|
||||||
|
const subColor = getSubdomainColor(subdomain);
|
||||||
|
const statusColor = res.statusCode >= 400 ? colors.red : colors.green;
|
||||||
|
console.log(`${subColor}[${subdomain || 'main'}]${colors.reset} ${req.method} ${url.pathname} ${statusColor}${res.statusCode}${colors.reset} (${duration}ms)`);
|
||||||
|
|
||||||
|
// Store in memory
|
||||||
|
const entry = {
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
method: req.method,
|
||||||
|
path: url.pathname,
|
||||||
|
host: req.headers.host,
|
||||||
|
subdomain,
|
||||||
|
query: Object.fromEntries(url.searchParams),
|
||||||
|
headers: sanitizeHeaders(req.headers),
|
||||||
|
response: {
|
||||||
|
statusCode: res.statusCode,
|
||||||
|
duration,
|
||||||
|
body: responseBody
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
capturedRequests.unshift(entry);
|
||||||
|
if (capturedRequests.length > MAX_CAPTURED) {
|
||||||
|
capturedRequests.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also write to file
|
||||||
|
try {
|
||||||
|
fs.appendFileSync(LOG_FILE, JSON.stringify(entry) + '\n');
|
||||||
|
} catch (e) {
|
||||||
|
// Ignore file write errors
|
||||||
|
}
|
||||||
|
|
||||||
|
return originalEnd(chunk, encoding, callback);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sanitize headers for logging (remove sensitive data)
|
||||||
|
*/
|
||||||
|
function sanitizeHeaders(headers) {
|
||||||
|
const sanitized = { ...headers };
|
||||||
|
// Keep Authorization header but might want to truncate in future
|
||||||
|
return sanitized;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main entry point - wraps the existing server
|
||||||
|
*/
|
||||||
|
async function main() {
|
||||||
|
if (DEBUG_MODE) {
|
||||||
|
console.log('\x1b[33m=== DEBUG MODE ENABLED ===\x1b[0m');
|
||||||
|
console.log(`Debug dashboard: http://localhost:${process.env.PORT || 3000}/debug`);
|
||||||
|
console.log(`Request log: ${LOG_FILE}`);
|
||||||
|
console.log('');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the original app module
|
||||||
|
const app = require('./app');
|
||||||
|
|
||||||
|
// If not debug mode, just run normally
|
||||||
|
if (!DEBUG_MODE) {
|
||||||
|
app.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// In debug mode, we need to wrap the request handler
|
||||||
|
// Re-implement the server startup with debug wrapper
|
||||||
|
const config = require('./config');
|
||||||
|
const { connect: connectRedis, isConnected } = require('./services/redis');
|
||||||
|
const assets = require('./services/assets');
|
||||||
|
|
||||||
|
console.log('=== Hytale Auth Server (Debug Mode) ===');
|
||||||
|
console.log(`Domain: ${config.domain}`);
|
||||||
|
console.log(`Data directory: ${config.dataDir}`);
|
||||||
|
|
||||||
|
// Pre-load cosmetics
|
||||||
|
assets.preloadCosmetics();
|
||||||
|
|
||||||
|
// Connect to Redis
|
||||||
|
await connectRedis();
|
||||||
|
|
||||||
|
// Create the original request handler reference
|
||||||
|
const originalHandler = require('./app').handleRequest || null;
|
||||||
|
|
||||||
|
// Since handleRequest is not exported, we need a different approach
|
||||||
|
// Load all the modules manually
|
||||||
|
const middleware = require('./middleware');
|
||||||
|
const routes = require('./routes');
|
||||||
|
const { sendJson } = require('./utils/response');
|
||||||
|
const auth = require('./services/auth');
|
||||||
|
const crypto = require('crypto');
|
||||||
|
|
||||||
|
// Recreate the request handler with debug wrapping
|
||||||
|
async function debugWrappedHandler(req, res) {
|
||||||
|
const startTime = Date.now();
|
||||||
|
const url = new URL(req.url, `http://${req.headers.host}`);
|
||||||
|
const urlPath = url.pathname;
|
||||||
|
|
||||||
|
// Skip debug endpoints from capture (but still handle them)
|
||||||
|
if (urlPath.startsWith('/debug')) {
|
||||||
|
if (handleDebugApi(req, res, urlPath, url)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip favicon and health from debug capture
|
||||||
|
const skipCapture = urlPath === '/favicon.ico' || urlPath === '/health';
|
||||||
|
|
||||||
|
// Capture the request/response if not skipped
|
||||||
|
if (!skipCapture) {
|
||||||
|
captureRequest(req, res, url, startTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now delegate to original handling logic
|
||||||
|
// CORS headers
|
||||||
|
middleware.corsHeaders(res);
|
||||||
|
|
||||||
|
if (req.method === 'OPTIONS') {
|
||||||
|
middleware.handleOptions(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle binary uploads
|
||||||
|
const headCacheMatch = urlPath.match(/^\/avatar\/([^/]+)\/head-cache$/);
|
||||||
|
if (headCacheMatch && req.method === 'POST') {
|
||||||
|
routes.avatar.handleAvatarRoutes(req, res, urlPath, {});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse JSON body
|
||||||
|
const body = await middleware.parseBody(req);
|
||||||
|
|
||||||
|
// Store body for debug capture
|
||||||
|
if (!skipCapture && capturedRequests.length > 0 && !capturedRequests[0].body) {
|
||||||
|
capturedRequests[0].body = body;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract user context
|
||||||
|
const { uuid, name, tokenScope } = middleware.extractUserContext(body, req.headers);
|
||||||
|
|
||||||
|
// Route the request (copied from app.js to avoid modification)
|
||||||
|
await routeRequestDebug(req, res, url, urlPath, body, uuid, name, tokenScope, middleware, routes, sendJson, auth, crypto);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create HTTP server with debug wrapper
|
||||||
|
const server = http.createServer(debugWrappedHandler);
|
||||||
|
server.listen(config.port, '0.0.0.0', () => {
|
||||||
|
console.log(`HTTP Server running on port ${config.port}`);
|
||||||
|
console.log(`Redis: ${isConnected() ? 'connected' : 'NOT CONNECTED'}`);
|
||||||
|
console.log(`\n\x1b[36mDebug Dashboard: http://localhost:${config.port}/debug\x1b[0m`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create HTTPS server if certificates are available
|
||||||
|
const sslOptions = ensureSSLCertificates();
|
||||||
|
if (sslOptions) {
|
||||||
|
const httpsServer = https.createServer(sslOptions, debugWrappedHandler);
|
||||||
|
httpsServer.listen(HTTPS_PORT, '0.0.0.0', () => {
|
||||||
|
console.log(`\x1b[32mHTTPS Server running on port ${HTTPS_PORT}\x1b[0m`);
|
||||||
|
console.log(`\x1b[33mNote: Self-signed cert - add to keychain or use NODE_TLS_REJECT_UNAUTHORIZED=0\x1b[0m\n`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Route request - copied from app.js to avoid modifying original
|
||||||
|
*/
|
||||||
|
async function routeRequestDebug(req, res, url, urlPath, body, uuid, name, tokenScope, middleware, routes, sendJson, auth, crypto) {
|
||||||
|
const headers = req.headers;
|
||||||
|
|
||||||
|
// Avatar viewer routes
|
||||||
|
if (urlPath.startsWith('/avatar/')) {
|
||||||
|
await routes.avatar.handleAvatarRoutes(req, res, urlPath, body);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Customizer route
|
||||||
|
if (urlPath.startsWith('/customizer')) {
|
||||||
|
routes.avatar.handleCustomizerRoute(req, res, urlPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cosmetics list API
|
||||||
|
if (urlPath === '/cosmetics/list') {
|
||||||
|
routes.assets.handleCosmeticsList(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Single cosmetic item data API
|
||||||
|
if (urlPath.startsWith('/cosmetics/item/')) {
|
||||||
|
routes.assets.handleCosmeticItem(req, res, urlPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Static assets route
|
||||||
|
if (urlPath.startsWith('/assets/')) {
|
||||||
|
routes.assets.handleStaticAssets(req, res, urlPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Asset extraction route
|
||||||
|
if (urlPath.startsWith('/asset/')) {
|
||||||
|
routes.assets.handleAssetRoute(req, res, urlPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Download route
|
||||||
|
if (urlPath.startsWith('/download/')) {
|
||||||
|
routes.assets.handleDownload(req, res, urlPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Health check
|
||||||
|
if (urlPath === '/health' || urlPath === '/') {
|
||||||
|
routes.health.handleHealth(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Favicon
|
||||||
|
if (urlPath === '/favicon.ico') {
|
||||||
|
res.writeHead(204);
|
||||||
|
res.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JWKS endpoint
|
||||||
|
if (urlPath === '/.well-known/jwks.json' || urlPath === '/jwks.json') {
|
||||||
|
routes.health.handleJwks(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server auto-auth
|
||||||
|
if (urlPath === '/server/auto-auth') {
|
||||||
|
routes.server.handleServerAutoAuth(req, res, body);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server game profiles
|
||||||
|
if (urlPath === '/server/game-profiles' || urlPath === '/game-profiles') {
|
||||||
|
routes.server.handleServerGameProfiles(req, res, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OAuth device authorization
|
||||||
|
if (urlPath === '/oauth2/device/auth') {
|
||||||
|
routes.server.handleOAuthDeviceAuth(req, res, body);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OAuth device verification
|
||||||
|
if (urlPath === '/oauth2/device/verify') {
|
||||||
|
const query = Object.fromEntries(url.searchParams);
|
||||||
|
routes.server.handleOAuthDeviceVerify(req, res, query);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OAuth token endpoint
|
||||||
|
if (urlPath === '/oauth2/token') {
|
||||||
|
routes.server.handleOAuthToken(req, res, body);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Game session endpoints
|
||||||
|
if (urlPath === '/game-session/new') {
|
||||||
|
routes.session.handleGameSessionNew(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/game-session/refresh') {
|
||||||
|
await routes.session.handleGameSessionRefresh(req, res, body, uuid, name, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/game-session/child' || urlPath.includes('/game-session/child')) {
|
||||||
|
routes.session.handleGameSessionChild(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Authorization grant
|
||||||
|
if (urlPath === '/game-session/authorize' || urlPath.includes('/authorize') || urlPath.includes('/auth-grant')) {
|
||||||
|
routes.session.handleAuthorizationGrant(req, res, body, uuid, name, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Token exchange
|
||||||
|
if (urlPath === '/server-join/auth-token' || urlPath === '/game-session/exchange' || urlPath.includes('/auth-token')) {
|
||||||
|
routes.session.handleTokenExchange(req, res, body, uuid, name, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Session/Auth endpoints
|
||||||
|
if ((urlPath.includes('/session') || urlPath.includes('/child')) && !urlPath.startsWith('/admin')) {
|
||||||
|
routes.session.handleSession(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath.includes('/auth')) {
|
||||||
|
routes.session.handleAuth(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath.includes('/token')) {
|
||||||
|
routes.session.handleToken(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath.includes('/validate') || urlPath.includes('/verify')) {
|
||||||
|
routes.session.handleValidate(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath.includes('/refresh')) {
|
||||||
|
routes.session.handleRefresh(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account data endpoints
|
||||||
|
if (urlPath === '/my-account/game-profile' || urlPath.includes('/game-profile')) {
|
||||||
|
await routes.account.handleGameProfile(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/my-account/skin') {
|
||||||
|
await routes.account.handleSkin(req, res, body, uuid, name, routes.avatar.invalidateHeadCache);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account-data skin endpoint
|
||||||
|
if (urlPath.startsWith('/account-data/skin/')) {
|
||||||
|
const skinUuid = urlPath.replace('/account-data/skin/', '');
|
||||||
|
await routes.account.handleSkin(req, res, body, skinUuid, name, routes.avatar.invalidateHeadCache);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/my-account/cosmetics' || urlPath.includes('/my-account/cosmetics')) {
|
||||||
|
routes.account.handleCosmetics(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/my-account/get-launcher-data') {
|
||||||
|
routes.account.handleLauncherData(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/my-account/get-profiles') {
|
||||||
|
routes.account.handleGetProfiles(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bug reports and feedback
|
||||||
|
if (urlPath === '/bugs/create' || urlPath === '/feedback/create') {
|
||||||
|
res.writeHead(204);
|
||||||
|
res.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Game session delete
|
||||||
|
if (urlPath === '/game-session' && req.method === 'DELETE') {
|
||||||
|
await routes.session.handleGameSessionDelete(req, res, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Admin login
|
||||||
|
if (urlPath === '/admin/login' && req.method === 'POST') {
|
||||||
|
await routes.admin.handleAdminLogin(req, res, body);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Admin verify
|
||||||
|
if (urlPath === '/admin/verify') {
|
||||||
|
const token = headers['x-admin-token'] || url.searchParams.get('token');
|
||||||
|
await routes.admin.handleAdminVerify(req, res, token);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Admin dashboard
|
||||||
|
if (urlPath === '/admin' || urlPath === '/admin/') {
|
||||||
|
routes.admin.handleAdminDashboard(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test page for head embed
|
||||||
|
if (urlPath === '/test/head') {
|
||||||
|
routes.avatar.handleTestHeadPage(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Protected admin routes
|
||||||
|
if (urlPath.startsWith('/admin/')) {
|
||||||
|
const validToken = await middleware.verifyAdminAuth(headers);
|
||||||
|
if (!validToken) {
|
||||||
|
sendJson(res, 401, { error: 'Unauthorized. Please login at /admin' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Admin API endpoints
|
||||||
|
if (urlPath === '/admin/sessions' || urlPath === '/sessions/active') {
|
||||||
|
await routes.admin.handleActiveSessions(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/admin/stats') {
|
||||||
|
await routes.admin.handleAdminStats(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath.startsWith('/admin/servers')) {
|
||||||
|
await routes.admin.handleAdminServers(req, res, url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/admin/search') {
|
||||||
|
await routes.admin.handlePlayerSearch(req, res, url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (urlPath === '/admin/prerender-queue') {
|
||||||
|
await routes.admin.handlePrerenderQueue(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Profile lookup by UUID
|
||||||
|
if (urlPath.startsWith('/profile/uuid/')) {
|
||||||
|
const lookupUuid = urlPath.replace('/profile/uuid/', '');
|
||||||
|
await routes.account.handleProfileLookupByUuid(req, res, lookupUuid, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Profile lookup by username
|
||||||
|
if (urlPath.startsWith('/profile/username/')) {
|
||||||
|
const lookupUsername = decodeURIComponent(urlPath.replace('/profile/username/', ''));
|
||||||
|
await routes.account.handleProfileLookupByUsername(req, res, lookupUsername, headers);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Profile endpoint
|
||||||
|
if (urlPath.includes('/profile') || urlPath.includes('/user') || urlPath.includes('/me')) {
|
||||||
|
routes.account.handleProfile(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cosmetics endpoint
|
||||||
|
if (urlPath.includes('/cosmetic') || urlPath.includes('/unlocked') || urlPath.includes('/inventory')) {
|
||||||
|
routes.account.handleCosmetics(req, res, body, uuid, name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Telemetry endpoint
|
||||||
|
if (urlPath.includes('/telemetry') || urlPath.includes('/analytics') || urlPath.includes('/event')) {
|
||||||
|
sendJson(res, 200, { success: true, received: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Catch-all for unknown endpoints - important for research!
|
||||||
|
console.log(`\x1b[31m[UNKNOWN ENDPOINT]\x1b[0m ${req.method} ${urlPath}`);
|
||||||
|
const requestHost = req.headers.host;
|
||||||
|
const authGrant = auth.generateAuthorizationGrant(uuid, name, crypto.randomUUID(), null, requestHost);
|
||||||
|
const accessToken = auth.generateIdentityToken(uuid, name, null, ['game.base'], requestHost);
|
||||||
|
sendJson(res, 200, {
|
||||||
|
debug: true,
|
||||||
|
message: 'Unknown endpoint captured for research',
|
||||||
|
endpoint: urlPath,
|
||||||
|
method: req.method,
|
||||||
|
identityToken: accessToken,
|
||||||
|
sessionToken: auth.generateSessionToken(uuid, requestHost),
|
||||||
|
authorizationGrant: authGrant,
|
||||||
|
accessToken: accessToken,
|
||||||
|
tokenType: 'Bearer',
|
||||||
|
user: { uuid, name, premium: true }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch(err => {
|
||||||
|
console.error('Failed to start debug server:', err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
43
local-dev/docker-compose.yml
Normal file
43
local-dev/docker-compose.yml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
services:
|
||||||
|
# Redis/Kvrocks for session storage
|
||||||
|
kvrocks:
|
||||||
|
image: apache/kvrocks:latest
|
||||||
|
command: --bind 0.0.0.0 --dir /data
|
||||||
|
ports:
|
||||||
|
- "6666:6666"
|
||||||
|
volumes:
|
||||||
|
- ./data/kvrocks:/data
|
||||||
|
|
||||||
|
# Use the real hytale-auth-server with debug wrapper
|
||||||
|
auth-server:
|
||||||
|
build:
|
||||||
|
context: ../../hytale-auth-server
|
||||||
|
dockerfile: ../Hytale-F2P/local-dev/Dockerfile.debug
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
- "3443:3443"
|
||||||
|
environment:
|
||||||
|
- PORT=3000
|
||||||
|
- HTTPS_PORT=3443
|
||||||
|
- DOMAIN=localhost:3443
|
||||||
|
- USE_TLS=false
|
||||||
|
- DATA_DIR=/app/data
|
||||||
|
- REDIS_URL=redis://kvrocks:6666
|
||||||
|
- ADMIN_PASSWORD=localdev
|
||||||
|
- DEBUG_MODE=true
|
||||||
|
- KEY_ID=2025-10-01-sanasol
|
||||||
|
volumes:
|
||||||
|
- ./data/auth:/app/data
|
||||||
|
# Mount debug wrapper as entry point
|
||||||
|
- ./debug-wrapper.js:/app/src/debug-wrapper.js:ro
|
||||||
|
depends_on:
|
||||||
|
- kvrocks
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/health"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: hytale-local-dev
|
||||||
88
local-dev/start.sh
Executable file
88
local-dev/start.sh
Executable file
@@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Hytale F2P Local Development - Start Script
|
||||||
|
# Usage: ./start.sh
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}========================================"
|
||||||
|
echo "Hytale F2P Local Dev Environment"
|
||||||
|
echo -e "========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Create data directories
|
||||||
|
mkdir -p "$SCRIPT_DIR/data/auth" "$SCRIPT_DIR/data/kvrocks"
|
||||||
|
|
||||||
|
# Start Docker services
|
||||||
|
echo -e "${GREEN}Building and starting services...${NC}"
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
|
# Stop existing
|
||||||
|
docker compose down 2>/dev/null || true
|
||||||
|
|
||||||
|
# Build and start
|
||||||
|
docker compose up -d --build
|
||||||
|
|
||||||
|
# Wait for ready
|
||||||
|
echo -n "Waiting for server"
|
||||||
|
for i in {1..30}; do
|
||||||
|
if curl -s http://localhost:3000/health > /dev/null 2>&1; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}Server ready!${NC}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ $i -eq 30 ]; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${RED}Server failed to start! Check logs:${NC}"
|
||||||
|
docker compose logs auth-server
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo -n "."
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}========================================"
|
||||||
|
echo "Services Running"
|
||||||
|
echo -e "========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
docker compose ps
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}Endpoints:${NC}"
|
||||||
|
echo -e " Auth Server HTTP: ${GREEN}http://localhost:3000${NC}"
|
||||||
|
echo -e " Auth Server HTTPS: ${GREEN}https://localhost:3443${NC}"
|
||||||
|
echo -e " Debug Dashboard: ${GREEN}http://localhost:3000/debug${NC}"
|
||||||
|
echo -e " Admin Dashboard: ${GREEN}http://localhost:3000/admin${NC} (password: localdev)"
|
||||||
|
echo -e " JWKS: ${GREEN}http://localhost:3000/.well-known/jwks.json${NC}"
|
||||||
|
echo -e " Kvrocks: localhost:6666"
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}========================================"
|
||||||
|
echo "Using with Launcher"
|
||||||
|
echo -e "========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "Start launcher with HTTPS (recommended):"
|
||||||
|
echo -e " ${GREEN}cd $PROJECT_ROOT${NC}"
|
||||||
|
echo -e " ${GREEN}HYTALE_AUTH_DOMAIN=localhost:3443 NODE_TLS_REJECT_UNAUTHORIZED=0 npm start${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}First time SSL setup (macOS):${NC}"
|
||||||
|
echo -e " Add cert to keychain to avoid NODE_TLS_REJECT_UNAUTHORIZED:"
|
||||||
|
echo -e " ${GREEN}sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain data/auth/ssl/server.crt${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}========================================"
|
||||||
|
echo "Useful Commands"
|
||||||
|
echo -e "========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "View logs: ${GREEN}docker compose logs -f auth-server${NC}"
|
||||||
|
echo -e "Stop services: ${GREEN}docker compose down${NC}"
|
||||||
|
echo -e "Restart: ${GREEN}docker compose restart auth-server${NC}"
|
||||||
|
echo -e "Check request log: ${GREEN}cat data/auth/debug-requests.jsonl | jq${NC}"
|
||||||
|
echo ""
|
||||||
17
server/commit-msg.txt
Normal file
17
server/commit-msg.txt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
## v2.4.0
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
- **Send Logs** — One-click button to submit launcher & game logs to support. Collects launcher logs, game client logs, and config snapshot into a ZIP, uploads to server, and returns an 8-character ID to share with support ([320ca54](https://git.sanhost.net/sanasol/hytale-f2p/commit/320ca547585c67d0773dba262612db5026378f52), [19c8991](https://git.sanhost.net/sanasol/hytale-f2p/commit/19c8991a44641ebbf44eec73a0ecd9db05241c49))
|
||||||
|
- **Arabic (ar-SA) locale** with full RTL support (community contribution by @Yugurten) ([30929ee](https://git.sanhost.net/sanasol/hytale-f2p/commit/30929ee0da5a9c64e65869d6157bd705db3b80f0))
|
||||||
|
- **One-click dedicated server scripts** for self-hosting ([552ec42](https://git.sanhost.net/sanasol/hytale-f2p/commit/552ec42d6c7e1e7d1a2803d284019ccae963f41e))
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
- Fix Intel Arc iGPU (Meteor Lake/Lunar Lake) on PCI bus 00 being misdetected as discrete GPU on dual-GPU Linux systems ([19c8991](https://git.sanhost.net/sanasol/hytale-f2p/commit/19c8991a44641ebbf44eec73a0ecd9db05241c49))
|
||||||
|
- Fix stalled game processes blocking launcher operations — automatic process cleanup on repair and relaunch ([e14d56e](https://git.sanhost.net/sanasol/hytale-f2p/commit/e14d56ef4846423c1fd172d88334cb76193ee741))
|
||||||
|
- Fix AOT cache crashes — stale cache cleared before game launch ([e14d56e](https://git.sanhost.net/sanasol/hytale-f2p/commit/e14d56ef4846423c1fd172d88334cb76193ee741))
|
||||||
|
- Fix Arabic RTL CSS syntax ([fb90277](https://git.sanhost.net/sanasol/hytale-f2p/commit/fb90277be9cf5f0b8a90195a7d089273b6be082b))
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- Updated README with Forgejo URLs and server setup video ([a649bf1](https://git.sanhost.net/sanasol/hytale-f2p/commit/a649bf1fcc7cbb2cd0d9aa0160b07828a144b9dd), [66faa1b](https://git.sanhost.net/sanasol/hytale-f2p/commit/66faa1bb1e39575fecb462310af338d13b1cb183))
|
||||||
|
|
||||||
|
**Full changelog**: [v2.3.8...v2.4.0](https://git.sanhost.net/sanasol/hytale-f2p/compare/v2.3.8...v2.4.0)
|
||||||
19
test-wrapper/java-wrapper.bat
Normal file
19
test-wrapper/java-wrapper.bat
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
|
||||||
|
REM Java wrapper for Windows - strips UseCompactObjectHeaders, adds --disable-sentry
|
||||||
|
REM Uses %* string replacement instead of for-loop to preserve = signs in JVM flags
|
||||||
|
set "REAL_JAVA=%~dp0java-original.exe"
|
||||||
|
set "ARGS=%*"
|
||||||
|
|
||||||
|
REM Strip -XX:+UseCompactObjectHeaders
|
||||||
|
set "ARGS=!ARGS:-XX:+UseCompactObjectHeaders=!"
|
||||||
|
|
||||||
|
REM Check if running HytaleServer.jar and add --disable-sentry
|
||||||
|
echo !ARGS! | findstr /i "HytaleServer.jar" >nul 2>&1
|
||||||
|
if !ERRORLEVEL!==0 (
|
||||||
|
"%REAL_JAVA%" !ARGS! --disable-sentry
|
||||||
|
) else (
|
||||||
|
"%REAL_JAVA%" !ARGS!
|
||||||
|
)
|
||||||
|
exit /b !ERRORLEVEL!
|
||||||
53
test.md
Normal file
53
test.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Steam Deck Debug Commands
|
||||||
|
|
||||||
|
## GDB Stack Trace
|
||||||
|
|
||||||
|
Run patched game under gdb to get crash location:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/.hytalef2p/release/package/game/latest
|
||||||
|
|
||||||
|
gdb -ex "run --app-dir /home/deck/.hytalef2p/release/package/game/latest --java-exec /home/deck/.hytalef2p/release/package/jre/latest/bin/java --auth-mode authenticated --uuid c500dc3e-2791-4df6-be1e-5574600339c0 --name Player --identity-token eyJhbGciOiJFZERTQSIsImtpZCI6IjIwMjUtMTAtMDEtc2FuYXNvbCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjNTAwZGMzZS0yNzkxLTRkZjYtYmUxZS01NTc0NjAwMzM5YzAiLCJuYW1lIjoiUGxheWVyIiwidXNlcm5hbWUiOiJQbGF5ZXIiLCJwcm9maWxlIjp7InVzZXJuYW1lIjoiUGxheWVyIn0sImVudGl0bGVtZW50cyI6WyJnYW1lLmJhc2UiXSwic2NvcGUiOiJoeXRhbGU6c2VydmVyIGh5dGFsZTpjbGllbnQiLCJpYXQiOjE3Njk0NzkzMjgsImV4cCI6MTc2OTUxNTMyOCwiaXNzIjoiaHR0cHM6Ly9zZXNzaW9ucy5zYW5hc29sLndzIiwianRpIjoiYTAxYjI1MDItZWE1Mi00NTM2LWI3ODQtN2RjNzljMjlkZjM0In0.BtV846L9_rWRINFvDqrtg1ZJhIVQRNsrN550UULN9j5yhMxP1TJx4bDxS2bkpRtxVmkdcA_xhQWapRSlFywZAA --session-token eyJhbGciOiJFZERTQSIsImtpZCI6IjIwMjUtMTAtMDEtc2FuYXNvbCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjNTAwZGMzZS0yNzkxLTRkZjYtYmUxZS01NTc0NjAwMzM5YzAiLCJzY29wZSI6Imh5dGFsZTpzZXJ2ZXIiLCJpYXQiOjE3Njk0NzkzMjgsImV4cCI6MTc2OTUxNTMyOCwiaXNzIjoiaHR0cHM6Ly9zZXNzaW9ucy5zYW5hc29sLndzIiwianRpIjoiMzI0M2EwZTAtMjU2Mi00MzQ1LTljNGMtZWUyZDA5NDQ1NWI0In0.38ae2bCyAtjI0egmuy0v7u6caIi9hJGJFVeoeSvckQmaZMf-KaeHu4k5cF17d9eKXUxfEK_Ahjb1PTvIQhKtAA --user-dir /home/deck/.hytalesaves" ./Client/HytaleClient
|
||||||
|
```
|
||||||
|
|
||||||
|
After crash, in gdb prompt:
|
||||||
|
```
|
||||||
|
bt
|
||||||
|
bt full
|
||||||
|
info registers
|
||||||
|
quit
|
||||||
|
```
|
||||||
|
|
||||||
|
## Hex Dump Commands
|
||||||
|
|
||||||
|
Search for full hytale.com UTF-16LE:
|
||||||
|
```bash
|
||||||
|
xxd ~/.hytalef2p/release/package/game/latest/Client/HytaleClient.original | grep "6800 7900 7400 6100 6c00 6500 2e00 6300 6f00 6d00"
|
||||||
|
```
|
||||||
|
|
||||||
|
Search for partial matches:
|
||||||
|
```bash
|
||||||
|
xxd ~/.hytalef2p/release/package/game/latest/Client/HytaleClient.original | grep -i "h.y.t" | head -10
|
||||||
|
```
|
||||||
|
|
||||||
|
## Test Different Patch Modes
|
||||||
|
|
||||||
|
Restore and test:
|
||||||
|
```bash
|
||||||
|
# Restore original
|
||||||
|
cp ~/.hytalef2p/release/package/game/latest/Client/HytaleClient.original ~/.hytalef2p/release/package/game/latest/Client/HytaleClient
|
||||||
|
rm ~/.hytalef2p/release/package/game/latest/Client/HytaleClient.patched_custom
|
||||||
|
|
||||||
|
# Test UTF-16LE mode with same-length domain
|
||||||
|
HYTALE_PATCH_MODE=utf16le HYTALE_AUTH_DOMAIN=sanasol.ws HYTALE_SKIP_SENTRY_PATCH=1 HYTALE_SKIP_SUBDOMAIN_PATCH=1 npm start
|
||||||
|
|
||||||
|
# Test length-prefixed mode (default)
|
||||||
|
HYTALE_AUTH_DOMAIN=sanasol.ws HYTALE_SKIP_SENTRY_PATCH=1 HYTALE_SKIP_SUBDOMAIN_PATCH=1 npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
## Binary Validation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
file ~/.hytalef2p/release/package/game/latest/Client/HytaleClient
|
||||||
|
ldd ~/.hytalef2p/release/package/game/latest/Client/HytaleClient
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user