diff --git a/chain/market/fundmanager.go b/chain/market/fundmanager.go index 5df7589fa..e5fcf0b80 100644 --- a/chain/market/fundmanager.go +++ b/chain/market/fundmanager.go @@ -2,6 +2,7 @@ package market import ( "context" + "fmt" "sync" "github.com/filecoin-project/go-address" @@ -501,7 +502,13 @@ func (a *fundedAddress) processWithdrawals(withdrawals []*fundRequest) (msgCid c // request with an error newWithdrawalAmt := types.BigAdd(withdrawalAmt, amt) if newWithdrawalAmt.GreaterThan(netAvail) { - err := xerrors.Errorf("insufficient funds for withdrawal of %d", amt) + msg := fmt.Sprintf("insufficient funds for withdrawal of %s: ", types.FIL(amt)) + msg += fmt.Sprintf("net available (%s) = available (%s) - reserved (%s)", + types.FIL(types.BigSub(netAvail, withdrawalAmt)), types.FIL(avail), types.FIL(a.state.AmtReserved)) + if !withdrawalAmt.IsZero() { + msg += fmt.Sprintf(" - queued withdrawals (%s)", types.FIL(withdrawalAmt)) + } + err := xerrors.Errorf(msg) a.debugf("%s", err) req.Complete(cid.Undef, err) continue