work_shaper 0.1.2.5 → 0.1.2.7rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/work_shaper/manager.rb +9 -13
- data/lib/work_shaper/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 227baf03a85cc1e631a5f55ecb5832504501828bea7b87435ac00b6944b44942
|
4
|
+
data.tar.gz: '003509444bbd9b6981c16adf4dfb7f8cab44c648715a26e4737aae3ad9bcc4c5'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 926b0af454f94f5336161403278b7e4de3d6ba2399dc8692051ac7d1423750ca8b1a3f7614700cb2baffc5b1e07e420ea7d94c4b5e78b4b2f66d2687b7d8f83b
|
7
|
+
data.tar.gz: 6a6b92cf53395c4713d680e8468217633b8f5aead88c145c4b42dd523bad59e3600396f5ee059b43d31eedca6c28013c3ba972d70ff65533b8c2eac56ea527fd
|
data/lib/work_shaper/manager.rb
CHANGED
@@ -35,7 +35,7 @@ module WorkShaper
|
|
35
35
|
|
36
36
|
@heartbeat = Thread.new do
|
37
37
|
while true
|
38
|
-
report
|
38
|
+
report(detailed: true)
|
39
39
|
sleep heartbeat_period_sec
|
40
40
|
end
|
41
41
|
rescue => e
|
@@ -134,19 +134,20 @@ module WorkShaper
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def offset_ack_unsafe(partition)
|
137
|
-
completed = @completed_offsets[partition]
|
138
|
-
received = @received_offsets[partition]
|
137
|
+
completed = @completed_offsets[partition].sort
|
138
|
+
received = @received_offsets[partition].sort
|
139
139
|
|
140
|
-
offset = completed.
|
141
|
-
while received.any? && received.
|
140
|
+
offset = completed.first
|
141
|
+
while received.any? && received.first == offset
|
142
142
|
# We observed Kafka sending the same message twice, even after
|
143
143
|
# having committed the offset. Here we skip this offset if we
|
144
144
|
# know it has already been committed.
|
145
145
|
last_offset = @last_ack[partition]
|
146
146
|
if last_offset && offset <= last_offset
|
147
147
|
WorkShaper.logger.warn(
|
148
|
-
{ message: 'Received
|
149
|
-
offset: "#{partition}:#{offset}"
|
148
|
+
{ message: 'Received Duplicate Offset',
|
149
|
+
offset: "#{partition}:#{offset}",
|
150
|
+
last_acked: last_offset,
|
150
151
|
})
|
151
152
|
else
|
152
153
|
result = @ack.call(partition, offset)
|
@@ -157,10 +158,9 @@ module WorkShaper
|
|
157
158
|
completed: @completed_offsets[partition].to_a[0..10].join(','),
|
158
159
|
received: @received_offsets[partition].to_a[0..10].join(',')
|
159
160
|
})
|
160
|
-
else
|
161
|
-
@last_ack[partition] = offset
|
162
161
|
end
|
163
162
|
end
|
163
|
+
@last_ack[partition] = offset
|
164
164
|
|
165
165
|
@total_acked += 1
|
166
166
|
WorkShaper.logger.debug "@total_acked: #{@total_acked}"
|
@@ -175,11 +175,7 @@ module WorkShaper
|
|
175
175
|
|
176
176
|
def pause_on_overrun
|
177
177
|
overrun = lambda do
|
178
|
-
completed = @completed_offsets.values.flatten.count
|
179
|
-
received = @received_offsets.values.flatten.count
|
180
|
-
|
181
178
|
@total_enqueued.to_i - @total_acked.to_i > @max_in_queue
|
182
|
-
received - completed > @max_in_queue
|
183
179
|
end
|
184
180
|
|
185
181
|
# We have to be careful here to avoid a deadlock. Another thread may be waiting
|
data/lib/work_shaper/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: work_shaper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.2.
|
4
|
+
version: 0.1.2.7rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jerry Fernholz
|
@@ -62,9 +62,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
62
|
version: 2.6.0
|
63
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - ">"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
67
|
+
version: 1.3.1
|
68
68
|
requirements: []
|
69
69
|
rubygems_version: 3.4.10
|
70
70
|
signing_key:
|