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:
douxu 2026-05-11 17:35:43 +08:00
parent 2f7cd5a8fc
commit 715183994c
2 changed files with 6 additions and 7 deletions

View File

@ -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)

View File

@ -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)