From 012e114dce73146f6618a547d2b85b92f5e5b4d1 Mon Sep 17 00:00:00 2001 From: Arkadiy Kukarkin Date: Thu, 23 Apr 2026 16:23:51 +0200 Subject: [PATCH] dealtracker: return result.Error, not shadowed outer err Two back-to-back blocks after the market-deal ingestion mark deals as expired / proposal-expired. Each checked result.Error but returned the outer-scope err, which at that point holds whatever the upstream streaming loop last set (nil on happy path). On a failed UPDATE the caller saw either a misleading 'success' or a stale error from an unrelated operation. --- service/dealtracker/dealtracker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/dealtracker/dealtracker.go b/service/dealtracker/dealtracker.go index 87a6a5d08..2e6a1ea5a 100644 --- a/service/dealtracker/dealtracker.go +++ b/service/dealtracker/dealtracker.go @@ -623,7 +623,7 @@ func (d *DealTracker) runOnce(ctx context.Context) error { Where("deal_type = ? AND end_epoch < ? AND state = 'active'", model.DealTypeMarket, lastEpoch). Update("state", model.DealExpired) if result.Error != nil { - return errors.WithStack(err) + return errors.WithStack(result.Error) } Logger.Infof("marked %d deals as expired", result.RowsAffected) @@ -632,7 +632,7 @@ func (d *DealTracker) runOnce(ctx context.Context) error { Where("deal_type = ? AND state in ('proposed', 'published') AND start_epoch < ?", model.DealTypeMarket, lastEpoch). Update("state", model.DealProposalExpired) if result.Error != nil { - return errors.WithStack(err) + return errors.WithStack(result.Error) } Logger.Infof("marked %d deal as proposal_expired", result.RowsAffected)