From db2c50a5997683f73b5d6207a5d6a81d9efa3a76 Mon Sep 17 00:00:00 2001 From: ziggie Date: Sun, 3 Aug 2025 13:39:45 +0200 Subject: [PATCH] channeldb: add context to query method We add a context for the query method because the query method is part of the paymentDB interface and for the SQL case we will need the context for this method because the native SQL drivers demand one. So we add it for the kv implementation here as well so we can then make use of the new interface type. --- channeldb/payments_kv_store.go | 5 +++-- channeldb/payments_test.go | 28 +++++++++++++++------------- rpcserver.go | 4 +++- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/channeldb/payments_kv_store.go b/channeldb/payments_kv_store.go index 584dc0f73..ab98d42d1 100644 --- a/channeldb/payments_kv_store.go +++ b/channeldb/payments_kv_store.go @@ -2,6 +2,7 @@ package channeldb import ( "bytes" + "context" "encoding/binary" "errors" "fmt" @@ -1206,8 +1207,8 @@ func fetchFailedHtlcKeys(bucket kvdb.RBucket) ([][]byte, error) { // QueryPayments is a query to the payments database which is restricted // to a subset of payments by the payments query, containing an offset // index and a maximum number of returned payments. -func (p *KVPaymentsDB) QueryPayments(query PaymentsQuery) (PaymentsResponse, - error) { +func (p *KVPaymentsDB) QueryPayments(_ context.Context, + query PaymentsQuery) (PaymentsResponse, error) { var resp PaymentsResponse diff --git a/channeldb/payments_test.go b/channeldb/payments_test.go index 1d5e81465..727bd91fa 100644 --- a/channeldb/payments_test.go +++ b/channeldb/payments_test.go @@ -1,6 +1,7 @@ package channeldb import ( + "context" "fmt" "math" "reflect" @@ -348,20 +349,20 @@ func TestQueryPayments(t *testing.T) { } for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - db, err := MakeTestDB(t) - if err != nil { - t.Fatalf("unable to init db: %v", err) - } + ctx := context.Background() + db, err := MakeTestDB(t) + require.NoError(t, err) + + // Initialize the payment database. paymentDB := NewKVPaymentsDB(db) // Make a preliminary query to make sure it's ok to // query when we have no payments. - resp, err := paymentDB.QueryPayments(tt.query) + resp, err := paymentDB.QueryPayments(ctx, tt.query) require.NoError(t, err) require.Len(t, resp.Payments, 0) @@ -389,10 +390,7 @@ func TestQueryPayments(t *testing.T) { err = paymentDB.InitPayment( info.PaymentIdentifier, info, ) - if err != nil { - t.Fatalf("unable to initialize "+ - "payment in database: %v", err) - } + require.NoError(t, err) // Immediately delete the payment with index 2. if i == 1 { @@ -401,8 +399,10 @@ func TestQueryPayments(t *testing.T) { ) require.NoError(t, err) - deletePayment(t, db, info.PaymentIdentifier, - pmt.SequenceNum) + deletePayment( + t, db, info.PaymentIdentifier, + pmt.SequenceNum, + ) } // If we are on the last payment entry, add a @@ -437,7 +437,9 @@ func TestQueryPayments(t *testing.T) { "want %v.", len(allPayments), 6) } - querySlice, err := paymentDB.QueryPayments(tt.query) + querySlice, err := paymentDB.QueryPayments( + ctx, tt.query, + ) if err != nil { t.Fatalf("unexpected error: %v", err) } diff --git a/rpcserver.go b/rpcserver.go index 08f9cf565..c922b23e4 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -7528,7 +7528,9 @@ func (r *rpcServer) ListPayments(ctx context.Context, query.MaxPayments = math.MaxUint64 } - paymentsQuerySlice, err := r.server.kvPaymentsDB.QueryPayments(query) + paymentsQuerySlice, err := r.server.kvPaymentsDB.QueryPayments( + ctx, query, + ) if err != nil { return nil, err }