channeldb: add error return value to fetchPaymentStatus

Preparation for when we need to return errors in a next commit.
This commit is contained in:
Joost Jager 2020-02-20 10:13:23 +01:00
parent e6e9e44e6f
commit fa3a762a2c
No known key found for this signature in database
GPG Key ID: A61B9D4C393C59C7
2 changed files with 28 additions and 14 deletions

@ -76,7 +76,10 @@ func (p *PaymentControl) InitPayment(paymentHash lntypes.Hash,
}
// Get the existing status of this payment, if any.
paymentStatus := fetchPaymentStatus(bucket)
paymentStatus, err := fetchPaymentStatus(bucket)
if err != nil {
return err
}
switch paymentStatus {
@ -358,27 +361,30 @@ func nextPaymentSequence(tx *bbolt.Tx) ([]byte, error) {
// fetchPaymentStatus fetches the payment status of the payment. If the payment
// isn't found, it will default to "StatusUnknown".
func fetchPaymentStatus(bucket *bbolt.Bucket) PaymentStatus {
func fetchPaymentStatus(bucket *bbolt.Bucket) (PaymentStatus, error) {
if bucket.Get(paymentSettleInfoKey) != nil {
return StatusSucceeded
return StatusSucceeded, nil
}
if bucket.Get(paymentFailInfoKey) != nil {
return StatusFailed
return StatusFailed, nil
}
if bucket.Get(paymentCreationInfoKey) != nil {
return StatusInFlight
return StatusInFlight, nil
}
return StatusUnknown
return StatusUnknown, nil
}
// ensureInFlight checks whether the payment found in the given bucket has
// status InFlight, and returns an error otherwise. This should be used to
// ensure we only mark in-flight payments as succeeded or failed.
func ensureInFlight(bucket *bbolt.Bucket) error {
paymentStatus := fetchPaymentStatus(bucket)
paymentStatus, err := fetchPaymentStatus(bucket)
if err != nil {
return err
}
switch {
@ -443,15 +449,16 @@ func (p *PaymentControl) FetchInFlightPayments() ([]*InFlightPayment, error) {
}
// If the status is not InFlight, we can return early.
paymentStatus := fetchPaymentStatus(bucket)
paymentStatus, err := fetchPaymentStatus(bucket)
if err != nil {
return err
}
if paymentStatus != StatusInFlight {
return nil
}
var (
inFlight = &InFlightPayment{}
err error
)
inFlight := &InFlightPayment{}
// Get the CreationInfo.
b := bucket.Get(paymentCreationInfoKey)

@ -337,7 +337,10 @@ func fetchPayment(bucket *bbolt.Bucket) (*MPPayment, error) {
p.sequenceNum = binary.BigEndian.Uint64(seqBytes)
// Get the payment status.
p.Status = fetchPaymentStatus(bucket)
p.Status, err = fetchPaymentStatus(bucket)
if err != nil {
return nil, err
}
// Get the PaymentCreationInfo.
b := bucket.Get(paymentCreationInfoKey)
@ -401,7 +404,11 @@ func (db *DB) DeletePayments() error {
// If the status is InFlight, we cannot safely delete
// the payment information, so we return early.
paymentStatus := fetchPaymentStatus(bucket)
paymentStatus, err := fetchPaymentStatus(bucket)
if err != nil {
return err
}
if paymentStatus == StatusInFlight {
return nil
}