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

tarantool / go-storage
90%

Build:
DEFAULT BRANCH: master
Repo Added 23 Dec 2025 02:48PM UTC
Files 49
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 master
branch: master
CHANGE BRANCH
x
Reset
  • master
  • bigbes/gh-29-dummy-driver
  • bigbes/gh-29-etcd-driver
  • bigbes/gh-29-locker-helpers
  • bigbes/gh-29-locker-package
  • bigbes/gh-29-locker/dummy-driver
  • bigbes/gh-29-locker/etcd-driver
  • bigbes/gh-29-locker/locker-package
  • bigbes/gh-29-locker/storage-wiring
  • bigbes/gh-29-locker/tcs-driver
  • bigbes/gh-29-storage-wiring
  • bigbes/gh-29-tcs-driver
  • bigbes/gh-30-basic-integration-tests
  • bigbes/gh-31-readme-md
  • bigbes/gh-34-remove-mocks
  • bigbes/gh-61-implement-count
  • bigbes/gh-no-add-additional-marshallers
  • bigbes/gh-no-add-go-generate-target
  • bigbes/gh-no-add-legacy-namer
  • bigbes/gh-no-connect-unify-probin
  • bigbes/gh-no-etcdtest
  • bigbes/gh-no-fix-govulncheck
  • bigbes/gh-no-fix-interface
  • bigbes/gh-no-fix-namer-prefixes
  • bigbes/gh-no-fix-nil-hasher
  • bigbes/gh-no-fix-watch-bug
  • bigbes/gh-no-full-key-method
  • bigbes/gh-no-namer-key-prefix
  • bigbes/gh-no-prefix-check
  • bigbes/gh-no-prefixed-leading-slash
  • bigbes/gh-no-tx-storage-wrapper
  • bigbes/gh-no-unnamed-codec
  • bigbes/gh-no-update-contributing-md
  • bigbes/gh-no-update-golangci-lint
  • bigbes/release-v1.1.0
  • bigbes/release-v1.1.1
  • bigbes/release-v1.1.2
  • bigbes/release-v1.2.0
  • bigbes/release-v1.3.0
  • bigbes/release-v1.4.0
  • bigbes/release-v1.5.0
  • bigbes/tntp-7585-new-namer
  • bigbes/tntp-7587-codec-api
  • bigbes/tntp-7587-examples
  • bigbes/tntp-7587-new-namer
  • bigbes/tntp-7587-prefixed-storage-wrapper
  • bigbes/tntp-7587-store-api
  • bigbes/tntp-7587-tx-api
  • bigbes/tntp-7706-integrity-empty-watch
  • bigbes/tntp-7707-integrity-empty-range
  • bigbes/tntp-7708-watch-signal-contract
  • bigbes/tntp-7709-namer-multi-segment
  • bigbes/tntp-7710-integrity-singleton
  • bigbes/tntp-7780-fix-admin-for-connect-v2
  • ci/inline-govulncheck
  • g.rybakov/123
  • g.rybakov/gh-25-integrity-predicates
  • g.rybakov/gh-26-fix-non-empty-range
  • g.rybakov/tntp-4544-add-dummy-driver
  • g.rybakov/tntp-7387-add-ping-tcs
  • g.rybakov/tntp-7387-fix-probe-returns
  • g.rybakov/tntp-7387-remove-ssl-build-tag
  • g.rybakov/tntp-7780-connect-timeout
  • g.rybakov/tntp-7780-fix-admin-for-connect
  • gh-no-range-double-slash
  • mockird31/TNTP-4192-usage-examples
  • mockird31/fix-prefix-generate
  • mockird31/gh-23-extend-validated-result
  • mockird31/gh-24-prefix-deleteion
  • mockird31/gh-24-prefix-deletion
  • mockird31/gh-30-integration-tests-integrity.Typed
  • oleg-jukovec/connect-schema-fixes
  • oleg-jukovec/replace-etcd-client-with-interface
  • oleg-jukovec/storage-create-helper
  • origin/mockird31/gh-30-integration-tests-integrity.Typed
  • refs/tags/v1.1.0
  • refs/tags/v1.1.1
  • refs/tags/v1.1.2
  • refs/tags/v1.2.0
  • refs/tags/v1.3.0
  • refs/tags/v1.4.0
  • refs/tags/v1.5.0

29 May 2026 12:27PM UTC coverage: 89.915% (+0.009%) from 89.906%
26637173979

push

github

bigbes
hasher: accept nil and empty input as the empty-string digest

Storage backends round-trip empty stored values as nil, so a read of a
legitimately-empty value reached the validator with body=nil and exploded
at the SHA-256 hash check ("data is nil") and the RSA-PSS verifier check
("failed to get hash: data is nil"). The only workaround was
IgnoreVerificationError(), which defeats the integrity layer.

