Bump version to 1.1.6; fix storage bugs, tests, CI pipeline and Docker config
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
Storage fixes: - Fix bloom filter hash2 OverflowDefect (uint64 instead of int Hash) - Fix MemTable.put size calculation on overwrite (was leaking size) - Fix fuzz_test duplicate-key issues in LSM delete and SSTable tests Test fixes: - Fix stress_test.nim: replace deprecated threadpool with std/threads - Fix fuzz_test.nim: add missing imports (tables, algorithm, sets) - Fix fuzz_test.nim: var sst for close() compatibility - Remove unused imports from test_all.nim and bench_all.nim Docker / CI fixes: - Fix Dockerfile.source: invalid nimlang/nim:2.2.10-alpine tag → 2.2.10 + ubuntu:24.04 runtime - Fix Dockerfile.source healthcheck (--spider → -qO- for 200 OK) - Fix Dockerfile run comment ports (9470/9471 → 9912/9913) - Fix scripts/docker-run.sh healthcheck port (9470 → 9912) - Add ARG BUILD_DATE/VCS_REF to Dockerfile for docker-build.sh - Update all version strings 1.1.4 → 1.1.6 across nimble/docker/source/docs
This commit is contained in:
+24
-15
@@ -2,11 +2,8 @@
|
||||
## Each worker gets its own LSMTree instance (thread-safe via internal locks).
|
||||
import std/os
|
||||
import std/random
|
||||
import std/strutils
|
||||
import std/times
|
||||
import std/monotimes
|
||||
import std/sequtils
|
||||
import std/threadpool
|
||||
import barabadb/storage/lsm
|
||||
|
||||
const
|
||||
@@ -14,16 +11,24 @@ const
|
||||
OpsPerWorker = 1000
|
||||
KeySpace = 500
|
||||
|
||||
type
|
||||
WorkerArgs = tuple
|
||||
workerId: int
|
||||
dataDir: string
|
||||
errors: ptr int
|
||||
|
||||
randomize()
|
||||
|
||||
proc runWorker(workerId: int, dataDir: string): int =
|
||||
var db = newLSMTree(dataDir)
|
||||
var errors = 0
|
||||
proc runWorker(args: WorkerArgs) {.thread.} =
|
||||
var db: LSMTree
|
||||
var localErrors = 0
|
||||
{.cast(gcsafe).}:
|
||||
db = newLSMTree(args.dataDir)
|
||||
|
||||
for i in 0 ..< OpsPerWorker:
|
||||
let op = rand(0 .. 2)
|
||||
let key = "key_" & $workerId & "_" & $(rand(0 ..< KeySpace))
|
||||
let value = cast[seq[byte]]("val_" & $i & "_" & $workerId)
|
||||
let key = "key_" & $args.workerId & "_" & $(rand(0 ..< KeySpace))
|
||||
let value = cast[seq[byte]]("val_" & $i & "_" & $args.workerId)
|
||||
|
||||
case op
|
||||
of 0:
|
||||
@@ -39,12 +44,12 @@ proc runWorker(workerId: int, dataDir: string): int =
|
||||
discard
|
||||
|
||||
for k in 0 ..< KeySpace:
|
||||
let key = "key_" & $workerId & "_" & $k
|
||||
let key = "key_" & $args.workerId & "_" & $k
|
||||
let (found, _) = db.get(key)
|
||||
discard found
|
||||
|
||||
db.close()
|
||||
return errors
|
||||
args.errors[] = localErrors
|
||||
|
||||
proc main() =
|
||||
let baseDir = "/tmp/baradb_stress_test"
|
||||
@@ -57,14 +62,18 @@ proc main() =
|
||||
for i in 0 ..< NumWorkers:
|
||||
workerDirs.add(baseDir / "worker_" & $i)
|
||||
|
||||
# Run workers in parallel using threadpool
|
||||
var futures: seq[FlowVar[int]] = @[]
|
||||
# Run workers in parallel using std/threads
|
||||
var threadArr: array[NumWorkers, Thread[WorkerArgs]]
|
||||
var errorCounts: array[NumWorkers, int]
|
||||
|
||||
for i in 0 ..< NumWorkers:
|
||||
futures.add(spawn runWorker(i, workerDirs[i]))
|
||||
let args: WorkerArgs = (workerId: i, dataDir: workerDirs[i], errors: addr errorCounts[i])
|
||||
createThread(threadArr[i], runWorker, args)
|
||||
|
||||
var totalErrors = 0
|
||||
for f in futures:
|
||||
totalErrors += ^f
|
||||
for i in 0 ..< NumWorkers:
|
||||
joinThread(threadArr[i])
|
||||
totalErrors += errorCounts[i]
|
||||
|
||||
let elapsed = (getMonoTime() - start).inMilliseconds
|
||||
let totalOps = NumWorkers * OpsPerWorker
|
||||
|
||||
Reference in New Issue
Block a user