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.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/db/migrations/026_undo_integration_backfill_cursor.rb +2 -0
  3. data/db/migrations/032_remove_db_defaults.rb +2 -0
  4. data/db/migrations/043_text_search.rb +2 -0
  5. data/db/migrations/047_sync_parallelism.rb +9 -0
  6. data/db/migrations/048_sync_stats.rb +9 -0
  7. data/db/migrations/049_error_handlers.rb +18 -0
  8. data/db/migrations/050_logged_webhook_indices.rb +25 -0
  9. data/db/migrations/051_partitioning.rb +9 -0
  10. data/integration/async_spec.rb +0 -2
  11. data/integration/service_integrations_spec.rb +0 -2
  12. data/lib/amigo/durable_job.rb +2 -2
  13. data/lib/amigo/job_in_context.rb +12 -0
  14. data/lib/webhookdb/api/entities.rb +6 -2
  15. data/lib/webhookdb/api/error_handlers.rb +104 -0
  16. data/lib/webhookdb/api/helpers.rb +8 -1
  17. data/lib/webhookdb/api/icalproxy.rb +22 -0
  18. data/lib/webhookdb/api/install.rb +2 -1
  19. data/lib/webhookdb/api/saved_queries.rb +1 -0
  20. data/lib/webhookdb/api/saved_views.rb +1 -0
  21. data/lib/webhookdb/api/service_integrations.rb +1 -1
  22. data/lib/webhookdb/api/sync_targets.rb +1 -1
  23. data/lib/webhookdb/api/system.rb +5 -0
  24. data/lib/webhookdb/api/webhook_subscriptions.rb +1 -0
  25. data/lib/webhookdb/api.rb +4 -1
  26. data/lib/webhookdb/apps.rb +4 -0
  27. data/lib/webhookdb/async/autoscaler.rb +10 -0
  28. data/lib/webhookdb/async/job.rb +4 -0
  29. data/lib/webhookdb/async/scheduled_job.rb +4 -0
  30. data/lib/webhookdb/async.rb +2 -0
  31. data/lib/webhookdb/backfiller.rb +17 -4
  32. data/lib/webhookdb/concurrent.rb +96 -0
  33. data/lib/webhookdb/connection_cache.rb +29 -8
  34. data/lib/webhookdb/customer.rb +2 -2
  35. data/lib/webhookdb/database_document.rb +1 -1
  36. data/lib/webhookdb/db_adapter/default_sql.rb +1 -14
  37. data/lib/webhookdb/db_adapter/partition.rb +14 -0
  38. data/lib/webhookdb/db_adapter/partitioning.rb +8 -0
  39. data/lib/webhookdb/db_adapter/pg.rb +77 -5
  40. data/lib/webhookdb/db_adapter/snowflake.rb +15 -6
  41. data/lib/webhookdb/db_adapter.rb +24 -2
  42. data/lib/webhookdb/fixtures/logged_webhooks.rb +4 -0
  43. data/lib/webhookdb/fixtures/organization_error_handlers.rb +20 -0
  44. data/lib/webhookdb/http.rb +29 -15
  45. data/lib/webhookdb/icalendar.rb +30 -9
  46. data/lib/webhookdb/jobs/amigo_test_jobs.rb +1 -1
  47. data/lib/webhookdb/jobs/backfill.rb +21 -25
  48. data/lib/webhookdb/jobs/create_mirror_table.rb +3 -4
  49. data/lib/webhookdb/jobs/deprecated_jobs.rb +2 -0
  50. data/lib/webhookdb/jobs/emailer.rb +2 -1
  51. data/lib/webhookdb/jobs/front_signalwire_message_channel_sync_inbound.rb +15 -0
  52. data/lib/webhookdb/jobs/icalendar_delete_stale_cancelled_events.rb +7 -2
  53. data/lib/webhookdb/jobs/icalendar_enqueue_syncs.rb +74 -11
  54. data/lib/webhookdb/jobs/icalendar_enqueue_syncs_for_urls.rb +22 -0
  55. data/lib/webhookdb/jobs/icalendar_sync.rb +21 -9
  56. data/lib/webhookdb/jobs/increase_event_handler.rb +3 -2
  57. data/lib/webhookdb/jobs/logged_webhooks_replay.rb +5 -3
  58. data/lib/webhookdb/jobs/message_dispatched.rb +1 -0
  59. data/lib/webhookdb/jobs/model_event_system_log_tracker.rb +7 -0
  60. data/lib/webhookdb/jobs/monitor_metrics.rb +1 -1
  61. data/lib/webhookdb/jobs/organization_database_migration_notify.rb +32 -0
  62. data/lib/webhookdb/jobs/organization_database_migration_run.rb +4 -6
  63. data/lib/webhookdb/jobs/organization_error_handler_dispatch.rb +26 -0
  64. data/lib/webhookdb/jobs/prepare_database_connections.rb +1 -0
  65. data/lib/webhookdb/jobs/process_webhook.rb +11 -12
  66. data/lib/webhookdb/jobs/renew_watch_channel.rb +7 -10
  67. data/lib/webhookdb/jobs/replication_migration.rb +5 -2
  68. data/lib/webhookdb/jobs/reset_code_create_dispatch.rb +1 -2
  69. data/lib/webhookdb/jobs/scheduled_backfills.rb +2 -2
  70. data/lib/webhookdb/jobs/send_invite.rb +3 -2
  71. data/lib/webhookdb/jobs/send_test_webhook.rb +1 -3
  72. data/lib/webhookdb/jobs/send_webhook.rb +4 -5
  73. data/lib/webhookdb/jobs/stale_row_deleter.rb +31 -0
  74. data/lib/webhookdb/jobs/sync_target_enqueue_scheduled.rb +3 -0
  75. data/lib/webhookdb/jobs/sync_target_run_sync.rb +9 -15
  76. data/lib/webhookdb/jobs/webhook_subscription_delivery_event.rb +5 -8
  77. data/lib/webhookdb/liquid/expose.rb +1 -1
  78. data/lib/webhookdb/liquid/filters.rb +1 -1
  79. data/lib/webhookdb/liquid/partial.rb +2 -2
  80. data/lib/webhookdb/logged_webhook/resilient.rb +3 -3
  81. data/lib/webhookdb/logged_webhook.rb +16 -2
  82. data/lib/webhookdb/message/email_transport.rb +1 -1
  83. data/lib/webhookdb/message.rb +2 -2
  84. data/lib/webhookdb/messages/error_generic_backfill.rb +2 -0
  85. data/lib/webhookdb/messages/error_icalendar_fetch.rb +2 -0
  86. data/lib/webhookdb/messages/error_signalwire_send_sms.rb +2 -0
  87. data/lib/webhookdb/organization/alerting.rb +50 -4
  88. data/lib/webhookdb/organization/database_migration.rb +1 -1
  89. data/lib/webhookdb/organization/db_builder.rb +4 -3
  90. data/lib/webhookdb/organization/error_handler.rb +141 -0
  91. data/lib/webhookdb/organization.rb +62 -9
  92. data/lib/webhookdb/postgres/model_utilities.rb +2 -0
  93. data/lib/webhookdb/postgres.rb +1 -3
  94. data/lib/webhookdb/replicator/base.rb +136 -29
  95. data/lib/webhookdb/replicator/base_stale_row_deleter.rb +165 -0
  96. data/lib/webhookdb/replicator/email_octopus_contact_v1.rb +0 -1
  97. data/lib/webhookdb/replicator/fake.rb +100 -88
  98. data/lib/webhookdb/replicator/front_signalwire_message_channel_app_v1.rb +105 -44
  99. data/lib/webhookdb/replicator/github_repo_v1_mixin.rb +17 -0
  100. data/lib/webhookdb/replicator/icalendar_calendar_v1.rb +144 -23
  101. data/lib/webhookdb/replicator/icalendar_event_v1.rb +20 -44
  102. data/lib/webhookdb/replicator/icalendar_event_v1_partitioned.rb +33 -0
  103. data/lib/webhookdb/replicator/intercom_contact_v1.rb +1 -0
  104. data/lib/webhookdb/replicator/intercom_conversation_v1.rb +1 -0
  105. data/lib/webhookdb/replicator/intercom_v1_mixin.rb +24 -2
  106. data/lib/webhookdb/replicator/partitionable_mixin.rb +116 -0
  107. data/lib/webhookdb/replicator/shopify_v1_mixin.rb +1 -1
  108. data/lib/webhookdb/replicator/signalwire_message_v1.rb +1 -2
  109. data/lib/webhookdb/replicator/sponsy_v1_mixin.rb +1 -1
  110. data/lib/webhookdb/replicator/transistor_episode_stats_v1.rb +0 -1
  111. data/lib/webhookdb/replicator.rb +4 -1
  112. data/lib/webhookdb/service/helpers.rb +4 -0
  113. data/lib/webhookdb/service/middleware.rb +6 -2
  114. data/lib/webhookdb/service_integration.rb +5 -0
  115. data/lib/webhookdb/signalwire.rb +1 -1
  116. data/lib/webhookdb/spec_helpers/async.rb +0 -4
  117. data/lib/webhookdb/spec_helpers/sentry.rb +32 -0
  118. data/lib/webhookdb/spec_helpers/shared_examples_for_replicators.rb +87 -1
  119. data/lib/webhookdb/spec_helpers.rb +1 -0
  120. data/lib/webhookdb/sync_target.rb +195 -29
  121. data/lib/webhookdb/tasks/admin.rb +1 -1
  122. data/lib/webhookdb/tasks/annotate.rb +1 -1
  123. data/lib/webhookdb/tasks/db.rb +13 -1
  124. data/lib/webhookdb/tasks/docs.rb +1 -1
  125. data/lib/webhookdb/tasks/fixture.rb +1 -1
  126. data/lib/webhookdb/tasks/message.rb +1 -1
  127. data/lib/webhookdb/tasks/regress.rb +1 -1
  128. data/lib/webhookdb/tasks/release.rb +1 -1
  129. data/lib/webhookdb/tasks/sidekiq.rb +1 -1
  130. data/lib/webhookdb/tasks/specs.rb +1 -1
  131. data/lib/webhookdb/version.rb +1 -1
  132. data/lib/webhookdb/webhook_subscription.rb +2 -3
  133. data/lib/webhookdb.rb +3 -1
  134. metadata +88 -54
  135. data/lib/webhookdb/jobs/organization_database_migration_notify_finished.rb +0 -21
  136. data/lib/webhookdb/jobs/organization_database_migration_notify_started.rb +0 -21
