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,10 +24,10 @@ proc hash1*(bf: BloomFilter, data: openArray[byte]): uint64 =
|
||||
result = uint64(!$h)
|
||||
|
||||
proc hash2*(bf: BloomFilter, data: openArray[byte]): uint64 =
|
||||
var h: Hash = 5381
|
||||
var h: uint64 = 5381
|
||||
for b in data:
|
||||
h = ((h shl 5) + h) + Hash(b)
|
||||
result = uint64(h)
|
||||
h = ((h shl 5) + h) + uint64(b)
|
||||
result = h
|
||||
|
||||
proc getHashes(bf: BloomFilter, data: openArray[byte]): seq[int] =
|
||||
let h1 = bf.hash1(data)
|
||||
|
||||
@@ -68,15 +68,17 @@ proc put*(mt: var MemTable, key: string, value: seq[byte], timestamp: uint64, de
|
||||
let entrySize = key.len + value.len + 16
|
||||
if entrySize > mt.maxSize:
|
||||
return false
|
||||
if mt.size + entrySize > mt.maxSize and mt.entries.len > 0:
|
||||
return false
|
||||
let entry = Entry(key: key, value: value, timestamp: timestamp, deleted: deleted)
|
||||
let pos = mt.entries.lowerBound(entry, proc(a, b: Entry): int = cmp(a.key, b.key))
|
||||
if pos < mt.entries.len and mt.entries[pos].key == key:
|
||||
let oldSize = mt.entries[pos].key.len + mt.entries[pos].value.len + 16
|
||||
mt.entries[pos] = entry
|
||||
mt.size += entrySize - oldSize
|
||||
else:
|
||||
if mt.size + entrySize > mt.maxSize and mt.entries.len > 0:
|
||||
return false
|
||||
mt.entries.insert(entry, pos)
|
||||
mt.size += entrySize
|
||||
mt.size += entrySize
|
||||
return true
|
||||
|
||||
proc get*(mt: MemTable, key: string): (bool, Entry) =
|
||||
|
||||
Reference in New Issue
Block a user