ruby_event_store-outbox 0.0.17 → 0.0.18

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2dbabda53c709b7e11850772272b736226ed33e441392e9f7a1b7b5e3ead47b7
4
- data.tar.gz: 02eec2972f701e1ecc09bd65c38cecafef53d4dc45f95f69a869457289a1edcc
3
+ metadata.gz: 14cc2d7efea5445a91aad847cf380e9a5b743c2aa649ee8ca1d07b0093b13c36
4
+ data.tar.gz: 3a42ce8411f6c7fe36acb2007b13b392570859c52f0111bad22db9be09216720
5
5
  SHA512:
6
- metadata.gz: aec65f023d21c3a86204b31b22ae1b21157f46c39869a22e522efe7b13e320cd3d4f75ef139c6e421d40b203a3d33bcb368cf16cb98552ff803380a36469290a
7
- data.tar.gz: 6fa822fb40b763717f31297944423bcb708400ba3bfad9852cde4edc99f79308ad3bb837ffc593d2cae6942961735a6d5c6c9bf25088bafbaea9b48f2d278842
6
+ metadata.gz: 8919dc60db4ba6f37822a6fd1eff751b06b8c748f310c521157e2e41630bbe8b20705e93edeb66d1891f93c2cd9717cc407513bc2194e4c7f979102c540c3618
7
+ data.tar.gz: a78188907f82607f3f3cf164b554748af7603589c8a60ab25face59d5d5efd73c3ea14cfaf6b599bd1abe2b6162efa978565ebdcc24ec68102f5a03f172b8737
@@ -6,6 +6,7 @@ module RubyEventStore
6
6
  end
7
7
 
8
8
  def call(_fetch_specification)
9
+ :ok
9
10
  end
10
11
  end
11
12
  end
@@ -148,7 +148,7 @@ module RubyEventStore
148
148
 
149
149
  release_lock_for_process(fetch_specification)
150
150
 
151
- cleanup_strategy.call(fetch_specification)
151
+ cleanup(fetch_specification)
152
152
 
153
153
  processor.after_batch
154
154
 
@@ -218,6 +218,21 @@ module RubyEventStore
218
218
  end
219
219
  end
220
220
 
221
+ def cleanup(fetch_specification)
222
+ result = cleanup_strategy.call(fetch_specification)
223
+ case result
224
+ when :ok
225
+ when :deadlocked
226
+ logger.warn "Cleanup for split_key '#{fetch_specification.split_key}' failed (deadlock)"
227
+ metrics.write_operation_result("cleanup", "deadlocked")
228
+ when :lock_timeout
229
+ logger.warn "Cleanup for split_key '#{fetch_specification.split_key}' failed (lock timeout)"
230
+ metrics.write_operation_result("cleanup", "lock_timeout")
231
+ else
232
+ raise "Unexpected result #{result}"
233
+ end
234
+ end
235
+
221
236
  def prepare_traps
222
237
  Signal.trap("INT") do
223
238
  initiate_graceful_shutdown
@@ -0,0 +1,6 @@
1
+ module RubyEventStore
2
+ module Outbox
3
+ class ConsumerProcess
4
+ end
5
+ end
6
+ end
@@ -147,6 +147,11 @@ module RubyEventStore
147
147
  .for_fetch_specification(fetch_specification)
148
148
  .where("enqueued_at < ?", duration.ago)
149
149
  .delete_all
150
+ :ok
151
+ rescue ActiveRecord::Deadlocked
152
+ :deadlocked
153
+ rescue ActiveRecord::LockWaitTimeout
154
+ :lock_timeout
150
155
  end
151
156
  end
152
157
  end
@@ -0,0 +1,19 @@
1
+ require "sidekiq"
2
+
3
+ module RubyEventStore
4
+ module Outbox
5
+ class SidekiqMessageHandler
6
+ def initialize
7
+ @sidekiq = Sidekiq::Client.new(Sidekiq.redis_pool)
8
+ end
9
+
10
+ def init
11
+ end
12
+
13
+ def handle_one_record(now, record)
14
+ hash_payload = JSON.parse(record.payload)
15
+ @sidekiq.__send__(:raw_push, [hash_payload])
16
+ end
17
+ end
18
+ end
19
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyEventStore
4
4
  module Outbox
5
- VERSION = "0.0.17"
5
+ VERSION = "0.0.18"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_event_store-outbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-13 00:00:00.000000000 Z
11
+ date: 2021-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby_event_store
@@ -55,12 +55,14 @@ files:
55
55
  - lib/ruby_event_store/outbox/cleanup_strategies/none.rb
56
56
  - lib/ruby_event_store/outbox/cli.rb
57
57
  - lib/ruby_event_store/outbox/consumer.rb
58
+ - lib/ruby_event_store/outbox/consumer_process.rb
58
59
  - lib/ruby_event_store/outbox/fetch_specification.rb
59
60
  - lib/ruby_event_store/outbox/metrics.rb
60
61
  - lib/ruby_event_store/outbox/metrics/influx.rb
61
62
  - lib/ruby_event_store/outbox/metrics/null.rb
62
63
  - lib/ruby_event_store/outbox/repository.rb
63
64
  - lib/ruby_event_store/outbox/sidekiq5_format.rb
65
+ - lib/ruby_event_store/outbox/sidekiq_message_handler.rb
64
66
  - lib/ruby_event_store/outbox/sidekiq_processor.rb
65
67
  - lib/ruby_event_store/outbox/sidekiq_producer.rb
66
68
  - lib/ruby_event_store/outbox/sidekiq_scheduler.rb
@@ -87,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
89
  - !ruby/object:Gem::Version
88
90
  version: '0'
89
91
  requirements: []
90
- rubygems_version: 3.0.6
92
+ rubygems_version: 3.0.3
91
93
  signing_key:
92
94
  specification_version: 4
93
95
  summary: Active Record based outbox for Ruby Event Store