Skip to content

Note that abandon_payment does not persist the state update in docs #1907

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions lightning/src/ln/channelmanager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2761,15 +2761,21 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F

/// Signals that no further retries for the given payment will occur.
///
/// After this method returns, any future calls to [`retry_payment`] for the given `payment_id`
/// will fail with [`PaymentSendFailure::ParameterError`]. If no such event has been generated,
/// an [`Event::PaymentFailed`] event will be generated as soon as there are no remaining
/// pending HTLCs for this payment.
/// After this method returns, no future calls to [`retry_payment`] for the given `payment_id`
/// are allowed. If no [`Event::PaymentFailed`] event had been generated before, one will be
/// generated as soon as there are no remaining pending HTLCs for this payment.
///
/// Note that calling this method does *not* prevent a payment from succeeding. You must still
/// wait until you receive either a [`Event::PaymentFailed`] or [`Event::PaymentSent`] event to
/// determine the ultimate status of a payment.
///
/// If an [`Event::PaymentFailed`] event is generated and we restart without this
/// [`ChannelManager`] having been persisted, the payment may still be in the pending state
/// upon restart. This allows further calls to [`retry_payment`] (and requiring a second call
/// to [`abandon_payment`] to mark the payment as failed again). Otherwise, future calls to
/// [`retry_payment`] will fail with [`PaymentSendFailure::ParameterError`].
///
/// [`abandon_payment`]: Self::abandon_payment
/// [`retry_payment`]: Self::retry_payment
/// [`Event::PaymentFailed`]: events::Event::PaymentFailed
/// [`Event::PaymentSent`]: events::Event::PaymentSent
Expand Down
4 changes: 4 additions & 0 deletions pending_changelog/matt-abandon-restart.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## API Updates
- `ChannelManager::abandon_payment` docs have been updated to note that the
payment may return to pending after a restart if no persistence occurs. This
is not a change in behavior - ensure your existing code is safe.