Skip to content

Commit 90e36b5

Browse files
committed
sweepbatcher: add more details to errors
This is useful to debug errors from logs, to follow error propagation path.
1 parent cecb24c commit 90e36b5

File tree

2 files changed

+35
-19
lines changed

2 files changed

+35
-19
lines changed

sweepbatcher/sweep_batch.go

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ func (b *batch) Run(ctx context.Context) error {
649649
blockChan, blockErrChan, err :=
650650
b.chainNotifier.RegisterBlockEpochNtfn(runCtx)
651651
if err != nil {
652-
return err
652+
return fmt.Errorf("block registration error: %w", err)
653653
}
654654

655655
// Set currentHeight here, because it may be needed in monitorSpend.
@@ -658,7 +658,8 @@ func (b *batch) Run(ctx context.Context) error {
658658
b.Debugf("initial height for the batch is %v", b.currentHeight)
659659

660660
case <-runCtx.Done():
661-
return runCtx.Err()
661+
return fmt.Errorf("context expired while waiting for current "+
662+
"height: %w", runCtx.Err())
662663
}
663664

664665
// If a primary sweep exists we immediately start monitoring for its
@@ -667,7 +668,7 @@ func (b *batch) Run(ctx context.Context) error {
667668
sweep := b.sweeps[b.primarySweepID]
668669
err := b.monitorSpend(runCtx, sweep)
669670
if err != nil {
670-
return err
671+
return fmt.Errorf("monitorSpend error: %w", err)
671672
}
672673
}
673674

@@ -742,17 +743,21 @@ func (b *batch) Run(ctx context.Context) error {
742743

743744
err := b.publish(ctx)
744745
if err != nil {
745-
return err
746+
return fmt.Errorf("publish error: %w", err)
746747
}
747748

748749
case spend := <-b.spendChan:
749750
err := b.handleSpend(runCtx, spend.SpendingTx)
750751
if err != nil {
751-
return err
752+
return fmt.Errorf("handleSpend error: %w", err)
752753
}
753754

754755
case <-b.confChan:
755-
return b.handleConf(runCtx)
756+
if err := b.handleConf(runCtx); err != nil {
757+
return fmt.Errorf("handleConf error: %w", err)
758+
}
759+
760+
return nil
756761

757762
case <-b.reorgChan:
758763
b.state = Open
@@ -761,21 +766,22 @@ func (b *batch) Run(ctx context.Context) error {
761766

762767
err := b.monitorSpend(ctx, b.sweeps[b.primarySweepID])
763768
if err != nil {
764-
return err
769+
return fmt.Errorf("monitorSpend error: %w", err)
765770
}
766771

767772
case testReq := <-b.testReqs:
768773
testReq.handler()
769774
close(testReq.quit)
770775

771776
case err := <-blockErrChan:
772-
return err
777+
return fmt.Errorf("blocks monitoring error: %w", err)
773778

774779
case err := <-b.errChan:
775-
return err
780+
return fmt.Errorf("error with the batch: %w", err)
776781

777782
case <-runCtx.Done():
778-
return runCtx.Err()
783+
return fmt.Errorf("batch context expired: %w",
784+
runCtx.Err())
779785
}
780786
}
781787
}
@@ -1555,7 +1561,10 @@ func (b *batch) monitorSpend(ctx context.Context, primarySweep sweep) error {
15551561
return
15561562

15571563
case err := <-spendErr:
1558-
b.writeToErrChan(err)
1564+
b.writeToErrChan(
1565+
fmt.Errorf("spend error: %w", err),
1566+
)
1567+
15591568
return
15601569

15611570
case <-ctx.Done():
@@ -1595,10 +1604,13 @@ func (b *batch) monitorConfirmations(ctx context.Context) error {
15951604

15961605
case <-ctx.Done():
15971606
}
1607+
15981608
return
15991609

16001610
case err := <-errChan:
1601-
b.writeToErrChan(err)
1611+
b.writeToErrChan(fmt.Errorf("confirmations "+
1612+
"monitoring error: %w", err))
1613+
16021614
return
16031615

16041616
case <-reorgChan:

sweepbatcher/sweep_batcher.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,9 @@ func (b *Batcher) spinUpBatch(ctx context.Context) (*batch, error) {
770770

771771
err := batch.Run(ctx)
772772
if err != nil {
773-
_ = b.writeToErrChan(ctx, err)
773+
b.writeToErrChan(
774+
ctx, fmt.Errorf("new batch failed: %w", err),
775+
)
774776
}
775777
}()
776778

@@ -856,7 +858,9 @@ func (b *Batcher) spinUpBatchFromDB(ctx context.Context, batch *batch) error {
856858

857859
err := newBatch.Run(ctx)
858860
if err != nil {
859-
_ = b.writeToErrChan(ctx, err)
861+
b.writeToErrChan(
862+
ctx, fmt.Errorf("db batch failed: %w", err),
863+
)
860864
}
861865
}()
862866

@@ -973,7 +977,10 @@ func (b *Batcher) monitorSpendAndNotify(ctx context.Context, sweep *sweep,
973977
case <-ctx.Done():
974978
}
975979

976-
_ = b.writeToErrChan(ctx, err)
980+
b.writeToErrChan(
981+
ctx, fmt.Errorf("spend error: %w", err),
982+
)
983+
977984
return
978985

979986
case <-notifier.QuitChan:
@@ -988,13 +995,10 @@ func (b *Batcher) monitorSpendAndNotify(ctx context.Context, sweep *sweep,
988995
return nil
989996
}
990997

991-
func (b *Batcher) writeToErrChan(ctx context.Context, err error) error {
998+
func (b *Batcher) writeToErrChan(ctx context.Context, err error) {
992999
select {
9931000
case b.errChan <- err:
994-
return nil
995-
9961001
case <-ctx.Done():
997-
return ctx.Err()
9981002
}
9991003
}
10001004

0 commit comments

Comments
 (0)