[improve][broker]: DelayedDeliveryTracker init and addMessage
resolves: https://github.com/apache/pulsar/issues/17094
Motivation
improve perf
- we not need add lock when
MsgMetadata.hasDeliverAtTimereturn false. - use double check lock to init
DelayedDeliveryTrackerandInMemoryDelayedDeliveryTracker#addMessageaddsynchronizedto ensure thread safe
Modifications
- PersistentDispatcherMultipleConsumers.java use double check lock init DelayedDeliveryTracker
- PersistentDispatcherMultipleConsumers.java not lock when msgMetadata.hasDeliverAtTime return false
- InMemoryDelayedDeliveryTracker.java
addMessagemethod add lock to ensure thread safe
Verifying this change
- [ ] Make sure that the change passes the CI checks.
This change is already covered by existing tests:org.apache.pulsar.broker.delayed.InMemoryDeliveryTrackerTest.
(example:)
- Added integration tests for end-to-end deployment with large payloads (10MB)
- Extended integration test for recovery after broker failure
Does this pull request potentially affect one of the following parts:
If yes was chosen, please highlight the changes
- Dependencies (does it add or upgrade a dependency): (yes / no)
- The public API: (yes / no)
- The schema: (yes / no / don't know)
- The default values of configurations: (yes / no)
- The wire protocol: (yes / no)
- The rest endpoints: (yes / no)
- The admin cli options: (yes / no)
- Anything that affects deployment: (yes / no / don't know)
Documentation
Check the box below or label this PR directly.
Need to update docs?
-
[ ]
doc-required(Your PR needs to update docs and you will update later) -
[x]
doc-not-needed(Please explain why) -
[ ]
doc(Your PR contains doc changes) -
[ ]
doc-complete(Docs have been already added)
modify Motivation
@Guohaozai, Do you have time to deal with this PR?
The pr had no activity for 30 days, mark with Stale label.