apache / apache/pulsar

[Bug] PatternMultiTopicsConsumerImpl cannot run timer to update topic list with HashedWheelTimer

Open
#21,198 1 comment 0 reactions 0 assignees View on GitHub
Stale type/bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.