[Bug] The eventMesh server delivers messages to multiple node consumers through grpc, and manually kills the listening process, resulting in message loss
- Dominant language
- Java
- Stars
- 1.8k
- Forks
- 658
- Avg merge
- 11h 29m
- Merged PRs (30d)
- 52
Description
### Search before asking
- [x] I had searched in the [issues](https://github.com/apache/eventmesh/issues?q=is%3Aissue) and found no similar issues.
### Environment
Linux
### EventMesh version
1.10.0
### What happened
Problem description: The server executes updateOffset, and the client ReceiveMsgHook.handle() does not receive the data on the stream.
Code link: On the gRPC stream push path, the runtime is after the server emitter.onNext succeeds in updateOffset (in StreamPushRequest). In the client, ReceiveMsgHook.handle() is executed after receiving the data on the gRPC stream, and is not included in the updateOffset decision condition.
Test scenario: version 1.10.0;
The scenario is dual consumer + Eventmesh pushed by gRPC; One of the processes was manually killed and restarted about a minute; The phenomenon is that the sum of the two consumers received < the number of Eventmesh sent, which is manifested as a lost message.
### How to reproduce
### Debug logs
```Java
```
### Are you willing to submit PR?
- [ ] Yes I am willing to submit a PR!
### Code of Conduct
- [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) *
Contributor guide
Research direction
Start by tracing the gRPC stream push path around StreamPushRequest and the server's updateOffset call, then compare it with the client's ReceiveMsgHook.handle() flow. Reproduce the dual-consumer scenario on EventMesh 1.10.0 by restarting one consumer during delivery. Done means messages are not lost and offset updates reflect successful client receipt.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- grpc, java
- Domain
- backend-api-design, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100