paych: Better off-chain errors
This commit is contained in:
parent
4235a97cf4
commit
8f9e730ad6
@ -70,6 +70,7 @@ func (rcn *retrievalClientNode) GetOrCreatePaymentChannel(ctx context.Context, c
|
|||||||
OffChain: rcn.forceOffChain,
|
OffChain: rcn.forceOffChain,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Errorw("paych get failed", "error", err)
|
||||||
return address.Undef, cid.Undef, err
|
return address.Undef, cid.Undef, err
|
||||||
}
|
}
|
||||||
if ci.WaitSentinel == cid.Undef {
|
if ci.WaitSentinel == cid.Undef {
|
||||||
|
@ -186,7 +186,10 @@ func (m *mergedFundsReq) completeAmount(avail types.BigInt, channelInfo *Channel
|
|||||||
// can't fill, so OffChain want an error
|
// can't fill, so OffChain want an error
|
||||||
if r.isActive() {
|
if r.isActive() {
|
||||||
failed = types.BigAdd(failed, r.amt)
|
failed = types.BigAdd(failed, r.amt)
|
||||||
r.onComplete(&paychFundsRes{channel: *channelInfo.Channel, err: xerrors.Errorf("not enough available funds in the payment channel")})
|
r.onComplete(&paychFundsRes{
|
||||||
|
channel: *channelInfo.Channel,
|
||||||
|
err: xerrors.Errorf("not enough funds available in the payment channel %s; add funds with 'lotus paych add-funds %s %s %s'", channelInfo.Channel, channelInfo.from(), channelInfo.to(), types.FIL(r.amt).Unitless()),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
next = i + 1
|
next = i + 1
|
||||||
continue
|
continue
|
||||||
@ -212,7 +215,7 @@ func (m *mergedFundsReq) completeAmount(avail types.BigInt, channelInfo *Channel
|
|||||||
return nil, used, failed
|
return nil, used, failed
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *mergedFundsReq) failOffChain(msg string) (*paychFundsRes, types.BigInt) {
|
func (m *mergedFundsReq) failOffChainNoChannel(from, to address.Address) (*paychFundsRes, types.BigInt) {
|
||||||
next := 0
|
next := 0
|
||||||
freed := types.NewInt(0)
|
freed := types.NewInt(0)
|
||||||
|
|
||||||
@ -225,13 +228,13 @@ func (m *mergedFundsReq) failOffChain(msg string) (*paychFundsRes, types.BigInt)
|
|||||||
if !r.isActive() {
|
if !r.isActive() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
r.onComplete(&paychFundsRes{err: xerrors.New(msg)})
|
r.onComplete(&paychFundsRes{err: xerrors.Errorf("payment channel doesn't exist, create with 'lotus paych add-funds %s %s %s'", from, to, types.FIL(r.amt).Unitless())})
|
||||||
next = i + 1
|
next = i + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
m.reqs = m.reqs[next:]
|
m.reqs = m.reqs[next:]
|
||||||
if len(m.reqs) == 0 {
|
if len(m.reqs) == 0 {
|
||||||
return &paychFundsRes{err: xerrors.New(msg)}, freed
|
return &paychFundsRes{err: xerrors.Errorf("payment channel doesn't exist, create with 'lotus paych add-funds %s %s 0'", from, to)}, freed
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, freed
|
return nil, freed
|
||||||
@ -440,7 +443,7 @@ func (ca *channelAccessor) processTask(merged *mergedFundsReq, amt, avail types.
|
|||||||
|
|
||||||
// If a channel has not yet been created, create one.
|
// If a channel has not yet been created, create one.
|
||||||
if channelInfo == nil {
|
if channelInfo == nil {
|
||||||
res, freed := merged.failOffChain("payment channel doesn't exist")
|
res, freed := merged.failOffChainNoChannel(ca.from, ca.to)
|
||||||
if res != nil {
|
if res != nil {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user