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

hyperledger-labs / fabric-smart-client / 26634201560
71%

Build:
DEFAULT BRANCH: main
Ran 29 May 2026 11:25AM UTC
Jobs 15
Files 539
Run time 2min
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

29 May 2026 11:17AM UTC coverage: 71.233% (+0.04%) from 71.197%
26634201560

push

github

web-flow
perf(bft): per-orderer channel-slot pool to fix semaphore mutex starvation (#1490)

BFTBroadcaster.getConnection serialized every caller through the single
sync.Mutex inside a shared golang.org/x/sync/semaphore.Weighted, and spun
on a 1s-timeout Acquire retry loop when the pool was empty. Under high
broadcast concurrency this collapses into mutex starvation: every
broadcaster contends on the one semaphore regardless of which orderer it
dials, and a caller whose context is cancelled mid-acquire busy-spins
because the loop has no ctx.Done() exit.

Replace the global semaphore with per-orderer state:
  - a fixed-capacity channel of slot tokens that bounds connections per
    orderer without a mutex shared across orderers, and
  - a buffered pool of idle *Connection for reuse.

getConnection becomes a three-stage, non-spinning acquire (try pool, try
slot, then block on a select over pool / slot / ctx.Done()). SendAndRecv
wraps the send+recv round-trip in a derived context so a hung Recv is
cancelled and torn down instead of leaking.

Tests: adapt the partial-failure discard test to the per-orderer slot
accounting, and add a regression test that getConnection returns promptly
on a cancelled context.

Observed in our deployment (c=1000 stress): submit p99 6.18s -> 1.59s,
678 TPS sustained.

Signed-off-by: Evan <evanyan@sign.global>

84 of 118 new or added lines in 2 files covered. (71.19%)

11 existing lines in 4 files now uncovered.

28425 of 39904 relevant lines covered (71.23%)

2515.62 hits per line

Uncovered Changes

Lines Coverage ∆ File
24
73.96
10.38% platform/fabric/core/generic/ordering/bft.go
10
74.36
-25.64% platform/fabric/core/generic/ordering/client.go

Coverage Regressions

Lines Coverage ∆ File
5
85.54
-1.2% platform/view/services/comm/host/websocket/ws/multiplexed_provider.go
3
89.94
-0.3% platform/view/services/comm/p2p.go
2
77.94
-2.94% platform/fabric/core/generic/msp/idemix/cache.go
1
73.96
10.38% platform/fabric/core/generic/ordering/bft.go
Jobs
ID Job ID Ran Files Coverage
1 itest-fabric-twonets - 26634201560.1 29 May 2026 11:30AM UTC 477
27.32
GitHub Action Run
2 itest-fabric-iou - 26634201560.2 29 May 2026 11:34AM UTC 487
37.78
GitHub Action Run
3 itest-fabric-events - 26634201560.3 29 May 2026 11:29AM UTC 482
25.74
GitHub Action Run
4 itest-fsc-pingpong - 26634201560.4 29 May 2026 11:31AM UTC 275
30.4
GitHub Action Run
5 itest-fsc-stoprestart - 26634201560.5 29 May 2026 11:28AM UTC 275
28.82
GitHub Action Run
6 itest-fabricx-multiendorsement - 26634201560.6 29 May 2026 11:25AM UTC 504
26.22
GitHub Action Run
7 itest-fabricx-deployment - 26634201560.7 29 May 2026 11:25AM UTC 504
26.22
GitHub Action Run
8 itest-fabric-stoprestart - 26634201560.8 29 May 2026 11:33AM UTC 477
29.12
GitHub Action Run
9 utest-postgres - 26634201560.9 29 May 2026 11:26AM UTC 538
7.49
GitHub Action Run
10 itest-fabric-iouhsm - 26634201560.10 29 May 2026 11:33AM UTC 487
37.15
GitHub Action Run
11 itest-fabric-atsachaincode - 26634201560.11 29 May 2026 11:29AM UTC 482
28.26
GitHub Action Run
12 itest-fabricx-simple - 26634201560.12 29 May 2026 11:25AM UTC 504
25.36
GitHub Action Run
13 itest-fabric-atsa - 26634201560.13 29 May 2026 11:32AM UTC 477
40.59
GitHub Action Run
14 utest - 26634201560.14 29 May 2026 11:28AM UTC 538
51.24
GitHub Action Run
15 itest-fabricx-iou - 26634201560.15 29 May 2026 11:25AM UTC 506
26.58
GitHub Action Run
Source Files on build 26634201560
  • Tree
  • List 539
  • Changed 20
  • Source Changed 2
  • Coverage Changed 20
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26634201560
  • a25ef2a2 on github
  • Prev Build on main (#26579103782)
  • Delete
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