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

decentraland / social-service-ea
90%

Build:
DEFAULT BRANCH: main
Repo Added 22 Oct 2024 05:49PM UTC
Token yVQPxl84f3ylLrh667GFCB6oecdrhNj1d regen
Build 1212 Last
Files 192
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
  • 0.0.1
  • 0.0.2
  • 0.1.0
  • 0.10.0
  • 0.11.0
  • 0.12.0
  • 0.13.0
  • 0.14.0
  • 0.15.0
  • 0.16.0
  • 0.18.0
  • 0.19.0
  • 0.19.1
  • 0.2.0
  • 0.2.1
  • 0.20.0
  • 0.21.0
  • 0.21.1
  • 0.3.0
  • 0.4.0
  • 0.4.1
  • 0.4.2
  • 0.4.3
  • 0.4.4
  • 0.4.5
  • 0.5.0
  • 0.6.0
  • 0.7.0
  • 0.8.0
  • 0.8.1
  • 0.9.0
  • 1.0.0
  • 1.0.1
  • 1.0.2
  • 1.0.3
  • 1.1.0
  • 1.11.0
  • 1.2.0
  • 1.3.0
  • 1.3.1
  • 1.3.2
  • 1.3.3
  • 1.4.0
  • 1.5.0
  • 1.6.0
  • 1.7.0
  • 1.7.1
  • 1.7.2
  • 1.7.3
  • 1.7.4
  • 1.7.5
  • 1.8.0
  • add-ai-agent-context-to-readme
  • chore/add-logs-in-ws-pool
  • chore/add-logs-to-catalyst-client
  • chore/add-logs-to-rpc
  • chore/coveralls-configuration
  • chore/debug-deployment
  • chore/enhance-logs
  • chore/enhance-readme-and-setup-for-new-contributors
  • chore/fix-docs-publish
  • chore/log-time-to-get-cached-profile
  • chore/lower-trace-sample-rate-sentry
  • chore/remove-noisy-logs
  • chore/shorten-readme
  • chore/supress-redis-transactions-telemetry
  • chore/update-dcl-protocol-next
  • chore/use-sqs-and-queue-consumer-components
  • docs/adapt-docs-workflow-to-last-changes
  • docs/add-missing-endpoints
  • docs/bundle-api-specs
  • docs/deploying-preview
  • docs/fix-docs
  • docs/improve-api-spec-overview
  • docs/missing-field-in-community-creation
  • docs/openapi-bans-endpoints
  • docs/openapi-endpoints
  • docs/standarize-readme-schemas-and-agent-context
  • docs/update-http-server-url
  • docs/ws-updates-handling
  • feat/accept-call-request
  • feat/adapt-rpc-services-with-enhanced-errors
  • feat/add-analytics
  • feat/add-communities-voice-chat-info
  • feat/add-community-ranking-schema
  • feat/add-editors-choice-flagging
  • feat/add-finalize-referral-process
  • feat/add-log-messages
  • feat/add-logs
  • feat/add-name-color
  • feat/add-privacy-settings-endpoint
  • feat/add-remove-places-from-community
  • feat/add-schema-validator-component
  • feat/add-slack-notification-reaching-100-invited-users
  • feat/add-social-settings-rpc-handlers
  • feat/add-ws-transport-error-metrics
  • feat/adjust-permisions-on-actions
  • feat/adjust-ports-on-svs
  • feat/all-active-voice-chats
  • feat/allow-global-moderators-to-remove-communities
  • feat/allow-self-demoting
  • feat/atp-validator
  • feat/batch-communities-endpoint
  • feat/batch-member-communities-check
  • feat/block-banned-referral-chain
  • feat/blocks
  • feat/bump-protocol-experimental
  • feat/calculate-community-ranking
  • feat/check-community-calls-ongoing
  • feat/communities-events
  • feat/communities-invites
  • feat/communities-members
  • feat/communities-requests-reaction
  • feat/communities-voice-chat
  • feat/communities-with-active-voice-chats
  • feat/community-compliance-with-ai
  • feat/community-invites-restrictions
  • feat/community-members-ws-updates
  • feat/community-posts
  • feat/community-search-endpoint
  • feat/community-users-voice-chat-banned-users
  • feat/community-voice-chat-actions
  • feat/community-voice-chat-end-notification
  • feat/community-voice-chat-position
  • feat/community-voice-chat-started-notification
  • feat/default-communities-sorting-to-ranking
  • feat/denylist
  • feat/enable-sentry-profiling
  • feat/end-community-call
  • feat/enhance-analytics-events
  • feat/enhance-communities-analytics-events
  • feat/enhance-metrics
  • feat/enhance-updates-metrics
  • feat/enhance-ws-handler
  • feat/events-on-communities
  • feat/expire-private-voice-chats
  • feat/expose-new-endpoint-to-list-all-communities-for-global-moderators
  • feat/fail-fast-on-self-friendship-reqs
  • feat/fetch-member-requests
  • feat/fetch-profiles-from-content-server
  • feat/filter-friends-by-connectivity-status
  • feat/fire-event-when-someone-leaves-a-community
  • feat/fix-event-loop-blocking-in-update-handlers
  • feat/get-and-delete-communities
  • feat/get-banned-users
  • feat/get-communities
  • feat/get-community-handler-does-not-require-auth
  • feat/get-community-places
  • feat/get-friends-optimizations
  • feat/get-friendship-requests-optimizations
  • feat/get-incoming-rpivate-voice-chat-requests
  • feat/get-online-members-from-community
  • feat/get-public-communities
  • feat/handle-new-events-to-track-community-ranking-metrics
  • feat/hook-message-processor-to-different-event
  • feat/implement-get-online-friends-rpc
  • feat/implement-muting-crud
  • feat/implement-new-protocol-definition
  • feat/improve-possible-race-conditions
  • feat/include-friendship-status-when-getting-members
  • feat/include-if-user-is-friend-in-privacy-settings
  • feat/include-owner-name-in-communities
  • feat/increase-signature-expiration-time
  • feat/initial-communities-migrations
  • feat/integrate-sentry
  • feat/invalidate-thumbnails-cache-on-updates
  • feat/invites-to-community
  • feat/kick-ban-from-comm-voice-chats
  • feat/like-unlike-posts
  • feat/make-thumbnails-optional
  • feat/manage-requests-statuses
  • feat/managed-communities-retrieval
  • feat/members-of-public-communities-without-signed-fetch
  • feat/merge-referral-server
  • feat/missing-indexes
  • feat/missing-indexes-for-get-requests-queries
  • feat/moderators-can-only-remove-posts-they-are-authors
  • feat/more-ai-compliance-optimizations
  • feat/more-optimizations
  • feat/mute-community-voice-chat
  • feat/normalize-addresses-on-db
  • feat/notify-connectivity-when-user-accepts-request
  • feat/notify-join-on-requests
  • feat/notify-moderation-events
  • feat/notify-on-friendhsip-request
  • feat/notify-on-post-created-and-ownership-transferred
  • feat/notify-when-community-removed-because-content-violation
  • feat/on-cleanup-return-if-redis-already-closed
  • feat/on-upserting-communities-validate-first
  • feat/optimize-catalyst-calls-when-retrieving-communities-owners
  • feat/optimize-compliance-prompt
  • feat/optimize-online-community-members-query
  • feat/optimize-queries-avoiding-joining-bans
  • feat/optimize-updates-when-deleting-communities
  • feat/owner-name-on-communities
  • feat/private-communities-creation-and-edition
  • feat/private-communities-exposure-4-admins
  • feat/profiles-from-registry
  • feat/referral-login-days-process
  • feat/referral-notif
  • feat/reject-call-request
  • feat/reject-request-to-speak
  • feat/remove-100-tier-reward-key
  • feat/remove-communities-thumbnails-from-responses
  • feat/remove-ws-pool
  • feat/request-to-lower-hand
  • feat/requests-notifications
  • feat/restrict-signed-fetch
  • feat/return-unrecognized-when-status-not-found
  • feat/rewards-adapter
  • feat/rpc-context-component
  • feat/save-and-validate-max-ips-referral
  • feat/send-marketing-email
  • feat/send-more-info-in-friendship-notifications
  • feat/send-notifications-with-retry
  • feat/send-profile-info-on-upsert-and-friendship-updates
  • feat/send-rewards-for-referral
  • feat/set-member-role-endpoint
  • feat/single-membership-check
  • feat/situation-reactions-visibility
  • feat/socket-reusage-capabilities
  • feat/sort-communities-by-ranking
  • feat/sort-community-members-also-by-role
  • feat/start-call-request
  • feat/start-http-server-in-new-port
  • feat/stream-connectivity-status
  • feat/subscribe-to-private-voice-chat-updates
  • feat/subscribe-to-worlds-events-in-nats
  • feat/swag-irl-mail
  • feat/thumbnails-retrieval
  • feat/thumbnails-to-s3
  • feat/thumbnails-validations
  • feat/transfer-community-ownership
  • feat/unlist-communities
  • feat/update-community
  • feat/update-pm-settings-comms-gatekeeper
  • feat/use-common-analytics-component
  • feat/use-memory-queue-component
  • feat/use-node-18-alpine-image
  • feat/use-online-subscribers-for-community-status-updates
  • feat/use-redis-for-content-validation-cache
  • feat/use-redis-for-ws-subscribers
  • feat/user-moderation
  • feat/user-moderation-handlers
  • feat/validate-email
  • feat/validate-name-ownership
  • feat/validate-places-ownership
  • feat/voice-status-communities-endpoint
  • feat/when-using-only-member-of-sort-by-role
  • fix/401-ban-chain-bypass-missing-intermediate
  • fix/402-slack-alerts-banned-chain
  • fix/addresses-inverted-in-friendships-table
  • fix/admin-restrictions-places-and-name
  • fix/ai-compliance-dev-environment-race-condition
  • fix/always-return-the-same-community-thumbnail-url
  • fix/attach-transport-after-callbacks
  • fix/avoid-creating-new-event-emitters-every-time
  • fix/avoid-rejectected-ips-to-finalize-process
  • fix/avoid-spamming-connectivity-status-updates
  • fix/aws-bucket-integration
  • fix/block-user-on-conflict-was-failing
  • fix/bucket-integration
  • fix/bump-protocol-fixing-unblock-missing-props
  • fix/change-get-credentials-body
  • fix/check-bans-before-joining
  • fix/check-membership-only-for-unlisted
  • fix/communities-fetch
  • fix/communities-requests-edge-cases
  • fix/communities-ws-updates
  • fix/community-creation
  • fix/community-removed-ws-notification
  • fix/community-rename-notification
  • fix/connectivity-status-streaming
  • fix/connectivity-status-updates
  • fix/consider-blocks-of-users-with-no-friendship-relationship
  • fix/danglings-requests
  • fix/date-number
  • fix/deployment
  • fix/do-not-show-private-chat-statuses
  • fix/email-send-contents
  • fix/env-mismatches
  • fix/error-on-order-in-count-query
  • fix/events-integration
  • fix/events-integration-on-communities
  • fix/expose-community-by-id-endpoint
  • fix/expose-port-for-rpc-server
  • fix/flaky-tests-due-to-ports-already-in-use
  • fix/get-community-public-info-should-return-also-private-communities
  • fix/get-community-public-info-should-return-also-unlisted-communities
  • fix/get-friends-duplicated-addresses
  • fix/get-voice-chat-status
  • fix/inconsistency-when-observing-total-connections
  • fix/increment-auth-timeout
  • fix/invitations-on-unlisted-communities-dissapeared
  • fix/list-community-members
  • fix/memory-leak-debug
  • fix/memory-leak-heap-limit-and-stale-subscribers
  • fix/memory-leaks-setimmediate
  • fix/missing-column-in-select-for-sorting
  • fix/missing-glibc-from-alpine
  • fix/multiple-cleanup-calls-on-uws-transport
  • fix/normalize-address-check-community-member-role
  • fix/notification-key-should-be-action-id
  • fix/notify-affected-member-when-leaving-a-community
  • fix/notify-members-when-community-deleted-from-moderation
  • fix/observable-duration-must-be-number
  • fix/observe-active-connections-when-the-number-changes
  • fix/oom-subscriber-leak-and-heap-limit
  • fix/peers-sync-was-stringifying-result
  • fix/places-integration-4-communities
  • fix/private-and-unlisted-communities-not-showing-active-streams
  • fix/proper-codes-on-procedure-call-metrics
  • fix/publish-to-sqs-using-raw-messages
  • fix/race-condition-between-authenticating-user-and-following-messages
  • fix/referral-update-only-when-tier-is-not-granted
  • fix/renaming-community-notification
  • fix/request-places-api-using-json-content-type
  • fix/return-connection-url-as-credentials
  • fix/rpc-subscription-generator-leak
  • fix/run-integration-tests-sequentially
  • fix/run-time
  • fix/send-auth-token-when-creatings-credentials
  • fix/send-reward-correct-destination
  • fix/send-updates-to-correct-users
  • fix/sentry-spans-RPC-calls
  • fix/skip-parsed-friendship-requests-if-cant-be-parsed
  • fix/skip-updates-if-required-profile-is-not-found
  • fix/stream-connect-when-nats-broadcast-connect
  • fix/supress-standalone-telemetry
  • fix/syntax-error-on-query
  • fix/telemetry-flood
  • fix/unexpected-community-privacy-update
  • fix/unlisted-communities-hidden-for-requests-and-chat
  • fix/update-community-privacy
  • fix/update-node-version
  • fix/update-private-voice-chat-protocol
  • fix/use-ids-from-communities-with-active-voice-chats
  • fix/use-lambdas-url
  • fix/use-peers-stats-instead-of-suscribers-for-broadcasting
  • fix/various-changes
  • fix/voice-chat-status-not-null
  • fix/was-using-ts-version-of-protocol
  • fix/when-no-communities-with-active-voice-chat-return-empty-array
  • fix/wrong-request
  • fix/ws-auth-race-condition
  • fix/ws-pool-connections-tracking
  • main
  • pentreathm-patch-1
  • refactor/avoid-breaking-grafana-through-incorrect-cardinality
  • refactor/block-user
  • refactor/community-logic-component
  • refactor/componentize-friends-business-logic
  • refactor/get-blocked-user
  • refactor/get-blocking-status
  • refactor/get-friendship-requests
  • refactor/get-friendship-status
  • refactor/get-mutual-friends
  • refactor/get-profile-prop-or-default
  • refactor/migrate-logic-updates-to-component
  • refactor/move-redis-operations-to-proper-component
  • refactor/move-rpc-service-creators-to-a-router
  • refactor/move-rpc-service-creators-to-controllers-handlers
  • refactor/performance-wise
  • refactor/rpc-services-to-different-files
  • refactor/start-using-core-components
  • refactor/store-profiles-only-relevant-props-in-redis
  • refactor/unblock-user
  • refactor/upsert-friendship
  • refactor/use-job-component
  • refactor/use-lambdas-for-profiles-fetching
  • refactor/use-new-gatekeeper-endpoint-to-get-all-cvcs
  • revert-395-docs/fix-docs
  • revert/user-moderation
  • test/integration-tests
  • test/rpc-integration-tests
  • test/swr
  • wip

