RockteMQ-AI commented on issue #1434: URL: https://github.com/apache/rocketmq-clients/issues/1434#issuecomment-6313422774
## 🤖 Bot Evaluation — Verified Bug **Classification:** `type/bug` | **Confidence:** High | **Status:** ✅ Verified ### Summary The bug is confirmed against the source code. `LiteSimpleConsumer::change_invisible_duration` sends the lite topic but never sets `suspend = true`, diverging from the Java client behavior. ### Analysis In PR #1381 (which introduces `LiteSimpleConsumer`), the Rust implementation delegates to `Client::change_invisible_duration_inner`, which builds `ChangeInvisibleDurationRequest` with `lite_topic` but hardcodes `suspend: None` unconditionally. No Rust code path ever sets `suspend`. In contrast, the Java client (`ConsumerImpl#wrapChangeInvisibleDuration`, lines 154-158) sets both `liteTopic` and `setSuspend(true)` when `isLiteConsumer() && liteTopic present`. ### Impact Without `suspend = true`: - The broker only updates `nextVisibleTime` for this single offset (instead of suspending the whole lite topic queue) - The call counts towards delivery attempts (instead of being decremented) - Order within a lite topic is not preserved during retry ### Files Referenced - `rust/src/client.rs` — `change_invisible_duration_inner` - `rust/src/lite_simple_consumer.rs` (PR #1381) - `java/client/src/main/java/org/apache/rocketmq/client/java/impl/consumer/ConsumerImpl.java` (lines 154-158) ### Recommendation This is a valid bug. The fix should set `suspend: true` in the `ChangeInvisibleDurationRequest` when the lite topic is present, matching the Java behavior. --- *Automated evaluation by github-manager bot. Maintainers: please review and confirm.* -- 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]
