apache / apache/servicecomb-java-chassis

在org.apache.servicecomb.common.rest.RestEngineSchemaListener注册之前 kafka消费消息调用接口,导致后续调用该接口都报空指针异常

Đang mở
#3,240 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
1.9k
Fork
814
Merge trung bình
8 ngày 23 giờ
Pull request đã merge (30 ngày)
1

Mô tả

```
2022-07-28 14:36:45.020|[]|mock-thread|WARN |SCBEngine.java:513|The request is rejected. Cannot process the request due to STATUS = STARTING
2022-07-28 14:36:45.020|[]|mock-thread|WARN |VehicleTaskEndListener.java:64|clear busyTag of [335157342402481152] failed
2022-07-28 14:36:45.215|[]|mock-thread|INFO |MicroserviceVersions.java:93|create MicroserviceVersions, appId=mockAppId, microserviceName=mockMicro.
2022-07-28 14:36:46.125|[]|main|INFO |SCBEngine.java:630|instance registry succeeds for the first time, will send AFTER_REGISTRY event.
```

`create MicroserviceVersions`日志打印早于`instance registry succeeds for the first time`

通过日志上下文可以确定这个日志是调用一个@RpcReference的接口触发的。但是按理`currentStatus` 不为UP调用接口应该会抛错。

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

Hướng nghiên cứu

Bắt đầu với SCBEngine.java, tại phần kiểm tra trạng thái STARTING và sự kiện đăng ký instance đầu tiên, sau đó lần theo luồng consumer Kafka gọi interface được chú thích bằng @RpcReference trước khi RestEngineSchemaListener được đăng ký. Sử dụng thứ tự log được cung cấp để tái hiện race condition trong vòng đời. Hoàn tất khi lệnh gọi sớm được xử lý nhất quán và các lệnh gọi sau đó không còn thất bại với lỗi con trỏ null.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java, kafka
Lĩnh vực
backend, distributed-systems
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.