diff --git a/stovepipe/controller/buildsignal/buildsignal.go b/stovepipe/controller/buildsignal/buildsignal.go index fdca5a7a..924eafb8 100644 --- a/stovepipe/controller/buildsignal/buildsignal.go +++ b/stovepipe/controller/buildsignal/buildsignal.go @@ -266,6 +266,9 @@ func (c *Controller) persistOutcomeLog(ctx context.Context, store storage.Storag } log := requestlog.NewRequestStateLog(request, reason) + if request.TerminalBuildID != "" { + log.Metadata[requestlog.MetadataKeyBuildID] = request.TerminalBuildID + } if err := c.materializer.PersistLog(ctx, store, log); err != nil { return fmt.Errorf("failed to record %s state for request %s: %w", request.State, request.ID, err) } diff --git a/stovepipe/controller/buildsignal/buildsignal_test.go b/stovepipe/controller/buildsignal/buildsignal_test.go index c52d5659..c82827d4 100644 --- a/stovepipe/controller/buildsignal/buildsignal_test.go +++ b/stovepipe/controller/buildsignal/buildsignal_test.go @@ -211,10 +211,12 @@ func expectOutcomeLog(m buildsignalMocks, state entity.RequestState, version int }[state] request := requestWithState(state) request.Version = version + log := requestlog.NewRequestStateLog(request, reason) + log.Metadata[requestlog.MetadataKeyBuildID] = request.TerminalBuildID return m.materializer.EXPECT().PersistLog( gomock.Any(), m.store, - requestlog.NewRequestStateLog(request, reason), + log, ).Return(nil) } @@ -407,10 +409,12 @@ func TestProcess(t *testing.T) { m.runnerFactory.EXPECT().For(buildrunner.Config{QueueName: testQueue}).Return(m.runner, nil) m.runner.EXPECT().Status(gomock.Any(), entity.BuildID{ID: testBuildID}).Return(entity.BuildStatusSucceeded, nil, nil) eventCall := expectBuildFinished(m) + log := requestlog.NewRequestStateLog(request, entity.RequestOutcomeReasonBuildSucceeded) + log.Metadata[requestlog.MetadataKeyBuildID] = request.TerminalBuildID m.materializer.EXPECT().PersistLog( gomock.Any(), m.store, - requestlog.NewRequestStateLog(request, entity.RequestOutcomeReasonBuildSucceeded), + log, ).Return(errors.New("db down")).After(eventCall) }, }, @@ -493,10 +497,12 @@ func TestProcess(t *testing.T) { updateCall := expectFinishWrites(m, entity.RequestStateSucceeded) request := requestWithState(entity.RequestStateSucceeded) request.Version = 2 + log := requestlog.NewRequestStateLog(request, entity.RequestOutcomeReasonBuildSucceeded) + log.Metadata[requestlog.MetadataKeyBuildID] = request.TerminalBuildID m.materializer.EXPECT().PersistLog( gomock.Any(), m.store, - requestlog.NewRequestStateLog(request, entity.RequestOutcomeReasonBuildSucceeded), + log, ).Return(errors.New("db down")).After(updateCall) }, },