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

decentraland / comms-gatekeeper / 25229256389 / 1
85%
main: 85%

Build:
DEFAULT BRANCH: main
Ran 01 May 2026 07:23PM UTC
Files 296
Run time 7s
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

01 May 2026 07:21PM UTC coverage: 86.537% (+0.03%) from 86.504%
25229256389.1

push

github

web-flow
refactor: extract room metadata sync and add scene admins to metadata (#261)

* refactor: extract room metadata sync and add scene admins to metadata

room metadata exposed only banned addresses; clients also need the set
of effective admins to render admin badges and pre-validate admin
actions before hitting the gatekeeper.

a new logic component (src/logic/room-metadata-sync) owns refreshing
scene/world room metadata. it exposes refreshRoomMetadata /
updateRoomMetadataForRoom for full reconciliation, and incremental
addBan / removeBan / addAdmin / removeAdmin that wrap the livekit array
primitives. the four mutation handlers (ban add/remove, admin add/remove)
use the incremental path, which drops 1-2 db queries plus ~3 worlds /
lands http calls per mutation.

webhook-driven refreshes are throttled per room with a 60s cooldown so
participant_joined doesn't trigger a full refresh on every join. the
cooldown is set up-front so concurrent webhooks can't both pass the
gate, and self-prunes stale entries to keep the map bounded.

other fixes folded in:
- livekit.getRoomName falls back to the legacy comms-prefix format for
  worlds without a sceneid (real legacy rooms) and throws for non-world
  without a sceneid. all four mutation paths compute the room name
  before any db write so a strict-throw cannot leave db and metadata
  partially mutated.
- addSceneBan persists the ban first, then runs kick + metadata update
  in parallel as best-effort, so a failed db write no longer leaves a
  participant kicked but unbanned.
- removeSceneAdminHandler lowercases the payload address once after
  EthAddress.validate so a checksum-cased input no longer leaves stale
  entries in the lowercase-keyed metadata array.
- land-lease holders are included in the admins union, with errors
  caught locally so a flaky lease service cannot drop bans / admins
  from the metadata write.

* refactor: use @dcl/memory-cache-component for the webhook refresh cooldown

replaces the lo... (continued)

1153 of 1478 branches covered (78.01%)

Branch coverage included in aggregate %.

5988 of 6774 relevant lines covered (88.4%)

37.55 hits per line

Source Files on job 25229256389.1
  • Tree
  • List 296
  • Changed 96
  • Source Changed 12
  • Coverage Changed 96
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 25229256389
  • 1c3b907c on github
  • Prev Job for on main (#25191624580.1)
  • Next Job for on main (#25802318683.1)
  • 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