[Bug] PatternMultiTopicsConsumerImpl cannot run timer to update topic list with HashedWheelTimer
- Dominant language
- Java
- Stars
- 15.3k
- Forks
- 3.8k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 160
Description
### Search before asking
- [X] I searched in the [issues](https://github.com/apache/pulsar/issues) and found nothing similar.
### Version
pulsarClient:
org.apache.pulsar
pulsar-client-all
2.10.2
### Minimal reproduce step
Reproduce need a Long time!So I offer some content what i see。
PatternMultiTopicsConsumerImpl recheckPatternTimeout is 60s;
I can see patternMultiTopicsConsumerImpl consumer named iot-store by arthas
[arthas@1]$ ognl -c 255316f2 -x 1 "@com.*****.utils.SpringUtils@getBean('initConsumers').consumers"
@ArrayList[
@PatternMultiTopicsConsumerImpl[ConsumerBase{subscription='iot-store', consumerName='PulsarPropertyConsumerImplShared0', topic='MultiTopicsConsumer-6f265'}],
@ConsumerImpl[ConsumerBase{subscription='iot-store', consumerName='ProductEventConsumerShared0', topic='persistent://t7011854583792645/iot_S1894cf4ecaf/v1-business-iot-product'}],
@ConsumerImpl[ConsumerBase{subscription='iot-store', consumerName='DeviceEventConsumerShared0', topic='persistent://t7011854583792645/iot_S1894cf4ecaf/v1-business-iot-device'}],
@PatternMultiTopicsConsumerImpl[ConsumerBase{subscription='iot-store', consumerName='PulsarEventConsumerImplShared0', topic='MultiTopicsConsumer-3869d'}],
@PatternMultiTopicsConsumerImpl[ConsumerBase{subscription='iot-store', consumerName='PulsarServiceUpConsumerImplShared0', topic='MultiTopicsConsumer-f375b'}],
@PatternMultiTopicsConsumerImpl[ConsumerBase{subscription='iot-store', consumerName='PulsarServiceDownConsumerImplShared0', topic='MultiTopicsConsumer-88e4c'}],
]
But HashedWheelTimer wheel don't have it,Maybe this method is error to watch timing work 。But PatternMultiTopicsConsumerImpl RecheckPatternTimeout timing work must not exec;
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
[arthas@1]$ ognl -c 255316f2 -x 4 "@com.das.libcore.web.utils.SpringUtils@getBean('pulsarClient').timer.wheel" | grep task=@PatternMultiTopicsConsumerImpl
### What did you expect to see?
PatternMultiTopicsConsumerImpl recheckPatternTimeout can exec Regularly;
### What did you see instead?
PatternMultiTopicsConsumerImpl recheckPatternTimeout can’t exec Regularly;
### Anything else?
_No response_
### Are you willing to submit a PR?
- [ ] I'm willing to submit a PR!
Contributor guide
Research direction
Start by locating PatternMultiTopicsConsumerImpl and its recheckPatternTimeout scheduling around HashedWheelTimer. Reproduce the long-running 2.10.2 scenario or inspect the timer state described with Arthas. Done means the recheckPatternTimeout task executes regularly and updates the pattern topic list.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100