调用三方时负载均衡失败导致业务代码获取contextMgr为空
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách lần theo đường dẫn LoadBalancer.chooseServer bị lỗi qua InvokerUtils.reactiveInvoke và callback AsyncResponse được nêu trong issue. Kiểm tra cách ContextUtils quản lý ngữ cảnh invocation xung quanh invocation.next và so sánh với bên gọi CompletableFuture.get. Được xem là hoàn tất khi lệnh gọi bên thứ ba bị lỗi không còn để mã nghiệp vụ ở trạng thái có contextMgr null; thêm hoặc chạy kiểm thử hồi quy cho đường dẫn lỗi này.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
版本:1.3.10
代码实现:业务为REST接口,非Reactive模式,业务调用三方接口为Reactive模式,调用三方结束后,通过CompletableFuture的get方法获取三方调用结果后返回。
问题场景:压测的过程中,因三方未扩容,压测一段时间后负载均衡失败,LoadBalancer.chooseServer返回null,导致了InvokerUtils的reactiveInvoke方法传给invocation.next的AsyncResponse被调用:
invocation.next(ar -> {
ContextUtils.setInvocationContext(invocation.getParentContext());
try {
invocation.getInvocationStageTrace().finishHandlersResponse();
invocation.onFinish(ar);
asyncResp.handle(ar);
} finally {
ContextUtils.removeInvocationContext();
}
});
以上的ContextUtils.removeInvocationContext()语句执行,导致ContextUtils中的contextMgr被清理,如下业务代码执行触发空指针异常:
ContextUtils.getInvocationContext().getLocalContext().put(CommonConstant.RETURN_CODE,0)
- Ngôn ngữ chính
- Java
- Star
- 1.9k
- Fork
- 813
- Merge trung bình
- 8 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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/servicecomb-java-chassis
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
apache/servicecomb-java-chassis#5106 ·
-
question
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
apache/servicecomb-java-chassis#5153 · 1 bình luận ·
-
[QUESTION] - 请发布3.x的最新版本 Đang mởquestion
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
apache/servicecomb-java-chassis#5146 ·
-
[FEATURE] - When will ServiceComb support Spring Boot 4.x, Spring Framework 7.x, and Jackson 3.x? Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
apache/servicecomb-java-chassis#5145 ·
-
2.x bug
apache/servicecomb-java-chassis#5141 · 1 người được giao ·
Tất cả issue của apache/servicecomb-java-chassis
Issue tương tự
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
inu-appcenter/memorIN-backend#288 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
frontend maui-pilot pilot-ask question
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Đang mởarea/plugin
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
kestra-io/plugin-kestra#190 ·