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

liran-funaro / fabric-x-committer / 34139940249
91%
main: 90%

Build:
Build:
LAST BUILD BRANCH: depgraph/size-scaling
DEFAULT BRANCH: main
Ran 07 Sep 2026 03:50PM UTC
Jobs 3
Files 133
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

07 Sep 2026 03:45PM UTC coverage: 90.396% (+0.01%) from 90.386%
34139940249

push

github

liran-funaro
[coordinator] Hold a waiting key's first group inline

#### Type of change

- Improvement (improvement to code, performance, etc)
- Test update

#### Description

- `SimpleManager.checkTXFree` built four heap objects for every key of every transaction that
  found the key free: the `waiting` itself, its `queue` slice, a `waiterGroup`, and that group's
  `[]*TransactionNode`. All four had the same lifetime and all four became garbage together when
  the key was released, so a workload with no contention -- where a key is claimed once and
  released once -- paid four allocations per key to describe a queue of one.
  The first group and its first member are now inline fields of `waiting`, so that case costs one
  allocation. `add` is untouched: when a second group arrives its `append` sees a slice of length
  and capacity one and moves the queue to the heap exactly as before, so contended behaviour and
  ordering are unchanged. This is storage only -- same queue contents, same release order.
- Add `BenchmarkDependencyGraphBySize`, which measures the graph's cost per transaction as the
  transaction grows, for both managers. It differs from `BenchmarkDependencyGraph` in returning
  every released batch immediately as validated rather than holding it for a simulated ten
  seconds: that benchmark's latency is there to build a large waiting set, but it also means a
  dependent shape serialises behind it and a large `-benchtime` never finishes.

#### Additional details (Optional)

Allocations per transaction, which is what this change is about and what `-benchmem` reports
exactly (medians over six runs, 200,000 transactions each):

    shape        keys/tx   allocs/tx        bytes/tx
    rw=1               1   13 -> 10         763 -> 742
    rw=4               4   30 -> 18       1,530 -> 1,440
    rw=4,bw=4          8   53 -> 29       2,525 -> 2,349

Three allocations per key, removed, which is what the diff predicts.

It saves no measurable time, and that is... (continued)

5 of 5 new or added lines in 1 file covered. (100.0%)

7 existing lines in 3 files now uncovered.

9290 of 10277 relevant lines covered (90.4%)

11382.96 hits per line

Coverage Regressions

Lines Coverage ∆ File
3
93.37
-1.66% service/coordinator/signature_verifier_manager.go
2
91.69
-0.62% mock/orderer.go
2
97.22
-2.78% service/verifier/verifier_server.go
Jobs
ID Job ID Ran Files Coverage
1 core-db-test - 34139940249.1 07 Sep 2026 03:50PM UTC 102
48.03
GitHub Action Run
2 db-test - 34139940249.2 07 Sep 2026 03:50PM UTC 133
78.12
GitHub Action Run
3 unit-test - 34139940249.3 07 Sep 2026 03:51PM UTC 95
85.0
GitHub Action Run
Source Files on build 34139940249
  • Tree
  • List 133
  • Changed 13
  • Source Changed 0
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 957b4f78 on github
  • Prev Build on depgraph/size-scaling (#34138272364)
  • Next Build on depgraph/size-scaling (#34140483056)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc