diff --git a/payments/db/query.go b/payments/db/query.go index 5904ab56a..40dfd4321 100644 --- a/payments/db/query.go +++ b/payments/db/query.go @@ -1,5 +1,11 @@ package paymentsdb +const ( + // DefaultMaxPayments is the default maximum number of payments returned + // in the payments query pagination. + DefaultMaxPayments = 100 +) + // Query represents a query to the payments database starting or ending // at a certain offset index. The number of retrieved records can be limited. type Query struct { diff --git a/rpcserver.go b/rpcserver.go index 0c19c876a..6ab323fa3 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -7523,10 +7523,15 @@ func (r *rpcServer) ListPayments(ctx context.Context, CreationDateEnd: int64(req.CreationDateEnd), } - // If the maximum number of payments wasn't specified, then we'll - // default to return the maximal number of payments representable. + // If the maximum number of payments wasn't specified, we default to + // a reasonable number to prevent resource exhaustion. All of the + // payments are fetched into memory. Moreover we don't want our daemon + // to remain stable and do other stuff rather than serving payments. + // + // TODO(ziggie): Choose a more specific default value when results of + // performance testing are available. if req.MaxPayments == 0 { - query.MaxPayments = math.MaxUint64 + query.MaxPayments = paymentsdb.DefaultMaxPayments } paymentsQuerySlice, err := r.server.paymentsDB.QueryPayments(