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

decentraland / catalyst-storage / 30117281952
95%

Build:
DEFAULT BRANCH: main
Ran 24 Jul 2026 06:32PM UTC
Jobs 1
Files 10
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

24 Jul 2026 06:31PM UTC coverage: 94.359% (+0.3%) from 94.027%
30117281952

push

github

web-flow
feat: support cancellation signals in storeStream and storeStreamAndCompress (#109)

* feat: support cancellation signals in storeStream and storeStreamAndCompress

Both store methods accept an optional AbortSignal. On abort the store stops
consuming the source stream, tears down any in-flight transport, and rejects
with the signal's reason; a store that completes before observing the abort
is allowed to succeed, and no partial content is ever observable under the id.

For the S3 backend, destroying the source stream was never enough to cancel:
once the SDK has buffered the bytes (always, for files below the part size)
the request no longer depends on the source, so a wedged connection could keep
the returned promise pending indefinitely. The signal now aborts the managed
upload itself, tearing down its part requests.

Also fixes a latent hang in streamToBuffer: a stream destroyed without an
error emits neither 'end' nor 'error' — only 'close' — which left the
returned promise pending forever.

* fix: honor aborts after the source is consumed and harden the abort hook

addresses the review findings:

- the folder store paths now check the signal between internal phases: once the
  source stream is consumed, destroying it no longer cancels anything, so a
  compressed store could run the full compression and even commit the object
  for a cancelled request. staged stores check after the pipe and after the
  compression (nothing has touched the canonical paths yet, so the staging
  cleanup leaves the previous version intact); the in-place fallback checks
  inside the locked write and rolls back, and skips the optional compression
  when the abort arrives after its raw commit (a completed store is allowed to
  succeed, but no further work is done for it).
- the abort listener is exception-safe: stream teardown and the backend hook
  are each guarded, so a failing destroy cannot prevent the hook from running
  and neither failure can escape the signal's ev... (continued)

268 of 305 branches covered (87.87%)

Branch coverage included in aggregate %.

140 of 143 new or added lines in 6 files covered. (97.9%)

20 existing lines in 3 files now uncovered.

719 of 741 relevant lines covered (97.03%)

95.04 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
81.4
-3.45% src/content-item.ts

Coverage Regressions

Lines Coverage ∆ File
14
95.13
0.38% src/folder-based-storage-component.ts
3
81.4
-3.45% src/content-item.ts
3
82.93
0.88% src/extras/compression.ts
Jobs
ID Job ID Ran Files Coverage
1 30117281952.1 24 Jul 2026 06:32PM UTC 10
94.36
GitHub Action Run
Source Files on build 30117281952
  • Tree
  • List 10
  • Changed 6
  • Source Changed 6
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30117281952
  • b1e5415c on github
  • Prev Build on main (#30103367624)
  • Next Build on main (#30155398097)
  • 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