webhookdb 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/db/migrations/026_undo_integration_backfill_cursor.rb +2 -0
- data/db/migrations/032_remove_db_defaults.rb +2 -0
- data/db/migrations/043_text_search.rb +2 -0
- data/db/migrations/047_sync_parallelism.rb +9 -0
- data/db/migrations/048_sync_stats.rb +9 -0
- data/db/migrations/049_error_handlers.rb +18 -0
- data/db/migrations/050_logged_webhook_indices.rb +25 -0
- data/db/migrations/051_partitioning.rb +9 -0
- data/integration/async_spec.rb +0 -2
- data/integration/service_integrations_spec.rb +0 -2
- data/lib/amigo/durable_job.rb +2 -2
- data/lib/amigo/job_in_context.rb +12 -0
- data/lib/webhookdb/api/entities.rb +6 -2
- data/lib/webhookdb/api/error_handlers.rb +104 -0
- data/lib/webhookdb/api/helpers.rb +8 -1
- data/lib/webhookdb/api/icalproxy.rb +22 -0
- data/lib/webhookdb/api/install.rb +2 -1
- data/lib/webhookdb/api/saved_queries.rb +1 -0
- data/lib/webhookdb/api/saved_views.rb +1 -0
- data/lib/webhookdb/api/service_integrations.rb +1 -1
- data/lib/webhookdb/api/sync_targets.rb +1 -1
- data/lib/webhookdb/api/system.rb +5 -0
- data/lib/webhookdb/api/webhook_subscriptions.rb +1 -0
- data/lib/webhookdb/api.rb +4 -1
- data/lib/webhookdb/apps.rb +4 -0
- data/lib/webhookdb/async/autoscaler.rb +10 -0
- data/lib/webhookdb/async/job.rb +4 -0
- data/lib/webhookdb/async/scheduled_job.rb +4 -0
- data/lib/webhookdb/async.rb +2 -0
- data/lib/webhookdb/backfiller.rb +17 -4
- data/lib/webhookdb/concurrent.rb +96 -0
- data/lib/webhookdb/connection_cache.rb +29 -8
- data/lib/webhookdb/customer.rb +2 -2
- data/lib/webhookdb/database_document.rb +1 -1
- data/lib/webhookdb/db_adapter/default_sql.rb +1 -14
- data/lib/webhookdb/db_adapter/partition.rb +14 -0
- data/lib/webhookdb/db_adapter/partitioning.rb +8 -0
- data/lib/webhookdb/db_adapter/pg.rb +77 -5
- data/lib/webhookdb/db_adapter/snowflake.rb +15 -6
- data/lib/webhookdb/db_adapter.rb +24 -2
- data/lib/webhookdb/fixtures/logged_webhooks.rb +4 -0
- data/lib/webhookdb/fixtures/organization_error_handlers.rb +20 -0
- data/lib/webhookdb/http.rb +29 -15
- data/lib/webhookdb/icalendar.rb +30 -9
- data/lib/webhookdb/jobs/amigo_test_jobs.rb +1 -1
- data/lib/webhookdb/jobs/backfill.rb +21 -25
- data/lib/webhookdb/jobs/create_mirror_table.rb +3 -4
- data/lib/webhookdb/jobs/deprecated_jobs.rb +2 -0
- data/lib/webhookdb/jobs/emailer.rb +2 -1
- data/lib/webhookdb/jobs/front_signalwire_message_channel_sync_inbound.rb +15 -0
- data/lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb +7 -2
- data/lib/webhookdb/jobs/icalendar_enqueue_syncs.rb +74 -11
- data/lib/webhookdb/jobs/icalendar_enqueue_syncs_for_urls.rb +22 -0
- data/lib/webhookdb/jobs/icalendar_sync.rb +21 -9
- data/lib/webhookdb/jobs/increase_event_handler.rb +3 -2
- data/lib/webhookdb/jobs/logged_webhooks_replay.rb +5 -3
- data/lib/webhookdb/jobs/message_dispatched.rb +1 -0
- data/lib/webhookdb/jobs/model_event_system_log_tracker.rb +7 -0
- data/lib/webhookdb/jobs/monitor_metrics.rb +1 -1
- data/lib/webhookdb/jobs/organization_database_migration_notify.rb +32 -0
- data/lib/webhookdb/jobs/organization_database_migration_run.rb +4 -6
- data/lib/webhookdb/jobs/organization_error_handler_dispatch.rb +26 -0
- data/lib/webhookdb/jobs/prepare_database_connections.rb +1 -0
- data/lib/webhookdb/jobs/process_webhook.rb +11 -12
- data/lib/webhookdb/jobs/renew_watch_channel.rb +7 -10
- data/lib/webhookdb/jobs/replication_migration.rb +5 -2
- data/lib/webhookdb/jobs/reset_code_create_dispatch.rb +1 -2
- data/lib/webhookdb/jobs/scheduled_backfills.rb +2 -2
- data/lib/webhookdb/jobs/send_invite.rb +3 -2
- data/lib/webhookdb/jobs/send_test_webhook.rb +1 -3
- data/lib/webhookdb/jobs/send_webhook.rb +4 -5
- data/lib/webhookdb/jobs/stale_row_deleter.rb +31 -0
- data/lib/webhookdb/jobs/sync_target_enqueue_scheduled.rb +3 -0
- data/lib/webhookdb/jobs/sync_target_run_sync.rb +9 -15
- data/lib/webhookdb/jobs/webhook_subscription_delivery_event.rb +5 -8
- data/lib/webhookdb/liquid/expose.rb +1 -1
- data/lib/webhookdb/liquid/filters.rb +1 -1
- data/lib/webhookdb/liquid/partial.rb +2 -2
- data/lib/webhookdb/logged_webhook/resilient.rb +3 -3
- data/lib/webhookdb/logged_webhook.rb +16 -2
- data/lib/webhookdb/message/email_transport.rb +1 -1
- data/lib/webhookdb/message.rb +2 -2
- data/lib/webhookdb/messages/error_generic_backfill.rb +2 -0
- data/lib/webhookdb/messages/error_icalendar_fetch.rb +2 -0
- data/lib/webhookdb/messages/error_signalwire_send_sms.rb +2 -0
- data/lib/webhookdb/organization/alerting.rb +50 -4
- data/lib/webhookdb/organization/database_migration.rb +1 -1
- data/lib/webhookdb/organization/db_builder.rb +4 -3
- data/lib/webhookdb/organization/error_handler.rb +141 -0
- data/lib/webhookdb/organization.rb +62 -9
- data/lib/webhookdb/postgres/model_utilities.rb +2 -0
- data/lib/webhookdb/postgres.rb +1 -3
- data/lib/webhookdb/replicator/base.rb +136 -29
- data/lib/webhookdb/replicator/base_stale_row_deleter.rb +165 -0
- data/lib/webhookdb/replicator/email_octopus_contact_v1.rb +0 -1
- data/lib/webhookdb/replicator/fake.rb +100 -88
- data/lib/webhookdb/replicator/front_signalwire_message_channel_app_v1.rb +105 -44
- data/lib/webhookdb/replicator/github_repo_v1_mixin.rb +17 -0
- data/lib/webhookdb/replicator/icalendar_calendar_v1.rb +144 -23
- data/lib/webhookdb/replicator/icalendar_event_v1.rb +20 -44
- data/lib/webhookdb/replicator/icalendar_event_v1_partitioned.rb +33 -0
- data/lib/webhookdb/replicator/intercom_contact_v1.rb +1 -0
- data/lib/webhookdb/replicator/intercom_conversation_v1.rb +1 -0
- data/lib/webhookdb/replicator/intercom_v1_mixin.rb +24 -2
- data/lib/webhookdb/replicator/partitionable_mixin.rb +116 -0
- data/lib/webhookdb/replicator/shopify_v1_mixin.rb +1 -1
- data/lib/webhookdb/replicator/signalwire_message_v1.rb +1 -2
- data/lib/webhookdb/replicator/sponsy_v1_mixin.rb +1 -1
- data/lib/webhookdb/replicator/transistor_episode_stats_v1.rb +0 -1
- data/lib/webhookdb/replicator.rb +4 -1
- data/lib/webhookdb/service/helpers.rb +4 -0
- data/lib/webhookdb/service/middleware.rb +6 -2
- data/lib/webhookdb/service_integration.rb +5 -0
- data/lib/webhookdb/signalwire.rb +1 -1
- data/lib/webhookdb/spec_helpers/async.rb +0 -4
- data/lib/webhookdb/spec_helpers/sentry.rb +32 -0
- data/lib/webhookdb/spec_helpers/shared_examples_for_replicators.rb +87 -1
- data/lib/webhookdb/spec_helpers.rb +1 -0
- data/lib/webhookdb/sync_target.rb +195 -29
- data/lib/webhookdb/tasks/admin.rb +1 -1
- data/lib/webhookdb/tasks/annotate.rb +1 -1
- data/lib/webhookdb/tasks/db.rb +13 -1
- data/lib/webhookdb/tasks/docs.rb +1 -1
- data/lib/webhookdb/tasks/fixture.rb +1 -1
- data/lib/webhookdb/tasks/message.rb +1 -1
- data/lib/webhookdb/tasks/regress.rb +1 -1
- data/lib/webhookdb/tasks/release.rb +1 -1
- data/lib/webhookdb/tasks/sidekiq.rb +1 -1
- data/lib/webhookdb/tasks/specs.rb +1 -1
- data/lib/webhookdb/version.rb +1 -1
- data/lib/webhookdb/webhook_subscription.rb +2 -3
- data/lib/webhookdb.rb +3 -1
- metadata +88 -54
- data/lib/webhookdb/jobs/organization_database_migration_notify_finished.rb +0 -21
- data/lib/webhookdb/jobs/organization_database_migration_notify_started.rb +0 -21
@@ -8,7 +8,7 @@ require "webhookdb"
|
|
8
8
|
module Webhookdb::Tasks
|
9
9
|
class Specs < Rake::TaskLib
|
10
10
|
def initialize
|
11
|
-
super
|
11
|
+
super
|
12
12
|
namespace :specs do
|
13
13
|
desc "Run API integration tests in the 'integration' folder of this gem. " \
|
14
14
|
"To run your own tests, create a task similar to this one, " \
|
data/lib/webhookdb/version.rb
CHANGED
@@ -136,9 +136,8 @@ class Webhookdb::WebhookSubscription < Webhookdb::Postgres::Model(:webhook_subsc
|
|
136
136
|
rescue StandardError => e
|
137
137
|
self.logger.error(
|
138
138
|
"webhook_subscription_delivery_failure",
|
139
|
-
|
140
|
-
|
141
|
-
webhook_subscription_delivery_id: d.id,
|
139
|
+
{webhook_subscription_id: self.id, webhook_subscription_delivery_id: d.id},
|
140
|
+
e,
|
142
141
|
)
|
143
142
|
d.add_attempt(status: e.is_a?(Webhookdb::Http::Error) ? e.status : 0)
|
144
143
|
if attempt < MAX_DELIVERY_ATTEMPTS
|
data/lib/webhookdb.rb
CHANGED
@@ -19,6 +19,8 @@ Money.locale_backend = :i18n
|
|
19
19
|
Money.default_currency = "USD"
|
20
20
|
Money.rounding_mode = BigDecimal::ROUND_HALF_UP
|
21
21
|
|
22
|
+
ActiveSupport.to_time_preserves_timezone = true
|
23
|
+
|
22
24
|
module Appydays::Configurable
|
23
25
|
def self.fetch_env(keys, default=:__keyerror, env: ENV)
|
24
26
|
keys = [keys] unless keys.respond_to?(:to_ary)
|
@@ -84,7 +86,7 @@ module Webhookdb
|
|
84
86
|
nil,
|
85
87
|
key: "LOG_LEVEL",
|
86
88
|
side_effect: ->(v) { Appydays::Loggable.default_level = v if v }
|
87
|
-
setting :log_format,
|
89
|
+
setting :log_format, :json_trunc
|
88
90
|
setting :app_url, "http://localhost:18002"
|
89
91
|
setting :api_url, "http://localhost:#{ENV.fetch('PORT', 18_001)}"
|
90
92
|
setting :bust_idempotency, false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webhookdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WebhookDB
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '7.
|
19
|
+
version: '7.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '7.
|
26
|
+
version: '7.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: appydays
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.12.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.12.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: aws-sdk-pricing
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.70'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.70'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: aws-sdk-sts
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,42 +114,42 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '6.
|
117
|
+
version: '6.2'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '6.
|
124
|
+
version: '6.2'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: clipboard
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '1.
|
131
|
+
version: '1.4'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '1.
|
138
|
+
version: '1.4'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: concurrent-ruby
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '1.
|
145
|
+
version: '1.3'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '1.
|
152
|
+
version: '1.3'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: down
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,14 +240,28 @@ dependencies:
|
|
240
240
|
requirements:
|
241
241
|
- - "~>"
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version: '0.
|
243
|
+
version: '0.22'
|
244
244
|
type: :runtime
|
245
245
|
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
248
|
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
|
-
version: '0.
|
250
|
+
version: '0.22'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: httpx
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '1.4'
|
258
|
+
type: :runtime
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - "~>"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '1.4'
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
266
|
name: ice_cube
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,28 +282,28 @@ dependencies:
|
|
268
282
|
requirements:
|
269
283
|
- - "~>"
|
270
284
|
- !ruby/object:Gem::Version
|
271
|
-
version: '2.
|
285
|
+
version: '2.10'
|
272
286
|
type: :runtime
|
273
287
|
prerelease: false
|
274
288
|
version_requirements: !ruby/object:Gem::Requirement
|
275
289
|
requirements:
|
276
290
|
- - "~>"
|
277
291
|
- !ruby/object:Gem::Version
|
278
|
-
version: '2.
|
292
|
+
version: '2.10'
|
279
293
|
- !ruby/object:Gem::Dependency
|
280
294
|
name: liquid
|
281
295
|
requirement: !ruby/object:Gem::Requirement
|
282
296
|
requirements:
|
283
297
|
- - "~>"
|
284
298
|
- !ruby/object:Gem::Version
|
285
|
-
version: '5.
|
299
|
+
version: '5.6'
|
286
300
|
type: :runtime
|
287
301
|
prerelease: false
|
288
302
|
version_requirements: !ruby/object:Gem::Requirement
|
289
303
|
requirements:
|
290
304
|
- - "~>"
|
291
305
|
- !ruby/object:Gem::Version
|
292
|
-
version: '5.
|
306
|
+
version: '5.6'
|
293
307
|
- !ruby/object:Gem::Dependency
|
294
308
|
name: mail
|
295
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -324,42 +338,42 @@ dependencies:
|
|
324
338
|
requirements:
|
325
339
|
- - "~>"
|
326
340
|
- !ruby/object:Gem::Version
|
327
|
-
version: '1.
|
341
|
+
version: '1.13'
|
328
342
|
type: :runtime
|
329
343
|
prerelease: false
|
330
344
|
version_requirements: !ruby/object:Gem::Requirement
|
331
345
|
requirements:
|
332
346
|
- - "~>"
|
333
347
|
- !ruby/object:Gem::Version
|
334
|
-
version: '1.
|
348
|
+
version: '1.13'
|
335
349
|
- !ruby/object:Gem::Dependency
|
336
350
|
name: money
|
337
351
|
requirement: !ruby/object:Gem::Requirement
|
338
352
|
requirements:
|
339
353
|
- - "~>"
|
340
354
|
- !ruby/object:Gem::Version
|
341
|
-
version: '6.
|
355
|
+
version: '6.19'
|
342
356
|
type: :runtime
|
343
357
|
prerelease: false
|
344
358
|
version_requirements: !ruby/object:Gem::Requirement
|
345
359
|
requirements:
|
346
360
|
- - "~>"
|
347
361
|
- !ruby/object:Gem::Version
|
348
|
-
version: '6.
|
362
|
+
version: '6.19'
|
349
363
|
- !ruby/object:Gem::Dependency
|
350
364
|
name: nokogiri
|
351
365
|
requirement: !ruby/object:Gem::Requirement
|
352
366
|
requirements:
|
353
367
|
- - "~>"
|
354
368
|
- !ruby/object:Gem::Version
|
355
|
-
version: '1.
|
369
|
+
version: '1.18'
|
356
370
|
type: :runtime
|
357
371
|
prerelease: false
|
358
372
|
version_requirements: !ruby/object:Gem::Requirement
|
359
373
|
requirements:
|
360
374
|
- - "~>"
|
361
375
|
- !ruby/object:Gem::Version
|
362
|
-
version: '1.
|
376
|
+
version: '1.18'
|
363
377
|
- !ruby/object:Gem::Dependency
|
364
378
|
name: oj
|
365
379
|
requirement: !ruby/object:Gem::Requirement
|
@@ -394,70 +408,70 @@ dependencies:
|
|
394
408
|
requirements:
|
395
409
|
- - "~>"
|
396
410
|
- !ruby/object:Gem::Version
|
397
|
-
version: '2.
|
411
|
+
version: '2.21'
|
398
412
|
type: :runtime
|
399
413
|
prerelease: false
|
400
414
|
version_requirements: !ruby/object:Gem::Requirement
|
401
415
|
requirements:
|
402
416
|
- - "~>"
|
403
417
|
- !ruby/object:Gem::Version
|
404
|
-
version: '2.
|
418
|
+
version: '2.21'
|
405
419
|
- !ruby/object:Gem::Dependency
|
406
420
|
name: platform-api
|
407
421
|
requirement: !ruby/object:Gem::Requirement
|
408
422
|
requirements:
|
409
423
|
- - "~>"
|
410
424
|
- !ruby/object:Gem::Version
|
411
|
-
version: '3.
|
425
|
+
version: '3.7'
|
412
426
|
type: :runtime
|
413
427
|
prerelease: false
|
414
428
|
version_requirements: !ruby/object:Gem::Requirement
|
415
429
|
requirements:
|
416
430
|
- - "~>"
|
417
431
|
- !ruby/object:Gem::Version
|
418
|
-
version: '3.
|
432
|
+
version: '3.7'
|
419
433
|
- !ruby/object:Gem::Dependency
|
420
434
|
name: premailer
|
421
435
|
requirement: !ruby/object:Gem::Requirement
|
422
436
|
requirements:
|
423
437
|
- - "~>"
|
424
438
|
- !ruby/object:Gem::Version
|
425
|
-
version: '1.
|
439
|
+
version: '1.27'
|
426
440
|
type: :runtime
|
427
441
|
prerelease: false
|
428
442
|
version_requirements: !ruby/object:Gem::Requirement
|
429
443
|
requirements:
|
430
444
|
- - "~>"
|
431
445
|
- !ruby/object:Gem::Version
|
432
|
-
version: '1.
|
446
|
+
version: '1.27'
|
433
447
|
- !ruby/object:Gem::Dependency
|
434
448
|
name: pry
|
435
449
|
requirement: !ruby/object:Gem::Requirement
|
436
450
|
requirements:
|
437
451
|
- - "~>"
|
438
452
|
- !ruby/object:Gem::Version
|
439
|
-
version: '0.
|
453
|
+
version: '0.15'
|
440
454
|
type: :runtime
|
441
455
|
prerelease: false
|
442
456
|
version_requirements: !ruby/object:Gem::Requirement
|
443
457
|
requirements:
|
444
458
|
- - "~>"
|
445
459
|
- !ruby/object:Gem::Version
|
446
|
-
version: '0.
|
460
|
+
version: '0.15'
|
447
461
|
- !ruby/object:Gem::Dependency
|
448
462
|
name: puma
|
449
463
|
requirement: !ruby/object:Gem::Requirement
|
450
464
|
requirements:
|
451
465
|
- - "~>"
|
452
466
|
- !ruby/object:Gem::Version
|
453
|
-
version: '6.
|
467
|
+
version: '6.5'
|
454
468
|
type: :runtime
|
455
469
|
prerelease: false
|
456
470
|
version_requirements: !ruby/object:Gem::Requirement
|
457
471
|
requirements:
|
458
472
|
- - "~>"
|
459
473
|
- !ruby/object:Gem::Version
|
460
|
-
version: '6.
|
474
|
+
version: '6.5'
|
461
475
|
- !ruby/object:Gem::Dependency
|
462
476
|
name: rack-cors
|
463
477
|
requirement: !ruby/object:Gem::Requirement
|
@@ -548,70 +562,70 @@ dependencies:
|
|
548
562
|
requirements:
|
549
563
|
- - "~>"
|
550
564
|
- !ruby/object:Gem::Version
|
551
|
-
version: '0.
|
565
|
+
version: '0.23'
|
552
566
|
type: :runtime
|
553
567
|
prerelease: false
|
554
568
|
version_requirements: !ruby/object:Gem::Requirement
|
555
569
|
requirements:
|
556
570
|
- - "~>"
|
557
571
|
- !ruby/object:Gem::Version
|
558
|
-
version: '0.
|
572
|
+
version: '0.23'
|
559
573
|
- !ruby/object:Gem::Dependency
|
560
574
|
name: semantic_logger
|
561
575
|
requirement: !ruby/object:Gem::Requirement
|
562
576
|
requirements:
|
563
577
|
- - "~>"
|
564
578
|
- !ruby/object:Gem::Version
|
565
|
-
version: '4.
|
579
|
+
version: '4.16'
|
566
580
|
type: :runtime
|
567
581
|
prerelease: false
|
568
582
|
version_requirements: !ruby/object:Gem::Requirement
|
569
583
|
requirements:
|
570
584
|
- - "~>"
|
571
585
|
- !ruby/object:Gem::Version
|
572
|
-
version: '4.
|
586
|
+
version: '4.16'
|
573
587
|
- !ruby/object:Gem::Dependency
|
574
588
|
name: sentry-ruby
|
575
589
|
requirement: !ruby/object:Gem::Requirement
|
576
590
|
requirements:
|
577
591
|
- - "~>"
|
578
592
|
- !ruby/object:Gem::Version
|
579
|
-
version: '5.
|
593
|
+
version: '5.22'
|
580
594
|
type: :runtime
|
581
595
|
prerelease: false
|
582
596
|
version_requirements: !ruby/object:Gem::Requirement
|
583
597
|
requirements:
|
584
598
|
- - "~>"
|
585
599
|
- !ruby/object:Gem::Version
|
586
|
-
version: '5.
|
600
|
+
version: '5.22'
|
587
601
|
- !ruby/object:Gem::Dependency
|
588
602
|
name: sentry-sidekiq
|
589
603
|
requirement: !ruby/object:Gem::Requirement
|
590
604
|
requirements:
|
591
605
|
- - "~>"
|
592
606
|
- !ruby/object:Gem::Version
|
593
|
-
version: '5.
|
607
|
+
version: '5.22'
|
594
608
|
type: :runtime
|
595
609
|
prerelease: false
|
596
610
|
version_requirements: !ruby/object:Gem::Requirement
|
597
611
|
requirements:
|
598
612
|
- - "~>"
|
599
613
|
- !ruby/object:Gem::Version
|
600
|
-
version: '5.
|
614
|
+
version: '5.22'
|
601
615
|
- !ruby/object:Gem::Dependency
|
602
616
|
name: sequel
|
603
617
|
requirement: !ruby/object:Gem::Requirement
|
604
618
|
requirements:
|
605
619
|
- - "~>"
|
606
620
|
- !ruby/object:Gem::Version
|
607
|
-
version: '5.
|
621
|
+
version: '5.88'
|
608
622
|
type: :runtime
|
609
623
|
prerelease: false
|
610
624
|
version_requirements: !ruby/object:Gem::Requirement
|
611
625
|
requirements:
|
612
626
|
- - "~>"
|
613
627
|
- !ruby/object:Gem::Version
|
614
|
-
version: '5.
|
628
|
+
version: '5.88'
|
615
629
|
- !ruby/object:Gem::Dependency
|
616
630
|
name: sequel-annotate
|
617
631
|
requirement: !ruby/object:Gem::Requirement
|
@@ -660,14 +674,14 @@ dependencies:
|
|
660
674
|
requirements:
|
661
675
|
- - "~>"
|
662
676
|
- !ruby/object:Gem::Version
|
663
|
-
version: '1.
|
677
|
+
version: '1.6'
|
664
678
|
type: :runtime
|
665
679
|
prerelease: false
|
666
680
|
version_requirements: !ruby/object:Gem::Requirement
|
667
681
|
requirements:
|
668
682
|
- - "~>"
|
669
683
|
- !ruby/object:Gem::Version
|
670
|
-
version: '1.
|
684
|
+
version: '1.6'
|
671
685
|
- !ruby/object:Gem::Dependency
|
672
686
|
name: sequel-soft-deletes
|
673
687
|
requirement: !ruby/object:Gem::Requirement
|
@@ -716,14 +730,14 @@ dependencies:
|
|
716
730
|
requirements:
|
717
731
|
- - "~>"
|
718
732
|
- !ruby/object:Gem::Version
|
719
|
-
version: '1.
|
733
|
+
version: '1.9'
|
720
734
|
type: :runtime
|
721
735
|
prerelease: false
|
722
736
|
version_requirements: !ruby/object:Gem::Requirement
|
723
737
|
requirements:
|
724
738
|
- - "~>"
|
725
739
|
- !ruby/object:Gem::Version
|
726
|
-
version: '1.
|
740
|
+
version: '1.9'
|
727
741
|
- !ruby/object:Gem::Dependency
|
728
742
|
name: sidekiq-cron
|
729
743
|
requirement: !ruby/object:Gem::Requirement
|
@@ -758,14 +772,14 @@ dependencies:
|
|
758
772
|
requirements:
|
759
773
|
- - "~>"
|
760
774
|
- !ruby/object:Gem::Version
|
761
|
-
version: '10.
|
775
|
+
version: '10.15'
|
762
776
|
type: :runtime
|
763
777
|
prerelease: false
|
764
778
|
version_requirements: !ruby/object:Gem::Requirement
|
765
779
|
requirements:
|
766
780
|
- - "~>"
|
767
781
|
- !ruby/object:Gem::Version
|
768
|
-
version: '10.
|
782
|
+
version: '10.15'
|
769
783
|
- !ruby/object:Gem::Dependency
|
770
784
|
name: uuidx
|
771
785
|
requirement: !ruby/object:Gem::Requirement
|
@@ -900,6 +914,11 @@ files:
|
|
900
914
|
- db/migrations/044_oauth_session_token_cache.rb
|
901
915
|
- db/migrations/045_system_log.rb
|
902
916
|
- db/migrations/046_indices.rb
|
917
|
+
- db/migrations/047_sync_parallelism.rb
|
918
|
+
- db/migrations/048_sync_stats.rb
|
919
|
+
- db/migrations/049_error_handlers.rb
|
920
|
+
- db/migrations/050_logged_webhook_indices.rb
|
921
|
+
- db/migrations/051_partitioning.rb
|
903
922
|
- integration/async_spec.rb
|
904
923
|
- integration/auth_spec.rb
|
905
924
|
- integration/database_spec.rb
|
@@ -907,6 +926,7 @@ files:
|
|
907
926
|
- integration/service_integrations_spec.rb
|
908
927
|
- integration/system_spec.rb
|
909
928
|
- lib/amigo/durable_job.rb
|
929
|
+
- lib/amigo/job_in_context.rb
|
910
930
|
- lib/pry/clipboard.rb
|
911
931
|
- lib/sequel/advisory_lock.rb
|
912
932
|
- lib/sequel/plugins/text_searchable.rb
|
@@ -925,7 +945,9 @@ files:
|
|
925
945
|
- lib/webhookdb/api/db.rb
|
926
946
|
- lib/webhookdb/api/demo.rb
|
927
947
|
- lib/webhookdb/api/entities.rb
|
948
|
+
- lib/webhookdb/api/error_handlers.rb
|
928
949
|
- lib/webhookdb/api/helpers.rb
|
950
|
+
- lib/webhookdb/api/icalproxy.rb
|
929
951
|
- lib/webhookdb/api/install.rb
|
930
952
|
- lib/webhookdb/api/me.rb
|
931
953
|
- lib/webhookdb/api/organizations.rb
|
@@ -951,6 +973,7 @@ files:
|
|
951
973
|
- lib/webhookdb/backfill_job/service_integration_lock.rb
|
952
974
|
- lib/webhookdb/backfiller.rb
|
953
975
|
- lib/webhookdb/cloudflare.rb
|
976
|
+
- lib/webhookdb/concurrent.rb
|
954
977
|
- lib/webhookdb/connection_cache.rb
|
955
978
|
- lib/webhookdb/console.rb
|
956
979
|
- lib/webhookdb/convertkit.rb
|
@@ -961,6 +984,8 @@ files:
|
|
961
984
|
- lib/webhookdb/db_adapter.rb
|
962
985
|
- lib/webhookdb/db_adapter/column_types.rb
|
963
986
|
- lib/webhookdb/db_adapter/default_sql.rb
|
987
|
+
- lib/webhookdb/db_adapter/partition.rb
|
988
|
+
- lib/webhookdb/db_adapter/partitioning.rb
|
964
989
|
- lib/webhookdb/db_adapter/pg.rb
|
965
990
|
- lib/webhookdb/db_adapter/snowflake.rb
|
966
991
|
- lib/webhookdb/dbutil.rb
|
@@ -980,6 +1005,7 @@ files:
|
|
980
1005
|
- lib/webhookdb/fixtures/message_deliveries.rb
|
981
1006
|
- lib/webhookdb/fixtures/oauth_sessions.rb
|
982
1007
|
- lib/webhookdb/fixtures/organization_database_migrations.rb
|
1008
|
+
- lib/webhookdb/fixtures/organization_error_handlers.rb
|
983
1009
|
- lib/webhookdb/fixtures/organization_memberships.rb
|
984
1010
|
- lib/webhookdb/fixtures/organizations.rb
|
985
1011
|
- lib/webhookdb/fixtures/reset_codes.rb
|
@@ -1012,8 +1038,10 @@ files:
|
|
1012
1038
|
- lib/webhookdb/jobs/developer_alert_handle.rb
|
1013
1039
|
- lib/webhookdb/jobs/durable_job_recheck_poller.rb
|
1014
1040
|
- lib/webhookdb/jobs/emailer.rb
|
1041
|
+
- lib/webhookdb/jobs/front_signalwire_message_channel_sync_inbound.rb
|
1015
1042
|
- lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb
|
1016
1043
|
- lib/webhookdb/jobs/icalendar_enqueue_syncs.rb
|
1044
|
+
- lib/webhookdb/jobs/icalendar_enqueue_syncs_for_urls.rb
|
1017
1045
|
- lib/webhookdb/jobs/icalendar_sync.rb
|
1018
1046
|
- lib/webhookdb/jobs/increase_event_handler.rb
|
1019
1047
|
- lib/webhookdb/jobs/logged_webhooks_replay.rb
|
@@ -1021,9 +1049,9 @@ files:
|
|
1021
1049
|
- lib/webhookdb/jobs/message_dispatched.rb
|
1022
1050
|
- lib/webhookdb/jobs/model_event_system_log_tracker.rb
|
1023
1051
|
- lib/webhookdb/jobs/monitor_metrics.rb
|
1024
|
-
- lib/webhookdb/jobs/
|
1025
|
-
- lib/webhookdb/jobs/organization_database_migration_notify_started.rb
|
1052
|
+
- lib/webhookdb/jobs/organization_database_migration_notify.rb
|
1026
1053
|
- lib/webhookdb/jobs/organization_database_migration_run.rb
|
1054
|
+
- lib/webhookdb/jobs/organization_error_handler_dispatch.rb
|
1027
1055
|
- lib/webhookdb/jobs/prepare_database_connections.rb
|
1028
1056
|
- lib/webhookdb/jobs/process_webhook.rb
|
1029
1057
|
- lib/webhookdb/jobs/renew_watch_channel.rb
|
@@ -1033,6 +1061,7 @@ files:
|
|
1033
1061
|
- lib/webhookdb/jobs/send_invite.rb
|
1034
1062
|
- lib/webhookdb/jobs/send_test_webhook.rb
|
1035
1063
|
- lib/webhookdb/jobs/send_webhook.rb
|
1064
|
+
- lib/webhookdb/jobs/stale_row_deleter.rb
|
1036
1065
|
- lib/webhookdb/jobs/sync_target_enqueue_scheduled.rb
|
1037
1066
|
- lib/webhookdb/jobs/sync_target_run_sync.rb
|
1038
1067
|
- lib/webhookdb/jobs/trim_logged_webhooks.rb
|
@@ -1075,6 +1104,7 @@ files:
|
|
1075
1104
|
- lib/webhookdb/organization/alerting.rb
|
1076
1105
|
- lib/webhookdb/organization/database_migration.rb
|
1077
1106
|
- lib/webhookdb/organization/db_builder.rb
|
1107
|
+
- lib/webhookdb/organization/error_handler.rb
|
1078
1108
|
- lib/webhookdb/organization_membership.rb
|
1079
1109
|
- lib/webhookdb/phone_number.rb
|
1080
1110
|
- lib/webhookdb/plaid.rb
|
@@ -1093,6 +1123,7 @@ files:
|
|
1093
1123
|
- lib/webhookdb/replicator/atom_single_feed_v1.rb
|
1094
1124
|
- lib/webhookdb/replicator/aws_pricing_v1.rb
|
1095
1125
|
- lib/webhookdb/replicator/base.rb
|
1126
|
+
- lib/webhookdb/replicator/base_stale_row_deleter.rb
|
1096
1127
|
- lib/webhookdb/replicator/column.rb
|
1097
1128
|
- lib/webhookdb/replicator/convertkit_broadcast_v1.rb
|
1098
1129
|
- lib/webhookdb/replicator/convertkit_subscriber_v1.rb
|
@@ -1117,6 +1148,7 @@ files:
|
|
1117
1148
|
- lib/webhookdb/replicator/github_repository_event_v1.rb
|
1118
1149
|
- lib/webhookdb/replicator/icalendar_calendar_v1.rb
|
1119
1150
|
- lib/webhookdb/replicator/icalendar_event_v1.rb
|
1151
|
+
- lib/webhookdb/replicator/icalendar_event_v1_partitioned.rb
|
1120
1152
|
- lib/webhookdb/replicator/increase_account_number_v1.rb
|
1121
1153
|
- lib/webhookdb/replicator/increase_account_transfer_v1.rb
|
1122
1154
|
- lib/webhookdb/replicator/increase_account_v1.rb
|
@@ -1133,6 +1165,7 @@ files:
|
|
1133
1165
|
- lib/webhookdb/replicator/intercom_marketplace_root_v1.rb
|
1134
1166
|
- lib/webhookdb/replicator/intercom_v1_mixin.rb
|
1135
1167
|
- lib/webhookdb/replicator/oauth_refresh_access_token_mixin.rb
|
1168
|
+
- lib/webhookdb/replicator/partitionable_mixin.rb
|
1136
1169
|
- lib/webhookdb/replicator/plivo_sms_inbound_v1.rb
|
1137
1170
|
- lib/webhookdb/replicator/postmark_inbound_message_v1.rb
|
1138
1171
|
- lib/webhookdb/replicator/postmark_outbound_message_event_v1.rb
|
@@ -1193,6 +1226,7 @@ files:
|
|
1193
1226
|
- lib/webhookdb/spec_helpers/integration.rb
|
1194
1227
|
- lib/webhookdb/spec_helpers/message.rb
|
1195
1228
|
- lib/webhookdb/spec_helpers/postgres.rb
|
1229
|
+
- lib/webhookdb/spec_helpers/sentry.rb
|
1196
1230
|
- lib/webhookdb/spec_helpers/service.rb
|
1197
1231
|
- lib/webhookdb/spec_helpers/shared_examples_for_columns.rb
|
1198
1232
|
- lib/webhookdb/spec_helpers/shared_examples_for_replicators.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "webhookdb/async/job"
|
4
|
-
require "webhookdb/messages/org_database_migration_finished"
|
5
|
-
|
6
|
-
class Webhookdb::Jobs::OrganizationDatabaseMigrationNotifyFinished
|
7
|
-
extend Webhookdb::Async::Job
|
8
|
-
|
9
|
-
on "webhookdb.organization.databasemigration.updated"
|
10
|
-
|
11
|
-
def _perform(event)
|
12
|
-
dbm = self.lookup_model(Webhookdb::Organization::DatabaseMigration, event)
|
13
|
-
case event.payload[1]
|
14
|
-
when changed(:finished_at, from: nil)
|
15
|
-
Webhookdb::Idempotency.once_ever.under_key("org-dbmigration-finish-#{dbm.id}") do
|
16
|
-
msg = Webhookdb::Messages::OrgDatabaseMigrationFinished.new(dbm)
|
17
|
-
dbm.organization.admin_customers.each { |c| msg.dispatch_email(c) }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "webhookdb/async/job"
|
4
|
-
require "webhookdb/messages/org_database_migration_started"
|
5
|
-
|
6
|
-
class Webhookdb::Jobs::OrganizationDatabaseMigrationNotifyStarted
|
7
|
-
extend Webhookdb::Async::Job
|
8
|
-
|
9
|
-
on "webhookdb.organization.databasemigration.updated"
|
10
|
-
|
11
|
-
def _perform(event)
|
12
|
-
dbm = self.lookup_model(Webhookdb::Organization::DatabaseMigration, event)
|
13
|
-
case event.payload[1]
|
14
|
-
when changed(:started_at, from: nil)
|
15
|
-
Webhookdb::Idempotency.once_ever.under_key("org-dbmigration-start-#{dbm.id}") do
|
16
|
-
msg = Webhookdb::Messages::OrgDatabaseMigrationStarted.new(dbm)
|
17
|
-
dbm.organization.admin_customers.each { |c| msg.dispatch_email(c) }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|