CROSSLINK-252 Add option to broadcast all event states#522
CROSSLINK-252 Add option to broadcast all event states#522JanisSaldabols wants to merge 1 commit intomainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an option to broadcast task state transitions (begin/complete) across all EventBus instances by persisting the event.broadcast flag during status transitions, and wiring new “broadcast” variants into task processing.
Changes:
- Extend
UpdateEventStatusSQL to also update thebroadcastcolumn. - Add
BeginTaskBroadcast/CompleteTaskBroadcast/ProcessTaskBroadcastto theEventBusAPI and implement them inPostgresEventBus. - Switch ISO18626 client task processing for message tasks to use
ProcessTaskBroadcast.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| broker/sqlc/event_query.sql | Updates UpdateEventStatus to persist broadcast during status changes. |
| broker/events/eventbus.go | Adds broadcast variants for begin/complete/process task flows and refactors shared logic. |
| broker/client/client.go | Uses broadcast task processing for message-requester and message-supplier tasks. |
| func (c *Iso18626Client) MessageSupplier(ctx common.ExtendedContext, event events.Event) { | ||
| ctx = ctx.WithArgs(ctx.LoggerArgs().WithComponent(CLIENT_COMP)) | ||
| _, _ = c.eventBus.ProcessTask(ctx, event, c.createAndSendRequestOrRequestingAgencyMessage) | ||
| _, _ = c.eventBus.ProcessTaskBroadcast(ctx, event, c.createAndSendRequestOrRequestingAgencyMessage) |
| } | ||
|
|
||
| func (p *PostgresEventBus) ProcessTaskBroadcast(ctx common.ExtendedContext, event Event, h func(common.ExtendedContext, Event) (EventStatus, *EventResult)) (Event, error) { | ||
| return p.processTask(ctx, event, h, p.BeginTaskBroadcast, p.CompleteTaskBroadcast) |
| func (p *PostgresEventBus) ProcessTaskBroadcast(ctx common.ExtendedContext, event Event, h func(common.ExtendedContext, Event) (EventStatus, *EventResult)) (Event, error) { | ||
| return p.processTask(ctx, event, h, p.BeginTaskBroadcast, p.CompleteTaskBroadcast) | ||
| } |
| func (c *Iso18626Client) MessageRequester(ctx common.ExtendedContext, event events.Event) { | ||
| ctx = ctx.WithArgs(ctx.LoggerArgs().WithComponent(CLIENT_COMP)) | ||
| _, _ = c.eventBus.ProcessTask(ctx, event, c.createAndSendSupplyingAgencyMessage) | ||
| _, _ = c.eventBus.ProcessTaskBroadcast(ctx, event, c.createAndSendSupplyingAgencyMessage) |
| @@ -75,7 +75,7 @@ DELETE FROM event | |||
| WHERE ill_transaction_id = $1; | |||
|
|
|||
| -- name: UpdateEventStatus :one | |||
There was a problem hiding this comment.
Maybe rename this to something like UpdateEventLifecycle
| func (p *PostgresEventBus) processTask(ctx common.ExtendedContext, event Event, h func(common.ExtendedContext, Event) (EventStatus, *EventResult), b func(eventId string) (Event, error), c func(eventId string, result *EventResult, status EventStatus) (Event, error)) (Event, error) { | ||
| inEvent := &event | ||
| event, err := p.BeginTask(event.ID) | ||
| event, err := b(event.ID) |
There was a problem hiding this comment.
Could we call these handlers something more readable like begin and complete?
|
@JanisSaldabols I am not sure this is gonna work as-is. Workflow OnRequester/SupplierMessage handler already broadcast the confirmation task so we will have a double broadcast. If we wanna do it this way we would need to get rid of the confirmation task and confirm directly in these handlers. |
No description provided.