fix: fence command events by dispatch generation
This commit is contained in:
@@ -244,7 +244,7 @@ func (server *AgentServer) serveConnection(parent context.Context, connection *w
|
||||
continue
|
||||
}
|
||||
if event := envelope.GetCommandEvent(); event != nil {
|
||||
appendEvent, eventErr := eventAppendFromWire(event, hello.GetClientId(), server.now())
|
||||
appendEvent, eventErr := eventAppendFromWire(event, hello.GetClientId(), registration.Generation, server.now())
|
||||
if eventErr != nil {
|
||||
server.close(connection, websocket.StatusPolicyViolation, "invalid command event")
|
||||
return
|
||||
@@ -263,7 +263,7 @@ func (server *AgentServer) serveConnection(parent context.Context, connection *w
|
||||
}
|
||||
}
|
||||
|
||||
func eventAppendFromWire(event *rvboxv1.CommandEvent, clientID string, receipt time.Time) (store.EventAppend, error) {
|
||||
func eventAppendFromWire(event *rvboxv1.CommandEvent, clientID string, generation uint64, receipt time.Time) (store.EventAppend, error) {
|
||||
issue, err := domain.ParseUUIDv7(event.GetIssueUuid())
|
||||
if err != nil {
|
||||
return store.EventAppend{}, err
|
||||
@@ -274,7 +274,7 @@ func eventAppendFromWire(event *rvboxv1.CommandEvent, clientID string, receipt t
|
||||
}
|
||||
var immutable [32]byte
|
||||
copy(immutable[:], event.GetImmutableEventSha256())
|
||||
result := store.EventAppend{IssueUUID: [16]byte(issue), ClientID: clientID, EventSeq: event.GetEventSeq(), ObservedUnixNano: event.GetObservedAt().AsTime().UnixNano(), ReceiptUnixNano: receipt.UnixNano(), EventType: eventType(event), Compression: 1, RawLength: uint64(len(payload)), Payload: payload, ImmutableSHA256: immutable}
|
||||
result := store.EventAppend{IssueUUID: [16]byte(issue), ClientID: clientID, SessionGeneration: generation, EventSeq: event.GetEventSeq(), ObservedUnixNano: event.GetObservedAt().AsTime().UnixNano(), ReceiptUnixNano: receipt.UnixNano(), EventType: eventType(event), Compression: 1, RawLength: uint64(len(payload)), Payload: payload, ImmutableSHA256: immutable}
|
||||
if output := event.GetOutput(); output != nil {
|
||||
result.Stream = uint16(output.GetStream())
|
||||
result.Output = true
|
||||
|
||||
Reference in New Issue
Block a user