mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-07-30 19:46:17 +00:00
multiRelayPoolReturnsContentFromEachRelay flaked with "expected:<from-b> but was:<null>": the SubscriptionListener wrote the per-relay results into a plain HashMap/HashSet, but each relay delivers its EVENT/EOSE on its own InProcessWebSocket scope (Dispatchers.Default) and PoolRequests dispatches the listener callbacks outside any lock. Two relays therefore call `received[relay] = ...` concurrently, and a HashMap.put racing a rehash can drop an entry, leaving a relay's value null and failing the assertion. Use ConcurrentHashMap and ConcurrentHashMap.newKeySet() for the shared collections. Reproduced within 7 runs before the fix; 80 stress runs clean after. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HeAjLDNBvGPjb5bfViU3ad