@@ -7,7 +7,7 @@ require "webhookdb"
7
7
  module Webhookdb::Tasks
8
8
  class Sidekiq < Rake::TaskLib
9
9
  def initialize
10
- super()
10
+ super
11
11
  namespace :sidekiq do
12
12
  desc "Clear the Sidekiq redis DB (flushdb). " \
13
13
  "Only use on local, and only for legit reasons, " \
@@ -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, " \
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Webhookdb
4
- VERSION = "1.4.0"
4
+ VERSION = "1.5.0"
5
5
  end
@@ -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
- error: e,
140
- webhook_subscription_id: self.id,
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, nil
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.0
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: 2024-09-01 00:00:00.000000000 Z
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.1'
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.1'
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: '0.8'
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: '0.8'
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.53'
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.53'
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.0'
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.0'
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.3'
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.3'
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.2'
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.2'
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.21'
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.21'
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.7'
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.7'
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.4'
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.4'
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.12'
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.12'
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.16'
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.16'
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.16'
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.16'
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.20'
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.20'
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.5'
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.5'
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.21'
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.21'
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.14'
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.14'
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.4'
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.4'
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.19'
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.19'
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.15'
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.15'
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.17'
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.17'
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.17'
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.17'
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.75'
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.75'
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.5'
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.5'
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.8'
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.8'
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.4'
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.4'
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/organization_database_migration_notify_finished.rb
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