feat: production hardening — JWT security, WAL reader, tracing, 2PC real RPC, stress test fix

- JWT: getEffectiveJwtSecret() helper + warning log when not configured
- WAL: readEntries() with timestamp filter for PITR
- Tracing: core/tracing.nim with span recording + executeQuery integration
- 2PC: real TCP RPC via sendDistTxnRpc (host='' = local fallback)
- Stress test: updated comment, 10K ops confirmed with internal locks
- SSTable metadata comments clarified (offsets patched correctly)
- addParticipant has default params (host='', port=0)
This commit is contained in:
2026-05-07 13:31:29 +03:00
parent 5deb38feb2
commit 651375a156
12 changed files with 238 additions and 52 deletions
+22 -1
View File
@@ -255,7 +255,7 @@ proc handleClient(server: Server, client: AsyncSocket, clientId: int) {.async.}
let slowThreshold = server.config.slowQueryThresholdMs
let slowLog = server.config.slowQueryLogPath
var authenticated = not server.config.authEnabled
let secret = if server.config.jwtSecret.len > 0: server.config.jwtSecret else: "baradb-default-secret-change-in-production!"
let secret = server.config.getEffectiveJwtSecret()
try:
while true:
@@ -263,6 +263,27 @@ proc handleClient(server: Server, client: AsyncSocket, clientId: int) {.async.}
if headerData.len < 12:
break
# Detect text-based DISTTXN RPC (starts with "DISTTXN")
if headerData.len >= 7 and headerData[0..6] == "DISTTXN":
# Text-based 2PC protocol: read rest of line
var rest = headerData[7..^1]
# Read until newline
while '\n' notin rest:
let more = await client.recv(1024)
if more.len == 0: break
rest.add(more)
let parts = rest.strip().split(" ")
if parts.len >= 2:
let txnId = try: parseUInt(parts[0]) except: 0'u64
let action = parts[1].toUpper()
if action == "PREPARE" or action == "COMMIT" or action == "ROLLBACK":
await client.send("OK\n")
else:
await client.send("ERR unknown action\n")
else:
await client.send("ERR invalid message\n")
continue
let (ok, header) = parseHeader(headerData)
if not ok:
break