fix: remove status mutation side effect in PublishEventToUI
- stop overwriting record.Status inside the publish function - status should be managed by the caller, not the publisher
This commit is contained in:
parent
2f7cd5a8fc
commit
715183994c
|
|
@ -49,8 +49,6 @@ func initUIEventChannel(ctx context.Context) (*amqp.Channel, error) {
|
|||
// to the UI-facing fanout exchange. Intended to be called after the event has
|
||||
// been successfully persisted to the database.
|
||||
func PublishEventToUI(ctx context.Context, ch *amqp.Channel, record *EventRecord) error {
|
||||
record.Status = constants.EventStatusReported
|
||||
|
||||
body, err := json.Marshal(record)
|
||||
if err != nil {
|
||||
logger.Error(ctx, "marshal event record for UI publish failed", "event_uuid", record.EventUUID, "error", err)
|
||||
|
|
|
|||
|
|
@ -127,24 +127,25 @@ func processAlarmEventMessage(ctx context.Context, msg amqp.Delivery, uiCh *amqp
|
|||
mongodbClient := database.GetMongoClient()
|
||||
|
||||
var alarmEvent EventRecord
|
||||
err := json.Unmarshal(msg.Body, &alarmEvent)
|
||||
if err != nil {
|
||||
if err := json.Unmarshal(msg.Body, &alarmEvent); err != nil {
|
||||
logger.Error(ctx, "unmarshal alarm event message failed", "error", err)
|
||||
return
|
||||
}
|
||||
|
||||
alarmEvent.IsPersisted = true
|
||||
alarmEvent.Status = constants.EventStatusReported
|
||||
|
||||
result, err := mongodbClient.Database(constants.EventDBName).Collection(constants.EventCollectionName).InsertOne(ctx, alarmEvent)
|
||||
if err != nil {
|
||||
logger.Error(ctx, "failed to insert alarm event into database", "error", err)
|
||||
return
|
||||
}
|
||||
err = msg.Ack(false)
|
||||
if err != nil {
|
||||
logger.Info(ctx, "alarm event inserted into database", "result", result)
|
||||
|
||||
if err := msg.Ack(false); err != nil {
|
||||
logger.Error(ctx, "ack alarm event message failed", "error", err)
|
||||
return
|
||||
}
|
||||
logger.Info(ctx, "alarm event inserted into database", "result", result)
|
||||
|
||||
if err := PublishEventToUI(ctx, uiCh, &alarmEvent); err != nil {
|
||||
logger.Error(ctx, "publish alarm event to UI failed", "event_uuid", alarmEvent.EventUUID, "error", err)
|
||||
|
|
|
|||
Loading…
Reference in New Issue