feat: deliver durable live signal intents

This commit is contained in:
2026-09-06 10:45:20 +00:00
parent ad564de23f
commit 26ac4c1cac
8 changed files with 227 additions and 13 deletions
+26 -1
View File
@@ -245,7 +245,32 @@ retained_compressed_bytes = retained_compressed_bytes + ?, output_charged_bytes
if unmarshalErr := proto.Unmarshal(event.Payload, &wire); unmarshalErr != nil || wire.GetStdinAck() == nil || wire.GetStdinAck().GetWriteSeq() == 0 {
err = ErrInvalidSegmentRecord
} else {
_, err = tx.ExecContext(ctx, `UPDATE stdin_writes SET acknowledged = 1 WHERE issue_uuid = ? AND write_seq <= ?`, event.IssueUUID[:], wire.GetStdinAck().GetWriteSeq())
var acknowledged sql.Result
acknowledged, err = tx.ExecContext(ctx, `UPDATE stdin_writes SET acknowledged = 1 WHERE issue_uuid = ? AND write_seq <= ?`, event.IssueUUID[:], wire.GetStdinAck().GetWriteSeq())
if err == nil {
var affected int64
affected, err = acknowledged.RowsAffected()
if err == nil && affected == 0 {
err = ErrInvalidSegmentRecord
}
}
}
}
if err == nil && event.EventType == 8 {
var wire rvboxv1.CommandEvent
if unmarshalErr := proto.Unmarshal(event.Payload, &wire); unmarshalErr != nil || wire.GetSignalResult() == nil || wire.GetSignalResult().GetCommandRevision() == 0 || wire.GetSignalResult().GetSignal() < rvboxv1.SignalKind_SIGNAL_HUP || wire.GetSignalResult().GetSignal() > rvboxv1.SignalKind_SIGNAL_USR2 {
err = ErrInvalidSegmentRecord
} else {
var acknowledged sql.Result
result := wire.GetSignalResult()
acknowledged, err = tx.ExecContext(ctx, `UPDATE signal_intents SET acknowledged = 1 WHERE issue_uuid = ? AND command_revision = ? AND signal = ?`, event.IssueUUID[:], result.GetCommandRevision(), result.GetSignal())
if err == nil {
var affected int64
affected, err = acknowledged.RowsAffected()
if err == nil && affected == 0 {
err = ErrInvalidSegmentRecord
}
}
}
}
if err == nil {