16 Apr 2026 11:54AM UTC coverage: 89.588% (-0.6%) from 90.219%
24508747248

push

github

web-flow
fix: prevent OOM crashes from subscriber leak and duplicate subscriptions (#407)

* fix: prevent OOM crashes from subscriber leak and duplicate subscriptions

Three critical fixes for the heap exhaustion crash (510 MB after ~62h):

1. Fix cleanup bug in ws-handler: the three cleanup steps (transport.close,
   detachUser, emitter.clear) were in a single try/catch. If transport.close()
   threw (uWS throws on closed sockets), detachUser and emitter.clear were
   skipped, permanently leaking the subscriber's emitter and generators.
   Each step is now an independent function with its own error handling.

2. Guard against duplicate subscriptions: clients can call the same stream
   RPC multiple times on one connection. Each call created another async
   generator with a 1000-item value queue, doubling memory per connection.
   Crash logs confirmed this for communityMemberConnectivityUpdate.
   Added per-(address, event) deduplication in handleSubscriptionUpdates.

3. Set explicit V8 heap limit (768 MB for 1024 MB prod containers) via
   NODE_OPTIONS env var in Dockerfile, overridable at deploy time.

* fix: add cork wrapping, subscriber metrics, reconciliation, and sScan

Hardening changes to complement the critical OOM fixes:

1. Wrap all HTTP responses in res.cork() to prevent uWS warnings about
   writes outside corked callbacks. Under GC pressure these interleaved
   writes can hold object references longer than necessary.

2. Add subscriber monitoring metrics (gauges): subscribers_local_count,
   subscribers_generators_count, subscribers_redis_set_size, and a
   subscribers_stale_cleaned counter. Reported every 30s via setInterval.

3. Add periodic stale subscriber reconciliation (every 5 min, configurable
   via SUBSCRIBER_RECONCILIATION_INTERVAL_MS). Cross-references local
   subscribers against active WS connections from wsPool and removes any
   orphaned subscribers that the cleanup path missed.

4. Replace redis.sMembers() with redis.client.sSca... (continued)

2220 of 2615 branches covered (84.89%)

Branch coverage included in aggregate %.

70 of 122 new or added lines in 7 files covered. (57.38%)

2 existing lines in 1 file now uncovered.

5472 of 5971 relevant lines covered (91.64%)

71.43 hits per line

Relevant lines Covered
Build:
Build:
5971 RELEVANT LINES 5472 COVERED LINES
71.43 HITS PER LINE
Source Files on main
  • Tree
  • List 192
  • Changed 149
  • Source Changed 8
  • Coverage Changed 149
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
24508747248 main fix: prevent OOM crashes from subscriber leak and duplicate subscriptions (#407) * fix: prevent OOM crashes from subscriber leak and duplicate subscriptions Three critical fixes for the heap exhaustion crash (510 MB after ~62h): 1. Fix cleanup ... push 16 Apr 2026 11:59AM UTC web-flow github
89.59
24456811103 fix/oom-subscriber-leak-and-heap-limit fix: move heap limit from NODE_OPTIONS to CMD args Move --max-old-space-size=768 into the CMD line alongside the other Node.js flags, matching the existing project convention. Removes the NODE_OPTIONS env var which could interact unexpectedly wit... Pull #407 15 Apr 2026 01:24PM UTC kevinszuchet github
89.59
24455772176 fix/oom-subscriber-leak-and-heap-limit fix: add cork wrapping, subscriber metrics, reconciliation, and sScan Hardening changes to complement the critical OOM fixes: 1. Wrap all HTTP responses in res.cork() to prevent uWS warnings about writes outside corked callbacks. Under GC pre... Pull #407 15 Apr 2026 01:02PM UTC kevinszuchet github
89.59
24449911581 fix/oom-subscriber-leak-and-heap-limit fix: prevent OOM crashes from subscriber leak and duplicate subscriptions Three critical fixes for the heap exhaustion crash (510 MB after ~62h): 1. Fix cleanup bug in ws-handler: the three cleanup steps (transport.close, detachUser, emitter.... Pull #407 15 Apr 2026 10:43AM UTC kevinszuchet github
90.18
23739845667 1.11.0 fix: resolve OOM crashes with heap limit, TTL-based subscribers, and SCAN (#406) * fix: resolve OOM crashes with heap limit, TTL-based subscribers, and SCAN * fix: prettier formatting in subscribers-context * revert: remove TTL-based subscriber... push 30 Mar 2026 10:25AM UTC web-flow github
90.22
23593170934 main fix: resolve OOM crashes with heap limit, TTL-based subscribers, and SCAN (#406) * fix: resolve OOM crashes with heap limit, TTL-based subscribers, and SCAN * fix: prettier formatting in subscribers-context * revert: remove TTL-based subscriber... push 26 Mar 2026 12:05PM UTC web-flow github
90.22
23543551575 fix/memory-leak-heap-limit-and-stale-subscribers perf: use mGet instead of individual get calls in community voice cache Replace Promise.all of N individual redis.get() calls with a single redis.mGet() call in getActiveCommunityVoiceChats, reducing N Redis round-trips to 1. Pull #406 25 Mar 2026 01:34PM UTC kevinszuchet github
90.22
23539722249 fix/memory-leak-heap-limit-and-stale-subscribers fix: revert subscriber tests to match SET-based source code The TTL-based subscriber changes were reverted in the source but the tests were updated to expect TTL-based behavior, causing TS compilation errors (config not in Pick<BaseComponents, 'r... Pull #406 25 Mar 2026 12:00PM UTC kevinszuchet github
90.18
23499911921 fix/memory-leak-heap-limit-and-stale-subscribers fix: pin localstack to 4.12.0 to fix CI localstack/localstack:latest broke with the 2026.03.0 release (exit code 55). Pin to 4.12.0 which was the last working version. Pull #406 24 Mar 2026 04:19PM UTC kevinszuchet github
90.18
23319900821 fix/401-ban-chain-bypass-missing-intermediate fix: walk full referral chain to detect banned ancestors The previous ban chain detection only checked 1 level up (the immediate parent referrer). If an intermediate referrer was not in the DB, or the banned wallet was 2+ hops away, the check wou... Pull #405 19 Mar 2026 10:32PM UTC root github
90.19
See All Builds (1187)
  • 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