• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In
You are now the owner of this repo.

hyperledger-labs / fabric-smart-client
71%

Build:
DEFAULT BRANCH: main
Repo Added 19 Feb 2026 01:34AM UTC
Token 2ZD9nBTBJg6N8NJjhbgg4nAhR8SewdDLj regen
Build 985 Last
Files 539
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

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • 1183-fabricx-support-for-channel-write-policy
  • 1195-fabricx-support-for-sidecar-ledger-api
  • 1202-fabricx-support-for-getconfigtransaction
  • 1339_Join_typo
  • 1343-bugconfig-service-yaml-tags-are-not-respected
  • 1389-choreview-service-runner-for-initiateview
  • 885-grpc-error-messages
  • 967-choreview_service-refactoring-and-clenaup
  • ISSUE-1404
  • ISSUE-1405
  • SA_1211
  • SA_1214
  • SA_1243
  • SA_1244
  • SA_1357
  • SA_1392
  • SA_1394
  • SA_1469
  • SA_doc_node_bench
  • SA_multiendorser
  • SA_new_itest
  • SA_test_1165
  • SA_test_1168
  • SA_transaction_tests
  • SA_unflake_fabricx_iou_test
  • Soumya8898/native-histogram-support
  • Soumya8898/update_github_actions
  • cleanup/replace-fsouza-with-moby-client
  • codex/issue-1358-x509-functional-verification
  • committer-mtls
  • committer-v0.1.8
  • committer-v0.1.9
  • common-utils
  • community-call
  • contrib-bots
  • contrib-docs
  • contributor-process
  • coverage-pkg-utils-proto
  • coverage-platform-common-utils
  • coverage-platform-common-utils-cache
  • coverage-platform-common-utils-lazy
  • coverage-platform-fabric-core-generic-finality
  • coverage-platform-fabric-core-generic-ledger
  • coveralls.io
  • dependabot/go_modules/github.com/go-jose/go-jose/v4-4.1.4
  • dependabot/go_modules/github.com/ipld/go-ipld-prime-0.23.0
  • dependabot/go_modules/github.com/jackc/pgx/v5-5.9.0
  • dependabot/go_modules/github.com/jackc/pgx/v5-5.9.2
  • dependabot/go_modules/go.opentelemetry.io/otel/sdk-1.40.0
  • dependabot/go_modules/go.opentelemetry.io/otel/sdk-1.43.0
  • dependabot/go_modules/google.golang.org/grpc-1.79.3
  • dependabot/go_modules/platform/fabric/services/state/cc/query/google.golang.org/grpc-1.79.3
  • dependabot/go_modules/tools/google.golang.org/grpc-1.79.3
  • dependabot/pip/integration/benchmark/plots/pillow-12.2.0
  • docs/database-layout
  • docs/runtime-db-access
  • endpoint-service-no-ip-resolution
  • f-comm-rework
  • f-config-service-update
  • f-endpoint-service-improvements
  • f-fabricx-sidecar-configuration
  • f-mtls-fix-config
  • fabric-x-dep
  • fabric-x-membership
  • fabricx-committer-1.0.0-alpha
  • fabricx-v1.0.0
  • feat/copy-query-builder-to-fabric-vault
  • feat/vaultstore-squirrel-migration
  • feature/add-grpc-p2p-host
  • fix-cached-identity-signing
  • fix-core-yaml-validation-errors
  • fix-discovery-data-race
  • fix-flaky-parallel-tests
  • fix-flaky-query-test-1250
  • fix-grpc-test-flakiness-1263
  • fix-grpc-tls-merge
  • fix-issue-1374-msp-flaky-tests
  • fix-membership-nil-panic
  • fix-opt-in-hsm
  • fix/bft-broadcast-discard-on-success
  • fix/clientconn-cache-per-network
  • fix/config-service-getint-prefix-wrapper
  • fix/fabricx-arma-broadcaster-alias
  • fix/fabricx-proposal-response-nil-guard
  • fix/flaky-service-isme-test
  • fix/squirrel-migration
  • fix/squirrel-migration-auditinfo
  • fix/squirrel-migration-simplekeydata-unversioned
  • flaky-tests
  • go-kit
  • go.yaml
  • grpc-validate-tlscerthash
  • issue-1093-idemix-curves
  • issue-1233-msp-generic-coverage
  • issue-1233-msp-generic-x509-coverage
  • issue-1233-msp-mgmt-coverage
  • issue-1233-msp-testtools-coverage
  • issue-1233-msp-tlsgen-coverage
  • issue-1233-node-start-profile-coverage
  • issue-1284-fix-flaky-postgres-test
  • issue-1295-fabricx-tls
  • issue-1368-fix-local-ip-extraction
  • issue-1425-view-tests
  • issue-1429-endorser-tests
  • issue-artifactsgen-fabricx
  • issue-templates
  • libp2p
  • linter
  • main
  • metric-catalog
  • osc/issue-1324-length-race
  • otel-log-v0.19
  • pkg-tests
  • refactor-signal-handling
  • somesh/issue-1036-idemix-provider-memory
  • somesh/issue-1093-idemix-curve-config
  • somesh/issue-1112-endpoint-tls-enabled
  • somesh/issue-1112-fabric-client-tls
  • somesh/issue-1112-metrics-server
  • somesh/issue-1112-ordering-tls
  • somesh/issue-1112-servername-override
  • somesh/issue-1112-web-tls-naming
  • somesh/issue-1140-fabricx-cached-endorser-identities
  • somesh/issue-1145-1295-runnable
  • somesh/issue-1146-fabricx-cached-envelope-identities
  • somesh/issue-1228-get-namespace-policies
  • somesh/issue-1228-namespace-policies
  • somesh/issue-1233-id-x509-tests
  • somesh/issue-1277-docs-restructure
  • somesh/issue-1289-utility-tests
  • somesh/issue-1290-testing-docs
  • somesh/issue-1297-tls-config
  • somesh/issue-1302-tracing-success
  • somesh/issue-1353-contribution-process
  • somesh/issue-1355-contribution-prototype
  • somesh/issue-1374-x509-flaky
  • somesh/issue-1414-readme-wording
  • somesh/issue-1437-events-tests
  • somesh/issue-1443-go1263
  • somesh/issue-183-node-panic-cleanup
  • somesh/issue-183-view-api-errors
  • somesh/issue-209-config-validate
  • somesh/issue-209-config-validator
  • somesh/issue-474-query-peer-failover
  • somesh/issue-719-recipient-node
  • somesh/issue-797-comm-bench
  • somesh/issue-802-fabricx-dig-register-move
  • test/comm-session-unit-tests
  • test/core-generic-endpoint-coverage
  • test/core-generic-fabricutils-coverage
  • test/core-generic-rwset-coverage-1441
  • test/memory-driver-unit-tests
  • test/rwset-coverage
  • test/services-state-coverage-1431
  • test/storage-service-unit-tests
  • test/tracing-unit-tests-1424
  • test/view-services-id-coverage
  • testify-cleanup
  • thelper
  • tmp/issue-1437-clean
  • tparallel
  • update-golangci-v2.11.4
  • update-linter
  • upstream-pr/bft-channel-slot
  • upstream/fabricx-endpoint-parser
  • view-api-docs
  • view-ctx

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

