New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: InstanceStatus out of DB Watcher #32371
base: develop
Are you sure you want to change the base?
refactor: InstanceStatus out of DB Watcher #32371
Conversation
Looks like this PR is not ready to merge, because of the following issues:
Please fix the issues and try again If you have any trouble, please check the PR guidelines |
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #32371 +/- ##
===========================================
- Coverage 55.59% 55.59% -0.01%
===========================================
Files 2408 2404 -4
Lines 52997 52954 -43
Branches 10894 10889 -5
===========================================
- Hits 29465 29439 -26
+ Misses 20918 20909 -9
+ Partials 2614 2606 -8
Flags with carried forward coverage won't be shown. Click here to find out more. |
7e43624
to
c813484
Compare
b77526a
to
e035be8
Compare
As per the updates mentioned in PROJ-7 SCA-9 and ADR #74, this pull request focuses on relocating InstanceStatus entity out of DB Watcher service.
Quick context to public readers
In essence, this modification empowers RocketChat's app to directly call listeners through the
api.broadcast
global function, eliminating the reliance on MongoDB Change Stream data propagationWhy is this beneficial? It provides better control over notifying users by enabling more precise use-case management. Unlike Change Streams, which notify every action on Mongo's documents and sometimes might result in unnecessary duplicate notifications. Moreover, it contributes to the future removal of the DB Watcher deployment, thereby optimizing resource utilization.
Proposed changes
Key changes include:
dbWatchersDisabled
flag.watch.instanceStatus
listener event, subject to thedbWatchersDisabled
flag.Changes were made within the instance-status package to cater to its use case, thereby avoiding the addition of a new package containing broadcast helpers (located at app/lib/server/lib/notifyListener.ts) - similar to the approach taken with other entities recently moved out of the database watcher.
Updated use cases.
Steps to test or reproduce
DISABLE_DB_WATCHERS
flag set to true.Further comments
To maintain consistency and avoid potential regressions, event names and signatures have been kept unchanged on both the client and app sides. This decision streamlines efforts and mitigates the risk of unintended consequences.