-
Notifications
You must be signed in to change notification settings - Fork 75
Performance/memory optimizations, stability/bug fixes, and small enhancements #183
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
base: main
Are you sure you want to change the base?
Conversation
popduke
commented
Oct 14, 2025
- Optimizations:
- Reduce reset and I/O overhead in InboxStore/DistWorker
- Optimize TopicLevelTrie to reduce remove overhead
- Dynamic sending window for QoS1/2 messages
- Fixes:
- Fix range lookup key in InboxCheckSubScheduler
- Enforce strict FIFO for permission checks
- Conditionally clear batch-call state to avoid task leaks
- Fix DistWorkerCleaner halting
- Schedule on-demand hint/confirm timeout to keep the fetch loop running
- Enhancements:
- Add API to retrieve inbox state
- Report drop events on delete
- New event for successful retained-message matching
- RedundantRangeRemovalBalancer detects and removes zombie ranges
- Add @JsonMerge to service config classes to simplify config merging
2. Simplify client range router patching mechanism
… and reduce memory overhead
2. Only report tenant metrics from leader co-proc
2. adjust default values of gc params
1. do not early confirm when single node 2. reduce message complexity
2. Fix potential consistency issue in TenantRouteCache and TopicIndex
2. try drain staging buffer immediately after buffering message
…config file complexity further
base-scheduler/src/main/java/org/apache/bifromq/basescheduler/Batcher.java
Show resolved
Hide resolved
} | ||
List<CompletableFuture<Void>> distFutures = new LinkedList<>(); | ||
ConcurrentMap<String, TopicFanout.Builder> tenantTopicFanOuts = new ConcurrentHashMap<>(); | ||
ConcurrentMap<String, Map<String, AtomicInteger>> tenantTopicFanOuts = new ConcurrentHashMap<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like "tenantTopicFanOuts" is a local var, is it possiable to use HashMap and Integer for fanout tracking?
|
||
public void reset(boolean abort) { | ||
if (abort) { | ||
batchedTasks = new LinkedList<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For batch schedulers, some are Dequeue with length limit some are unbounded. Here is a linked list. So what is the design tradeoff behind that?