search-engine-for-typesense 30.1.8.14 → 30.1.8.15
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6eb40e6492c7fdccdda9615cf69bea30cf50342b3ca84d72bf0558342ee99477
|
|
4
|
+
data.tar.gz: 7b9236e0737758ba468adc31c4f0c6785e408beb9b057602c8cf899243a0384f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 99c76462daf9001f8fe5ad7118e5c9723a62fa780456b836669d82769d3b8d13c8d9f23a156bddb91aa8d731f14fc458d1e6ae293f91f1699511c40c808bf7d7
|
|
7
|
+
data.tar.gz: b06ebee63629801c9b7988501f77b3c231acf382fa4d87ad89f7784d55c060b0a23cf4dd7e27b3de9660cf10983a1f34828eddb61b778864373120945fa9fb0b
|
|
@@ -42,6 +42,7 @@ module SearchEngine
|
|
|
42
42
|
slot = drain_slot.to_i
|
|
43
43
|
effective_limit = limit || SearchEngine.config.postgres_outbox.batch_size
|
|
44
44
|
repository = repository_for_slot
|
|
45
|
+
slot_requeued = false
|
|
45
46
|
return stale_slot_summary(target.key, slot) unless repository.start_drain_slot!(
|
|
46
47
|
target_key: target.key,
|
|
47
48
|
slot: slot,
|
|
@@ -55,13 +56,16 @@ module SearchEngine
|
|
|
55
56
|
slot: slot,
|
|
56
57
|
worker_id: worker_id
|
|
57
58
|
)
|
|
58
|
-
|
|
59
|
+
if requeued
|
|
60
|
+
slot_requeued = true
|
|
61
|
+
enqueue_requeued_slot_continuation(repository, target.key, slot, limit: limit)
|
|
62
|
+
end
|
|
59
63
|
else
|
|
60
64
|
repository.release_drain_slot!(target_key: target.key, slot: slot, worker_id: worker_id)
|
|
61
65
|
end
|
|
62
66
|
summary
|
|
63
67
|
rescue StandardError => error
|
|
64
|
-
if repository && target && slot
|
|
68
|
+
if repository && target && slot && !slot_requeued
|
|
65
69
|
repository.release_drain_slot!(target_key: target.key, slot: slot, worker_id: worker_id, error: error)
|
|
66
70
|
end
|
|
67
71
|
raise
|
|
@@ -88,6 +92,13 @@ module SearchEngine
|
|
|
88
92
|
summary
|
|
89
93
|
end
|
|
90
94
|
|
|
95
|
+
def enqueue_requeued_slot_continuation(repository, target_key, slot, limit:)
|
|
96
|
+
enqueue_target_continuation(limit: limit, target_key: target_key, drain_slot: slot)
|
|
97
|
+
rescue StandardError => error
|
|
98
|
+
repository.release_requeued_drain_slot!(target_key: target_key, slot: slot, error: error)
|
|
99
|
+
raise
|
|
100
|
+
end
|
|
101
|
+
|
|
91
102
|
def continue_draining?(summary, effective_limit)
|
|
92
103
|
summary[:continue] || summary[:claimed].to_i >= effective_limit.to_i
|
|
93
104
|
end
|
|
@@ -222,6 +222,27 @@ module SearchEngine
|
|
|
222
222
|
SQL
|
|
223
223
|
end
|
|
224
224
|
|
|
225
|
+
# Release a queued slot when a follow-up job could not be enqueued.
|
|
226
|
+
#
|
|
227
|
+
# @param target_key [String, Symbol]
|
|
228
|
+
# @param slot [Integer]
|
|
229
|
+
# @param error [Exception, String, nil]
|
|
230
|
+
# @return [void]
|
|
231
|
+
def release_requeued_drain_slot!(target_key:, slot:, error: nil)
|
|
232
|
+
execute(<<~SQL)
|
|
233
|
+
UPDATE #{quoted_drain_slot_table}
|
|
234
|
+
SET status = 'idle',
|
|
235
|
+
locked_at = NULL,
|
|
236
|
+
locked_by = NULL,
|
|
237
|
+
finished_at = CURRENT_TIMESTAMP,
|
|
238
|
+
last_error = #{quote(error.nil? ? nil : truncate_error(error))},
|
|
239
|
+
updated_at = CURRENT_TIMESTAMP
|
|
240
|
+
WHERE target_key = #{quote(target_key)}
|
|
241
|
+
AND slot = #{slot.to_i}
|
|
242
|
+
AND status = 'queued'
|
|
243
|
+
SQL
|
|
244
|
+
end
|
|
245
|
+
|
|
225
246
|
private
|
|
226
247
|
|
|
227
248
|
attr_reader :target_key
|