Improve mutation channel robustness

- Add event type constants (MutationCreate, MutationUpdate, MutationDelete, MutationComment)
- Make buffer size configurable via BEADS_MUTATION_BUFFER (default 512, up from 100)
- Add defensive closed-channel handling in event loop consumer
- Add 1s dropped-events ticker (down from 60s) for faster recovery
- Verify mutationChan is never closed (prevents panic)

Oracle review findings addressed:
- Eliminates panic risk from send-on-closed-channel
- Reduces worst-case recovery latency from 60s to 1s
- Increases buffer capacity for better burst handling
- Type-safe event constants prevent string typos

Related: bd-36320a04, bd-1f4086c5
This commit is contained in:
Steve Yegge
2025-10-31 19:11:49 -07:00
parent 45504dde91
commit e2bb4311f1
4 changed files with 41 additions and 15 deletions

View File

@@ -35,7 +35,7 @@ func (s *Server) handleDepAdd(req *Request) Response {
}
// Emit mutation event for event-driven daemon
s.emitMutation("update", depArgs.FromID)
s.emitMutation(MutationUpdate, depArgs.FromID)
return Response{Success: true}
}
@@ -61,7 +61,7 @@ func (s *Server) handleSimpleStoreOp(req *Request, argsPtr interface{}, argDesc
}
// Emit mutation event for event-driven daemon
s.emitMutation("update", issueID)
s.emitMutation(MutationUpdate, issueID)
return Response{Success: true}
}
@@ -135,7 +135,7 @@ func (s *Server) handleCommentAdd(req *Request) Response {
}
// Emit mutation event for event-driven daemon
s.emitMutation("comment", commentArgs.ID)
s.emitMutation(MutationComment, commentArgs.ID)
data, _ := json.Marshal(comment)
return Response{