Drop the data == nil guard from sha1/sha256 — hash.Hash.Write(nil) is
well-defined, both nil and []byte{} now produce the empty-input digest.
ErrDataIsNil was internal-only; remove it.

Pin the contract at every layer: nil/empty parity in the hasher units,
sign+verify acceptance plus empty-signature rejection in rsapss, direct
empty-body validator coverage (value-only, value+hash, value+hash+sig),
and a TxPut([]byte{})/TxGet round-trip mirroring the reproducer against
every backend.

Also unflake driver/etcd locker tests: each test was creating its 30s
deadline ctx before calling createTestDriverConcrete, which spins up a
fresh embedded etcd cluster and can take >20s on slow CI runners. The
bootstrap consumed most of the budget, leaving Unlock's session.Close →
Revoke to fail at the last hop with "context deadline exceeded" — the
session is bound to the caller's ctx via concurrency.WithContext. Move
the ctx below cluster bootstrap in every locker test so the 30s bounds
only the actual locker operations. Observed on PR #107 run-tests (1.23);
1.24 and stable were green.

3807 of 4234 relevant lines covered (89.91%)

512.68 hits per line

Relevant lines Covered
Build:
Build:
4234 RELEVANT LINES 3807 COVERED LINES
512.68 HITS PER LINE
Source Files on master
  • Tree
  • List 49
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26637173979 master hasher: accept nil and empty input as the empty-string digest Storage backends round-trip empty stored values as nil, so a read of a legitimately-empty value reached the validator with body=nil and exploded at the SHA-256 hash check ("data is nil... push 29 May 2026 12:28PM UTC bigbes github
89.91
26637162934 master connect: fix etcd connection for non admin users NewEtcdStorage checked the cluster status through the Maintenance.Status function, which requires root permissions. Replace it with MemberList (serializable), which is open to any authenticated use... push 29 May 2026 12:28PM UTC bigbes github
89.91
26520148948 master test_helpers/etcd: replace internal/testing/etcd embedded helper The old internal/testing/etcd helper was built on go.etcd.io/etcd/tests/v3, which drags in a v1 build of grpc-ecosystem/go-grpc-middleware and the pre-split google.golang.org/genpro... push 27 May 2026 03:14PM UTC bigbes github
89.95
26288689338 master integrity: add ValueKey/FullKeys with prefix-aware Store accessors Codec.ValueKey returns the namer-relative value-layer key (renamed from the originally-proposed FullKey). Codec.FullKeys returns every key the namer would emit for the name — valu... push 22 May 2026 12:49PM UTC bigbes github
89.91
26234582722 master locker: add Done/Do/Prefixed helpers and make Factory an interface Done() returns a channel closed when the Locker is no longer holding the lock — either after Unlock or when the backend session is lost (TTL elapsed without renewal, connection dr... push 21 May 2026 03:08PM UTC bigbes github
90.05
26233039368 master locker: add Locker interface package and wire NewLocker into Storage Add Locker (Lock/TryLock/Unlock/Key), Options + WithTTL + ApplyOptions, sentinel errors (ErrLocked, ErrSessionExpired, ErrLockReleased, ErrUnsupported), and DefaultTTL = 60s. Al... push 21 May 2026 02:41PM UTC bigbes github
90.03
26221122596 master integrity: add WithKeyPrefix option Add WithKeyPrefix option to namer.LayeredNamer and thread it through integrity.CodecBuilder so codecs can be built with a fixed path prefix prepended to every emitted/parsed key. - Let two codecs sit in disjoi... push 21 May 2026 10:44AM UTC bigbes github
89.99
26094001569 master driver/etcd: add concurrency-based Locker Locker wraps concurrency.NewSession + concurrency.NewMutex, which require the concrete *etcd.Client. NewLocker type-asserts the stored Client to *etcd.Client; drivers built with a non-concrete Client retu... push 19 May 2026 11:24AM UTC bigbes github
89.94
26027884314 master driver/dummy: add in-memory Locker In-process Locker backed by a sync.Mutex map keyed by name. Honors per-call and lifetime ctx cancellation. Intended for tests and single-process setups. Example covers acquire / TryLock contention / release. Bu... push 18 May 2026 10:28AM UTC bigbes github
93.24
26027891400 master driver/tcs: add Locker over config.storage "Smallest mod_revision wins" admission over config.storage.put / get / keepalive / delete, with a UUID fence and a ttl/3 keepalive ticker; on transport or session loss the locker fires ErrSessionExpired.... push 18 May 2026 10:28AM UTC bigbes github
89.74
See All Builds (291)
  • 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