fix: AnnotationEnhancer chain silently discards all modifications in RocketMQMessageListenerBeanPostProcessor
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Bắt đầu từ RocketMQMessageListenerBeanPostProcessor.buildEnhancer() và theo dõi cách các bean AnnotationEnhancer đã đăng ký được kết hợp. Xác nhận rằng các thuộc tính đã được tích lũy được trả về và kiểm tra xem một enhancer có thể ghi đè topic hoặc consumerGroup hay không; pull request được liên kết cho biết công việc này đã được tiến hành.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Bug Description
In RocketMQMessageListenerBeanPostProcessor.buildEnhancer(), the composed AnnotationEnhancer lambda correctly accumulates modified attributes through all registered enhancer beans into newAttrs, but then returns the original attrs instead of newAttrs.
This makes every registered AnnotationEnhancer bean a silent no-op — attribute modifications are computed but immediately discarded.
Affected Version
2.3.6 (rocketmq-v5-client-spring-boot)
Root Cause
RocketMQMessageListenerBeanPostProcessor.buildEnhancer():
this.enhancer = (attrs, element) -> {
Map<String, Object> newAttrs = attrs;
for (AnnotationEnhancer enh : enhancers) {
newAttrs = enh.apply(newAttrs, element); // accumulates correctly
}
return attrs; // BUG: discards all changes, should be newAttrs
};
Expected Behavior
AnnotationEnhancer beans registered in the Spring context should be able to override @RocketMQMessageListener annotation attributes (e.g. topic, consumerGroup) at runtime.
Actual Behavior
All AnnotationEnhancer customizations are silently ignored. The original annotation attributes are always used.
Impact
Any application that relies on AnnotationEnhancer to dynamically override @RocketMQMessageListener attributes — for example, injecting topic or consumerGroup from environment properties — will find their customizations have no effect.
Fix
Return newAttrs instead of attrs:
return newAttrs;
A pull request with the fix has been submitted: https://github.com/apache/rocketmq-spring/pull/775
- Ngôn ngữ chính
- Java
- Star
- 2.3k
- Fork
- 941
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/rocketmq-spring
-
[Bug] RocketMQClientTemplate.receiveAsync closes the shared SimpleConsumer, breaking all subsequent operationsCó thể đã có người làm @wang-jiahua đã nhận 65 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
apache/rocketmq-spring#780 · 3 bình luận ·
-
编译报错Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/rocketmq-spring#692 · 1 bình luận ·
-
消费者注册时候对nameserver取值有点问题Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
apache/rocketmq-spring#678 · 2 bình luận ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
apache/rocketmq-spring#670 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
apache/rocketmq-spring#609 · 3 bình luận ·
Tất cả issue của apache/rocketmq-spring
Issue tương tự
-
Keyboard crashes Chrome tabsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
Julow/Unexpected-Keyboard#1490 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Vakore/ZappierGames#275 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
unitycatalog/unitycatalog#2148 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement priority: low
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
Riptide-Labs/riptide#1060 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug key bindings source editor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày