diff --git a/pkg/services/ngalert/remote/forked_alertmanager_test.go b/pkg/services/ngalert/remote/forked_alertmanager_test.go index 80d40da3617..2379e02719d 100644 --- a/pkg/services/ngalert/remote/forked_alertmanager_test.go +++ b/pkg/services/ngalert/remote/forked_alertmanager_test.go @@ -451,15 +451,23 @@ func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) { }) t.Run("DeleteSilence", func(tt *testing.T) { - // We should delete the silence in the remote Alertmanager. - _, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary) - remote.EXPECT().DeleteSilence(mock.Anything, mock.Anything).Return(nil).Once() - require.NoError(tt, forked.DeleteSilence(ctx, "")) + // We should delete the silence in both Alertmanagers. + testID := "test-id" + internal, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary) + remote.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Once() + internal.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Once() + require.NoError(tt, forked.DeleteSilence(ctx, testID)) // If there's an error in the remote Alertmanager, the error should be returned. _, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary) - remote.EXPECT().DeleteSilence(mock.Anything, mock.Anything).Return(expErr).Maybe() - require.ErrorIs(tt, expErr, forked.DeleteSilence(ctx, "")) + remote.EXPECT().DeleteSilence(mock.Anything, testID).Return(expErr).Maybe() + require.ErrorIs(tt, expErr, forked.DeleteSilence(ctx, testID)) + + // An error in the internal Alertmanager should not be returned. + internal, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary) + remote.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Maybe() + internal.EXPECT().DeleteSilence(mock.Anything, testID).Return(nil).Maybe() + require.NoError(tt, forked.DeleteSilence(ctx, testID)) }) t.Run("GetSilence", func(tt *testing.T) { diff --git a/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go b/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go index 8c2068e8179..1084fff32d5 100644 --- a/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go +++ b/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go @@ -76,7 +76,13 @@ func (fam *RemotePrimaryForkedAlertmanager) CreateSilence(ctx context.Context, s } func (fam *RemotePrimaryForkedAlertmanager) DeleteSilence(ctx context.Context, id string) error { - return fam.remote.DeleteSilence(ctx, id) + if err := fam.remote.DeleteSilence(ctx, id); err != nil { + return err + } + if err := fam.internal.DeleteSilence(ctx, id); err != nil { + fam.log.Error("Error deleting silence in the internal Alertmanager", "err", err, "id", id) + } + return nil } func (fam *RemotePrimaryForkedAlertmanager) GetSilence(ctx context.Context, id string) (apimodels.GettableSilence, error) {