Skip to content

Commit

Permalink
feat(backend): add trace to outgoing payment lifecycle (#2884)
Browse files Browse the repository at this point in the history
* feat(backend): add trace to outgoing payment lifecycle

* feat(backend): encapsulate query lookup in trace

* chore(localenv): remove traces from default localenv

---------

Co-authored-by: Max Kurapov <[email protected]>
  • Loading branch information
njlie and mkurapov authored Aug 27, 2024
1 parent 3bc368a commit b9be601
Showing 1 changed file with 28 additions and 17 deletions.
45 changes: 28 additions & 17 deletions packages/backend/src/open_payments/payment/outgoing/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { OutgoingPayment, OutgoingPaymentState } from './model'
import { LifecycleError, PaymentError } from './errors'
import * as lifecycle from './lifecycle'
import { PaymentMethodHandlerError } from '../../../payment-method/handler/errors'
import { trace, Span } from '@opentelemetry/api'

// First retry waits 10 seconds, second retry waits 20 (more) seconds, etc.
export const RETRY_BACKOFF_SECONDS = 10
Expand All @@ -15,23 +16,33 @@ const MAX_STATE_ATTEMPTS = 5
export async function processPendingPayment(
deps_: ServiceDependencies
): Promise<string | undefined> {
return deps_.knex.transaction(async (trx) => {
const payment = await getPendingPayment(trx)
if (!payment) return

await handlePaymentLifecycle(
{
...deps_,
knex: trx,
logger: deps_.logger.child({
payment: payment.id,
from_state: payment.state
})
},
payment
)
return payment.id
})
const tracer = trace.getTracer('outgoing_payment_worker')

return tracer.startActiveSpan(
'outgoingPaymentLifecycle',
async (span: Span) => {
const paymentId = await deps_.knex.transaction(async (trx) => {
const payment = await getPendingPayment(trx)
if (!payment) return

await handlePaymentLifecycle(
{
...deps_,
knex: trx,
logger: deps_.logger.child({
payment: payment.id,
from_state: payment.state
})
},
payment
)
return payment.id
})

span.end()
return paymentId
}
)
}

// Fetch (and lock) a payment for work.
Expand Down

0 comments on commit b9be601

Please sign in to comment.