lhotari commented on code in PR #25681:
URL: https://github.com/apache/pulsar/pull/25681#discussion_r3207417558
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/delayed/InMemoryDelayedDeliveryTracker.java:
##########
@@ -122,21 +122,29 @@ private static long trimLowerBit(long timestamp, int
bits) {
}
@Override
- public boolean addMessage(long ledgerId, long entryId, long deliverAt) {
+ public synchronized boolean addMessage(long ledgerId, long entryId, long
deliverAt) {
Review Comment:
I looked again and I didn't find execution paths which would by pass the
synchronized locks of the dispatcher (included in this PR). Have you checked if
the bugs reproduce if these methods aren't synchronized? If that's the case, it
we could remove the `synchronized` handling from this PR and create a separate
PR to prevent future regressions with the `AbstractDelayedDeliveryTracker`
refactoring.
btw. One detail that annoys me is the separate handling for
`BucketDelayedDeliveryTracker` implementation in the dispatcher. It's not great
design. The `DelayedDeliveryTracker` interface should have been extended to
cover the additional integration methods instead of coupling directly to the
implementation which is the whole point of using an interface (which is in
place to allow third-part implementations by configuring
`dispatchRateLimiterFactoryClassName`)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]