Relevant lines Covered
Build:
Build:
39904 RELEVANT LINES 28425 COVERED LINES
2515.62 HITS PER LINE
Source Files on main
  • Tree
  • List 539
  • Changed 20
  • Source Changed 2
  • Coverage Changed 20
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26634201560 main 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 A... push 29 May 2026 11:25AM UTC web-flow github
71.23
26617926180 upstream-pr/bft-channel-slot Merge cf57d7ae5 into 4544a0cd0 Pull #1490 29 May 2026 04:32AM UTC web-flow github
71.24
26617101801 upstream-pr/bft-channel-slot Merge 71255f8da into 4544a0cd0 Pull #1490 29 May 2026 04:07AM UTC web-flow github
71.22
26596973206 feat/copy-query-builder-to-fabric-vault Merge f4bb0ebe7 into 4544a0cd0 Pull #1478 28 May 2026 07:31PM UTC web-flow github
70.9
26580051470 go-kit Merge 4d930cc45 into 4544a0cd0 Pull #1488 28 May 2026 02:20PM UTC web-flow github
71.22
26579103782 main fix(fabric/ordering): always discard failed connections in BFT broadcast (#1485) * fix(fabric/ordering): always discard failed connections in BFT broadcast Broadcast() only ran its usedConnections cleanup on the overall-failure path. When a broa... push 28 May 2026 02:04PM UTC web-flow github
71.2
26577972700 fix/bft-broadcast-discard-on-success Merge 07ef4feda into 328bc541b Pull #1485 28 May 2026 01:41PM UTC web-flow github
71.21
26577080922 go.yaml Merge 21cc3e503 into 328bc541b Pull #1486 28 May 2026 01:25PM UTC web-flow github
70.93
26576347505 go.yaml Merge cdfcbb401 into 328bc541b Pull #1486 28 May 2026 01:11PM UTC web-flow github
70.97
26570305140 main Enable TLS for Fabric-X Committer Container (#1298) * refactor(fabricx)!: Enable TLS for committer all-in-one container in fabric-x integration tests Signed-off-by: Shashank <yshashank959@gmail.com> Signed-off-by: Marcus Brandenburger <bur@zuri... push 28 May 2026 11:00AM UTC web-flow github
70.95
See All Builds (713)

Badge your Repo: fabric-smart-client

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • Settings
  • Repo on GitHub
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