fix: isolate legacy outbox trace ids

This commit is contained in:
zxr
2026-07-21 17:24:25 +08:00
parent 567dda70c0
commit 0655afb5ab

View File

@@ -156,7 +156,7 @@ func processOneOutbox(db *gorm.DB, row models.AlertOutbox) error {
} }
return markOutboxDead(db, row, row.RetryCount, "invalid_payload: "+err.Error(), now) return markOutboxDead(db, row, row.RetryCount, "invalid_payload: "+err.Error(), now)
} }
forwardErr := forwardOutboxPayload(row.PayloadJSON, body) forwardErr := forwardOutboxPayload(row.PayloadJSON, body, fmt.Sprintf("logs-outbox:%d", row.ID))
now, err := databaseNow(db) now, err := databaseNow(db)
if err != nil { if err != nil {
return err return err
@@ -178,11 +178,13 @@ func databaseNow(db *gorm.DB) (time.Time, error) {
return now.UTC(), nil return now.UTC(), nil
} }
func forwardOutboxPayload(payloadJSON string, legacyBody AlertReceiveBody) error { func forwardOutboxPayload(payloadJSON string, legacyBody AlertReceiveBody, fallbackSourceEventKey string) error {
var rawEvent RawEventIngestBody var rawEvent RawEventIngestBody
if err := json.Unmarshal([]byte(payloadJSON), &rawEvent); err == nil && rawEvent.SourceType != "" && len(rawEvent.RawPayload) > 0 { if err := json.Unmarshal([]byte(payloadJSON), &rawEvent); err == nil && rawEvent.SourceType != "" && len(rawEvent.RawPayload) > 0 {
rawEvent.TraceID = ensureAlertTraceID(rawEvent.TraceID, firstNonEmpty(rawEvent.SourceEventKey, fallbackSourceEventKey))
return forwardRawEvent(rawEvent) return forwardRawEvent(rawEvent)
} }
legacyBody.TraceID = ensureAlertTraceID(legacyBody.TraceID, firstNonEmpty(legacyBody.SourceEventKey, fallbackSourceEventKey))
return forwardAlert(legacyBody) return forwardAlert(legacyBody)
} }