ruby_event_store-outbox 0.0.22 → 0.0.23

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: cf41fff7a72941537c0247985765f8ca110bc17f14f1e886fca032f172ec918b
4
- data.tar.gz: cef6f36936589755f6f636f07ef4edbc823b47ddb2a616700ec63558c75361b8
3
+ metadata.gz: eca098a782c640bdb2bcfc7023a88b37b1c54025f785cb40c04abcafdd23ec9a
4
+ data.tar.gz: 419c3f82f9f553f1c7dab304633093ff27ff32a10d4a3d60bd26fb9f07064873
5
5
  SHA512:
6
- metadata.gz: 30f86dcda05b796a4adce6cfa7643a2c2aa7b492ce6efe72bed540aa14d5477cc8f81dbd6bbf918500c007490f3857bad8cd268351b05b39d16dfa46ba6213e9
7
- data.tar.gz: 25ecce3dc414e61b775cc618ada4c2449f7be1217ed90637a485b5e372f1a1fd9fab3a8dd681ded98409ddb3537c3d2c156e65dae9527940d847fc52b893a998
6
+ metadata.gz: b1f689cd6077646bbb366089fec855e8c9b5b4550b7a44c4ff95d02f57eba05e3b87a06d697195424c58cf6384b0bd6df6f58eddcadf426cf34de62c683fa903
7
+ data.tar.gz: 9c8f0b506b8ffc9b439fa0d642b3ec847021783df36d60c774977d9efcfd97325f49b438c1ba31e4c8f02d8b78175c0948cbf1d011047d7235f1df54ed930d54
@@ -2,17 +2,18 @@ module RubyEventStore
2
2
  module Outbox
3
3
  module CleanupStrategies
4
4
  class CleanOldEnqueued
5
- def initialize(repository, duration)
5
+ def initialize(repository, duration, limit)
6
6
  @repository = repository
7
7
  @duration = duration
8
+ @limit = limit
8
9
  end
9
10
 
10
11
  def call(fetch_specification)
11
- repository.delete_enqueued_older_than(fetch_specification, duration)
12
+ repository.delete_enqueued_older_than(fetch_specification, duration, limit)
12
13
  end
13
14
 
14
15
  private
15
- attr_reader :repository, :duration
16
+ attr_reader :repository, :duration, :limit
16
17
  end
17
18
  end
18
19
  end
@@ -15,6 +15,7 @@ module RubyEventStore
15
15
  batch_size: 100,
16
16
  metrics_url: nil,
17
17
  cleanup_strategy: :none,
18
+ cleanup_limit: :all,
18
19
  sleep_on_empty: 0.5
19
20
  }
20
21
  Options = Struct.new(*DEFAULTS.keys)
@@ -57,6 +58,10 @@ module RubyEventStore
57
58
  options.cleanup_strategy = cleanup_strategy
58
59
  end
59
60
 
61
+ option_parser.on("--cleanup-limit=LIMIT", "Amount of records removed in single cleanup run. One of: all or number of records that should be removed. Default: all") do |cleanup_limit|
62
+ options.cleanup_limit = cleanup_limit
63
+ end
64
+
60
65
  option_parser.on("--sleep-on-empty=SLEEP_TIME", Float, "How long to sleep before next check when there was nothing to do. Default: 0.5") do |sleep_on_empty|
61
66
  options.sleep_on_empty = sleep_on_empty
62
67
  end
@@ -21,6 +21,7 @@ module RubyEventStore
21
21
  database_url:,
22
22
  redis_url:,
23
23
  cleanup:,
24
+ cleanup_limit:,
24
25
  sleep_on_empty:
25
26
  )
26
27
  @split_keys = split_keys
@@ -29,6 +30,7 @@ module RubyEventStore
29
30
  @database_url = database_url
30
31
  @redis_url = redis_url
31
32
  @cleanup = cleanup
33
+ @cleanup_limit = cleanup_limit
32
34
  @sleep_on_empty = sleep_on_empty
33
35
  freeze
34
36
  end
@@ -41,11 +43,12 @@ module RubyEventStore
41
43
  database_url: overriden_options.fetch(:database_url, database_url),
42
44
  redis_url: overriden_options.fetch(:redis_url, redis_url),
43
45
  cleanup: overriden_options.fetch(:cleanup, cleanup),
46
+ cleanup_limit: overriden_options.fetch(:cleanup_limit, cleanup_limit),
44
47
  sleep_on_empty: overriden_options.fetch(:sleep_on_empty, sleep_on_empty)
45
48
  )
46
49
  end
47
50
 
48
- attr_reader :split_keys, :message_format, :batch_size, :database_url, :redis_url, :cleanup, :sleep_on_empty
51
+ attr_reader :split_keys, :message_format, :batch_size, :database_url, :redis_url, :cleanup, :cleanup_limit, :sleep_on_empty
49
52
  end
50
53
 
51
54
  def initialize(consumer_uuid, configuration, clock: Time, logger:, metrics:)
@@ -68,7 +71,7 @@ module RubyEventStore
68
71
  when :none
69
72
  CleanupStrategies::None.new
70
73
  else
71
- CleanupStrategies::CleanOldEnqueued.new(repository, ActiveSupport::Duration.parse(configuration.cleanup))
74
+ CleanupStrategies::CleanOldEnqueued.new(repository, ActiveSupport::Duration.parse(configuration.cleanup), configuration.cleanup_limit)
72
75
  end
73
76
  end
74
77
 
@@ -142,11 +142,12 @@ module RubyEventStore
142
142
  record.update_column(:enqueued_at, now)
143
143
  end
144
144
 
145
- def delete_enqueued_older_than(fetch_specification, duration)
146
- Record
145
+ def delete_enqueued_older_than(fetch_specification, duration, limit)
146
+ scope = Record
147
147
  .for_fetch_specification(fetch_specification)
148
148
  .where("enqueued_at < ?", duration.ago)
149
- .delete_all
149
+ scope = scope.limit(limit) unless limit == :all
150
+ scope.delete_all
150
151
  :ok
151
152
  rescue ActiveRecord::Deadlocked
152
153
  :deadlocked
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyEventStore
4
4
  module Outbox
5
- VERSION = "0.0.22"
5
+ VERSION = "0.0.23"
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.22
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-20 00:00:00.000000000 Z
11
+ date: 2022-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby_event_store