apache / apache/pulsar-client-cpp
[Bug] Acknowledge might fail with ResultAlreadyClosed during unload
- Vorherrschende Sprache
- C++
- Sterne
- 71
- Forks
- 90
- Ø Merge
- 2 Std. 33 Min.
- Gemergte PRs (30 T.)
- 3
Beschreibung
### Search before asking
- [X] I searched in the [issues](https://github.com/apache/pulsar-client-cpp/issues) and found nothing similar.
### Version
main
### Minimal reproduce step
Enable `ackReceipt` for https://github.com/apache/pulsar-client-cpp/blob/main/tests/extensibleLM/ExtensibleLoadManagerTest.cc
```c++
ConsumerConfiguration consumerConf;
consumerConf.setAckReceiptEnabled(true);
Consumer consumer;
Result consumerResult = client.subscribe(topicName, "sub", consumerConf, consumer);
```
### What did you expect to see?
The test passed
### What did you see instead?
```
2024-02-27 21:51:30.938 WARN [0x16b36b000] AckGroupingTracker:93 | Connection is not ready, ACK failed for [(14,0,-1,-1)]
2024-02-27 21:51:30.938 INFO [0x16b96f000] ExtensibleLoadManagerTest:145 | acked i: 0 81 ms
/Users/xuyunze/github.com/bewaremypower/pulsar-client-cpp/tests/extensibleLM/ExtensibleLoadManagerTest.cc:147: Failure
Expected equality of these values:
ackResult
Which is: AlreadyClosed
ResultOk
Which is: Ok
```
Note: I changed the log level of `AckGroupingTracker:93` to warn locally.
### Anything else?
When `HandlerBase::getCnx()` returns a null `weak_ptr`, it's retryable if the state is not `Closing` or `Closed`. We should schedule the flush again.
### Are you willing to submit a PR?
- [X] I'm willing to submit a PR!
Beitragsleitfaden
Rechercherichtung
Beginne mit tests/extensibleLM/ExtensibleLoadManagerTest.cc, insbesondere mit der Einrichtung von ackReceipt und der fehlschlagenden Assertion um Zeile 147. Verfolge AckGroupingTracker und HandlerBase::getCnx(), um den Unload-Pfad und die Retry-Bedingung zu verstehen. Fertig ist die Aufgabe, wenn der Test mit ackResult gleich ResultOk statt AlreadyClosed erfolgreich ist, wenn der Client entladen wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp
- Bereich
- distributed-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 52/100