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

decentraland / social-service-ea / 29113386552
90%

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

10 Jul 2026 06:06PM UTC coverage: 90.326% (+0.02%) from 90.311%
29113386552

push

github

web-flow
feat: inform clients why a subscription stream is closed (#432)

* feat: inform clients why a subscription stream is closed

Uses the new SubscriptionStreamClosed message from @dcl/protocol: before a
server-initiated close, the stream now yields a final message carrying a
close reason (and optional detail) instead of ending silently.

- emitterToGenerator: destroy() accepts an optional close reason, exposed
  via getCloseReason() so the consumer loop can act on it after draining.
- subscribers-context: teardown paths tag their reason — SERVER_SHUTTING_DOWN
  on stop, STALE_SUBSCRIPTION on both reconciliation sweeps — and
  removeConnection() forwards an optional caller-provided reason.
- handleSubscriptionUpdates: rejected duplicate subscriptions now tell the
  client why (DUPLICATE_SUBSCRIPTION) before closing, and destroys with a
  reason yield a final stream-closed message when the service provides a
  builder for it.
- All six subscribe services build the final message with fromPartial so it
  is protobuf-complete (zero-value defaults plus the notice).

Delivery is best-effort by nature: the final message only reaches clients
whose connection is still alive (duplicate rejection, shutdown drain);
teardowns triggered by an already-dead socket have no one to inform.

* refactor: drop undeliverable subscription stream close reasons

Only the duplicate-subscription rejection can actually deliver a close notice —
the connection is still alive there. Shutdown and stale-cleanup closes run after
the socket is gone, so their reasons never reached the client. Remove that dead
plumbing: the close-reason parameter on emitterToGenerator's destroy() (and its
getCloseReason accessor), the reason threading through subscribers-context
teardown paths, and the post-loop reason forwarding in handleSubscriptionUpdates.

The duplicate-subscription path (the one that works) is unchanged.

* chore: bump @dcl/protocol to the trimmed stream-close-reason build

Repoints to t... (continued)

2354 of 2761 branches covered (85.26%)

Branch coverage included in aggregate %.

12 of 13 new or added lines in 7 files covered. (92.31%)

5881 of 6356 relevant lines covered (92.53%)

80.45 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
76.92
0.92% src/controllers/handlers/rpc/subscribe-to-private-voice-chat-updates.ts
Jobs
ID Job ID Ran Files Coverage
1 29113386552.1 10 Jul 2026 06:11PM UTC 404
91.28
GitHub Action Run
Source Files on build 29113386552
  • Tree
  • List 202
  • Changed 160
  • Source Changed 7
  • Coverage Changed 160
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #29113386552
  • aaeef434 on github
  • Prev Build on main (#29029690638)
  • 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