This PR reworks how we process Stripe events for reconciliation purposes. The previous approach in #15480 turns out to not be workable, on account of the Stripe event IDs not being strictly in order. This meant that we couldn't reliably compare two arbitrary event IDs and determine which one was more recent. This new approach leans on the guidance that Stripe provides for webhooks events: > Webhook endpoints might occasionally receive the same event more than once. You can guard against duplicated event receipts by logging the [event IDs](https://docs.stripe.com/api/events/object#event_object-id) you’ve processed, and then not processing already-logged events. > > https://docs.stripe.com/webhooks#handle-duplicate-events We now record processed Stripe events in the `processed_stripe_events` table and use this to filter out events that have already been processed, so we do not process them again. When retrieving events from the Stripe events API we now buffer the unprocessed events so that we can sort them by their `created` timestamp and process them in (roughly) the order they occurred. Release Notes: - N/A
44 lines
1.0 KiB
Rust
44 lines
1.0 KiB
Rust
pub mod access_token;
|
|
pub mod billing_customer;
|
|
pub mod billing_subscription;
|
|
pub mod buffer;
|
|
pub mod buffer_operation;
|
|
pub mod buffer_snapshot;
|
|
pub mod channel;
|
|
pub mod channel_buffer_collaborator;
|
|
pub mod channel_chat_participant;
|
|
pub mod channel_member;
|
|
pub mod channel_message;
|
|
pub mod channel_message_mention;
|
|
pub mod contact;
|
|
pub mod contributor;
|
|
pub mod dev_server;
|
|
pub mod dev_server_project;
|
|
pub mod embedding;
|
|
pub mod extension;
|
|
pub mod extension_version;
|
|
pub mod feature_flag;
|
|
pub mod follower;
|
|
pub mod hosted_project;
|
|
pub mod language_server;
|
|
pub mod notification;
|
|
pub mod notification_kind;
|
|
pub mod observed_buffer_edits;
|
|
pub mod observed_channel_messages;
|
|
pub mod processed_stripe_event;
|
|
pub mod project;
|
|
pub mod project_collaborator;
|
|
pub mod rate_buckets;
|
|
pub mod room;
|
|
pub mod room_participant;
|
|
pub mod server;
|
|
pub mod signup;
|
|
pub mod user;
|
|
pub mod user_feature;
|
|
pub mod worktree;
|
|
pub mod worktree_diagnostic_summary;
|
|
pub mod worktree_entry;
|
|
pub mod worktree_repository;
|
|
pub mod worktree_repository_statuses;
|
|
pub mod worktree_settings_file;
|