Technical Question: Recommended approach for Action idempotency / duplicate handling
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- java
- Lĩnh vực
- api, distributed-systems
Hướng nghiên cứu
Start by reviewing the current mo-services-java Action API and the CCSDS M&C ActionExecutionRequest.requestId concept referenced in the issue. A useful outcome would document the intended retransmission and duplicate-detection mechanism for unreliable communication, including whether the API provides an identifier or whether application-level handling is expected.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
We are currently evaluating NMF 5 for a new nanosatellite mission. Our original architecture was based on NMF 4.x, where the Action submission included a consumer-provided actionInstId.
Our main concern is the handling of duplicate Action requests in the presence of unreliable communication between ground and spacecraft.
For example:
The ground sends an Action request.
The spacecraft receives and executes the Action.
The response is lost due to a communication failure.
The ground cannot determine whether the Action was executed.
The ground retransmits the request.
The spacecraft needs to distinguish this retransmission from a new request and must not execute the Action twice.
In the newer mo-services-java API used by NMF 5, we understand that the Action execution identifier is generated by the service provider rather than supplied by the consumer.
We also noticed that the newer CCSDS M&C model contains the concept of an ActionExecutionRequest.requestId, which is intended to identify the request itself.
Our question is therefore not about the change of the API, but rather:
What is the recommended way to implement idempotent Action execution with the current mo-services-java API?
In particular:
What mechanism should a Service Consumer use to identify a retransmission of the same Action request?
How should the spacecraft detect that an Action request has already been accepted/executed when the original response was lost?
Is there an identifier or mechanism in the current API intended specifically for this purpose?
If duplicate detection is expected to be implemented at the application level, what approach is recommended?
The above scenario is particularly important for us because the communication channel between ground and spacecraft cannot be assumed to provide exactly-once delivery.
We would appreciate any guidance on the intended pattern for handling this use case with the current MO API.
Thank you in advance for your guidance.
Best regards,
Tamás
- Ngôn ngữ chính
- Java
- Star
- 18
- Fork
- 11
- Merge trung bình
- 4 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 esa/mo-services-java
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
esa/mo-services-java#37 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
esa/mo-services-java#1 ·
Tất cả issue của esa/mo-services-java
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
utopia-rise/godot-jvm#1004 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
spring-projects/spring-grpc#442 ·
-
Expose numberOfPermits in RateLimiterEvent.toString() and the ratelimiterevents actuator DTOCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
resilience4j/resilience4j#2547 ·
Maintainer thường phản hồi trong vòng 9 ngày
-
Clock.MakeDate continues execution and returns a rolled-over instant after dispatching error on invalid dateCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
mit-cml/appinventor-sources#4155 ·
Maintainer thường phản hồi trong vòng 1 ngày