Skip to content

refactor(v3): non-blocking event bus with per-room isolation and backlog monitoring - #116

Merged
RikaCelery merged 2 commits into
mainfrom
refactor-non-blocking-event-bus
Jun 17, 2026
Merged

refactor(v3): non-blocking event bus with per-room isolation and backlog monitoring#116
RikaCelery merged 2 commits into
mainfrom
refactor-non-blocking-event-bus

Conversation

@RikaCelery

Copy link
Copy Markdown
Owner

Summary

  • EventBus: tryEmit-first with backlog tracking, summary logging on 30s/1000-count threshold, drain notification
  • Actor: slow handler monitoring (>500ms WARN) with nanoTime timing
  • ConfigComponent: file I/O async with Dispatchers.IO, PersistConfig fully async via scope.launch
  • SessionComponent: ConcurrentHashMap decrypt key cache, pollingLoop first-delay ±500ms jitter, sub to PersistConfig
  • PostProcessorComponent: per-room Channel+Job dispatch, RecordingStopped lifecycle cleanup, global Semaphore retained
  • RequestBus: fix missing cancel() on CompletableDeferred after timeout
  • Tests: 32 tests across EventBus, Actor, RequestBus, DataChannel, OrderedEmitter, ConfigComponent, PostProcessorComponent
  • Docs: sync README_zh-CN with English README

Test plan

  • ./gradlew test — 32 tests pass
  • Deploy and run with multiple rooms, verify no blocking in logs
  • Trigger high load (many rooms + large post-processing files), verify backlog warnings appear then clear

… backlog monitoring

- EventBus: tryEmit-first with backlog tracking, summary logging on interval/count threshold, drain notification
- Actor: slow handler monitoring (>500ms WARN) with nanoTime timing
- ConfigComponent: file I/O async with Dispatchers.IO, PersistConfig fully async via scope.launch
- SessionComponent: ConcurrentHashMap decrypt key cache, pollingLoop first-delay ±500ms jitter, sub to PersistConfig
- PostProcessorComponent: per-room Channel+Job dispatch, RecordingStopped lifecycle cleanup, global Semaphore retained
- RequestBus: fix missing cancel() on CompletableDeferred after timeout
- Tests: 32 tests across EventBus, Actor, RequestBus, DataChannel, OrderedEmitter, ConfigComponent, PostProcessorComponent
Add missing sections: maskSensitiveLogs config, /mask/toggle and
/mask/status API endpoints, log masking documentation, language
switcher link.
@RikaCelery
RikaCelery merged commit 3a30f4a into main Jun 17, 2026
1 check passed
@RikaCelery
RikaCelery deleted the refactor-non-blocking-event-bus branch June 17, 2026 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant