• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

codenotary / immudb / 25360351619
85%
master: 85%

Build:
Build:
LAST BUILD BRANCH: chore/test-followups
DEFAULT BRANCH: master
Ran 05 May 2026 06:04AM UTC
Jobs 1
Files 311
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 May 2026 04:37PM UTC coverage: 84.989% (-0.3%) from 85.255%
25360351619

Pull #2094

gh-ci

vchaindz
perf: hot-path allocation and lock-contention fixes

Seven independent improvements driven from a manual review of
allocations and lock-holding patterns in the read/write hot paths.
Each fix is self-contained and on-disk format-neutral.

P1 — sync() vLog lock convoy
embedded/store/immustore.go (sync)

  The for-range over s.vLogs called defer s.releaseVLog(i+1) inside
  the loop. Go stacks defers until the enclosing function returns,
  so all per-vLog locks were held for the full duration of every
  vLog.Flush + vLog.Sync of every other vLog, blocking concurrent
  readers on vLogsCond for the entire sync window. Replaced the
  defer with a per-iteration IIFE so each vLog drops its lock as
  soon as its own flush+sync completes. No reordering of the actual
  flush/sync calls; only the lock-release timing changes.

P2 — zero-copy snapshot reads
embedded/tbtree/{tbtree,snapshot}.go

  TBtree.Get and Snapshot.Get always finish with `return cp(v), …`
  where cp performs make+copy of the value bytes — even on cache
  hits served entirely from already-immutable in-memory leafValue
  slices. The defensive copy exists only to protect against caller
  mutation. Added GetReadonly companions next to each (additive
  API, no behaviour change for existing callers): same body minus
  the cp, with a doc-comment that the returned slice is borrowed
  and must not be mutated. Migrating callers is intentionally a
  separate audit pass — every callsite needs a hand-check before
  switching.

P4 — per-tx scratch buffer in commit loops
embedded/store/immustore.go (commitDurable, sync)

  Both commit loops allocated `cb := make([]byte, s.cLogEntrySize)`
  inside the loop body, once per transaction in a batch. cLog.Append
  ultimately routes to AppendableFile.write, which copies the input
  into its own writeBuffer (singleapp/single_app.go:477), so the
  input slice is not retained — safe to hoist a single 12- or
  44-byte buffer outside the loop and reuse it across iteration... (continued)
Pull Request #2094: perf(s3): wave 1-4 remote-storage performance + sql index-only COUNT + hot-path fixes

601 of 855 new or added lines in 16 files covered. (70.29%)

8 existing lines in 3 files now uncovered.

45131 of 53102 relevant lines covered (84.99%)

126741.92 hits per line

Uncovered Changes

Lines Coverage ∆ File
108
64.59
-35.41% embedded/appendable/remoteapp/remote_storage_reader.go
33
86.18
-1.42% embedded/appendable/multiapp/multi_app.go
29
91.12
-1.49% embedded/sql/catalog.go
22
83.8
-2.16% embedded/sql/row_reader.go
16
51.52
embedded/appendable/remoteapp/lazy_remote_reader.go
11
91.71
-2.38% embedded/tbtree/snapshot.go
11
90.18
-0.48% embedded/tbtree/tbtree.go
7
83.26
-0.04% embedded/sql/stmt.go
4
94.52
-5.48% embedded/appendable/remoteapp/options.go
4
83.92
-1.0% embedded/store/key_reader.go
3
94.5
-2.56% embedded/appendable/multiapp/options.go
2
82.14
2.78% embedded/sql/count_row_reader.go
2
83.65
-0.06% embedded/store/immustore.go
2
80.28
0.03% pkg/server/server.go

Coverage Regressions

Lines Coverage ∆ File
4
83.65
-0.06% embedded/store/immustore.go
2
86.18
-1.42% embedded/appendable/multiapp/multi_app.go
2
91.94
-0.06% embedded/appendable/remoteapp/remote_app.go
Jobs
ID Job ID Ran Files Coverage
1 25360351619.1 05 May 2026 06:04AM UTC 311
84.99
Source Files on build 25360351619
  • Tree
  • List 311
  • Changed 18
  • Source Changed 0
  • Coverage Changed 18
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #2094
  • PR Base - master (#25122424304)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc