riverqueue 0.12.0 → 0.13.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.
data/sig/client.rbs CHANGED
@@ -1,5 +1,6 @@
1
1
  module River
2
2
  MAX_ATTEMPTS_DEFAULT: Integer
3
+ MAX_ATTEMPTS_LIMIT: Integer
3
4
  PRIORITY_DEFAULT: Integer
4
5
  QUEUE_DEFAULT: String
5
6
 
@@ -20,7 +21,7 @@ module River
20
21
  def id: () -> String
21
22
  def insert: (jobArgs, ?insert_opts: InsertOpts?, ?max_attempts: Integer?,
22
23
  ?metadata: Hash[String | Symbol, untyped]?, ?priority: Integer?, ?queue: (String | Symbol)?,
23
- ?scheduled_at: Time?, ?state: jobStateInput?, ?tags: Array[String]?, ?unique_opts: UniqueOpts?) -> JobInsertResult
24
+ ?scheduled_at: Time?, ?state: jobStateInitialInput?, ?tags: Array[String]?, ?unique_opts: UniqueOpts?) -> JobInsertResult
24
25
  def insert_many: (Array[jobArgs | InsertManyParams]) -> Array[JobInsertResult]
25
26
  def job_cancel: (Integer) -> JobRow
26
27
  def job_delete: (Integer) -> JobRow
@@ -54,6 +55,7 @@ module River
54
55
 
55
56
  DEFAULT_UNIQUE_STATES: Array[jobStateAll]
56
57
  EMPTY_INSERT_OPTS: InsertOpts
58
+ INITIAL_STATES: Array[jobStateInitial]
57
59
  REQUIRED_UNIQUE_STATES: Array[jobStateAll]
58
60
  TAG_RE: Regexp
59
61
 
@@ -63,6 +65,7 @@ module River
63
65
  private def run_insert_plugins: (Array[Driver::JobInsertParams]) { () -> Array[JobInsertResult] } -> Array[JobInsertResult]
64
66
  private def truncate_time: (Time, Integer | Rational) -> Time
65
67
  private def uint64_to_int64: (Integer) -> Integer
68
+ private def validate_insert_state: (String | Symbol) -> jobStateInitial
66
69
  private def validate_tags: (Array[String]) -> Array[String]
67
70
  private def validate_unique_states: (Array[jobStateInput]) -> Array[jobStateAll]
68
71
  end
@@ -76,7 +79,7 @@ module River
76
79
 
77
80
  def initialize: (jobArgs job, ?insert_opts: InsertOpts?, ?max_attempts: Integer?,
78
81
  ?metadata: Hash[String | Symbol, untyped]?, ?priority: Integer?, ?queue: (String | Symbol)?,
79
- ?scheduled_at: Time?, ?state: jobStateInput?, ?tags: Array[String]?, ?unique_opts: UniqueOpts?) -> void
82
+ ?scheduled_at: Time?, ?state: jobStateInitialInput?, ?tags: Array[String]?, ?unique_opts: UniqueOpts?) -> void
80
83
  def is_a?: (Class) -> bool
81
84
  end
82
85
 
data/sig/driver.rbs CHANGED
@@ -8,7 +8,7 @@ module River
8
8
  def job_cancel: (Integer, ?now: Time) -> JobRow?
9
9
  def job_delete: (Integer) -> JobRow?
10
10
  def job_delete_finalized: (**untyped) -> Integer
11
- def job_delete_if_running: (Integer) -> bool
11
+ def job_delete_if_running: (Integer) -> (bool | :cancelled)
12
12
  def job_delete_many: (JobListParams) -> Array[JobRow]
13
13
  def job_get_available: (queue: String, max: Integer, attempted_by: String, ?kinds: Array[String]?, ?now: Time) -> Array[JobRow]
14
14
  def job_claim: (id: Integer, attempted_by: String, ?allow_scheduled: bool, ?now: Time) -> JobRow?
@@ -29,8 +29,8 @@ module River
29
29
  def notification_delete_before: (horizon: Time, ?max: Integer) -> Integer
30
30
  def queue_get: (String) -> Queue?
31
31
  def queue_list: (?max: Integer) -> Array[Queue]
32
- def queue_pause: (String, ?now: Time) -> untyped
33
- def queue_resume: (String, ?now: Time) -> untyped
32
+ def queue_pause: (String, ?now: Time) -> Array[Queue]
33
+ def queue_resume: (String, ?now: Time) -> Array[Queue]
34
34
  def queue_update: (String, metadata: Hash[untyped, untyped], ?now: Time) -> Queue?
35
35
  def queue_upsert: (String, ?metadata: Hash[untyped, untyped], ?now: Time) -> Queue?
36
36
  def transaction: [T] () { () -> T } -> T
@@ -117,7 +117,7 @@ module River
117
117
  private def runtime_claim_jobs: (untyped, untyped, untyped, untyped) -> untyped
118
118
  def job_list: (?untyped) -> untyped
119
119
  def job_metadata_merge: (untyped, untyped) -> untyped
120
- def job_rescue_stuck: (horizon: untyped, retry_policy: untyped, ?now: untyped, ?max: untyped) -> untyped
120
+ def job_rescue_stuck: (horizon: untyped, retry_policy: untyped, ?now: untyped, ?max: untyped, ?logger: untyped, ?rescue_if: untyped) -> untyped
121
121
  def job_retry: (untyped, ?now: untyped) -> untyped
122
122
  def job_schedule: (?now: untyped, ?max: untyped) -> untyped
123
123
  def job_set_state_if_running: (id: untyped, state: untyped, ?now: untyped, ?attempt: untyped, ?error: untyped, ?finalized_at: untyped, ?metadata: untyped, ?scheduled_at: untyped) -> untyped
@@ -143,6 +143,7 @@ module River
143
143
  def runtime_execute: (String) -> untyped
144
144
  def runtime_in_clause: (untyped, untyped) -> untyped
145
145
  def runtime_job_list_without_params: () -> untyped
146
+ def runtime_job_list: (JobListParams, ?for_delete: bool) -> Array[JobRow]
146
147
  def runtime_job_rows: (String) -> untyped
147
148
  def runtime_json: (untyped) -> untyped
148
149
  def runtime_merge_metadata: (untyped) -> untyped
@@ -157,6 +158,7 @@ module River
157
158
  def runtime_queue_columns: () -> untyped
158
159
  def runtime_queue_from_row: (untyped) -> untyped
159
160
  def runtime_quote: (untyped) -> String
161
+ def runtime_rescue_retry: (untyped, untyped, untyped, untyped, untyped) -> Time
160
162
  def runtime_returning_ids: (untyped) -> untyped
161
163
  def runtime_state: (untyped) -> untyped
162
164
  def runtime_tag_contains: (untyped) -> untyped
data/sig/insert_opts.rbs CHANGED
@@ -5,11 +5,11 @@ module River
5
5
  attr_accessor priority: Integer?
6
6
  attr_accessor queue: (String | Symbol)?
7
7
  attr_accessor scheduled_at: Time?
8
- attr_accessor state: jobStateInput?
8
+ attr_accessor state: jobStateInitialInput?
9
9
  attr_accessor tags: Array[String]?
10
10
  attr_accessor unique_opts: UniqueOpts?
11
11
 
12
- def initialize: (?max_attempts: Integer?, ?metadata: Hash[String | Symbol, untyped]?, ?priority: Integer?, ?queue: (String | Symbol)?, ?scheduled_at: Time?, ?state: jobStateInput?, ?tags: Array[String]?, ?unique_opts: UniqueOpts?) -> void
12
+ def initialize: (?max_attempts: Integer?, ?metadata: Hash[String | Symbol, untyped]?, ?priority: Integer?, ?queue: (String | Symbol)?, ?scheduled_at: Time?, ?state: jobStateInitialInput?, ?tags: Array[String]?, ?unique_opts: UniqueOpts?) -> void
13
13
  end
14
14
 
15
15
  class UniqueOpts
data/sig/job.rbs CHANGED
@@ -9,6 +9,8 @@ module River
9
9
  JOB_STATE_SCHEDULED: "scheduled"
10
10
 
11
11
  type jobStateAll = "available" | "cancelled" | "completed" | "discarded" | "pending" | "retryable" | "running" | "scheduled"
12
+ type jobStateInitial = "available" | "pending" | "scheduled"
13
+ type jobStateInitialInput = jobStateInitial | :available | :pending | :scheduled
12
14
  type jobStateInput = jobStateAll | :available | :cancelled | :completed | :discarded | :pending | :retryable | :running | :scheduled
13
15
 
14
16
  interface _JobArgs
data/sig/runtime.rbs CHANGED
@@ -288,8 +288,11 @@ module River
288
288
 
289
289
  class PeriodicCron
290
290
  @cron: untyped
291
+ @interval: Integer?
291
292
  def initialize: (String, ?timezone: String) -> void
292
293
  def next: (Time) -> Time
294
+ private
295
+ def parse_interval: (String) -> Integer
293
296
  end
294
297
 
295
298
  class PeriodicInterval
@@ -299,15 +302,17 @@ module River
299
302
  end
300
303
 
301
304
  class PeriodicJobBundle
305
+ @enabled: bool
302
306
  @jobs: Hash[Integer, untyped]
303
307
  @mutex: Mutex
304
308
  @next_handle: Integer
305
309
  @wake: untyped
306
- def initialize: (Array[PeriodicJob], wake: untyped) -> void
310
+ def initialize: (Array[PeriodicJob], wake: untyped, ?enabled: bool) -> void
307
311
  def add: (PeriodicJob) -> Integer
308
312
  def add_many: (Array[PeriodicJob]) -> Array[Integer]
309
313
  def clear: () -> self
310
314
  def due: (Time) ?{ (PeriodicJob, StandardError) -> void } -> Array[PeriodicJob]
315
+ def empty?: () -> bool
311
316
  def remove: (Integer) -> PeriodicJob?
312
317
  def remove_by_id: (untyped) -> bool
313
318
  end
@@ -316,6 +321,15 @@ module River
316
321
  class Interrupted < StandardError
317
322
  end
318
323
 
324
+ class JobTiming
325
+ attr_accessor finished_monotonic: Float
326
+ attr_reader queue_wait_duration: Float
327
+ attr_reader started_at: Time
328
+ attr_reader started_monotonic: Float
329
+
330
+ def initialize: (Time, Float, Time) -> void
331
+ end
332
+
319
333
  @client: Client
320
334
  @condition: ConditionVariable
321
335
  @config: Config
@@ -356,8 +370,9 @@ module River
356
370
  def check_remote_cancellations: (String) -> untyped
357
371
  def error_handler_cancel?: (Exception, Job) -> bool
358
372
  def execute: (JobRow) -> untyped
359
- def finish_failed: (JobRow, Job, Exception, Time, ?cancelled: bool, ?worker: untyped) -> untyped
360
- def finish_snoozed: (JobRow, Job, JobSnoozeError, Time) -> untyped
373
+ def finish_failed: (JobRow, Job, Exception, JobTiming, ?cancelled: bool, ?worker: untyped) -> untyped
374
+ def finish_interrupted: (JobRow, Job, JobTiming) -> untyped
375
+ def finish_snoozed: (JobRow, Job, JobSnoozeError, JobTiming) -> untyped
361
376
  def finish_work: (Integer) -> untyped
362
377
  def invoke_plugins: (Symbol, *untyped) -> Array[untyped]
363
378
  def invoke_worker: (untyped, Job) -> untyped
@@ -365,12 +380,15 @@ module River
365
380
  def maintenance_loop: () -> untyped
366
381
  def monotonic_now: () -> Float
367
382
  def next_retry: (JobRow, Exception, Time, ?worker: untyped) -> Time
383
+ def next_snooze_count: (untyped) -> Integer
368
384
  def retry_allowed?: (untyped, Job, Exception) -> untyped
369
385
  def perform_work: (untyped, Job) -> untyped
386
+ def periodic_jobs_changed: () -> untyped
370
387
  def producer_loop: (String, QueueConfig) -> untyped
371
- def publish: (Symbol, JobRow, Time) -> untyped
388
+ def publish: (Symbol, JobRow, JobTiming) -> untyped
372
389
  def queue_stopping?: (String) -> bool
373
390
  def remove_subscription: (Subscription) -> Subscription?
391
+ def rescue_job?: (JobRow, Time) -> bool
374
392
  def resolve_worker: (String) -> untyped
375
393
  def run_periodic: (Time) -> untyped
376
394
  def running_count: (String) -> Integer
@@ -378,5 +396,7 @@ module River
378
396
  def start_producer: (String, QueueConfig) -> untyped
379
397
  def stopping?: () -> bool
380
398
  def wait: (Float | Integer) -> untyped
399
+ def wait_for_running_jobs: (String, Float | Integer) -> untyped
400
+ def worker_timeout: (untyped, Job) -> Float?
381
401
  end
382
402
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riverqueue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Gentry
@@ -100,7 +100,9 @@ extra_rdoc_files: []
100
100
  files:
101
101
  - CHANGELOG.md
102
102
  - LICENSE
103
+ - README.md
103
104
  - docs/README.md
105
+ - docs/conformance.md
104
106
  - docs/migrations.md
105
107
  - docs/testing.md
106
108
  - docs/workers.md
@@ -183,10 +185,10 @@ homepage: https://riverqueue.com
183
185
  licenses:
184
186
  - MPL-2.0
185
187
  metadata:
186
- bug_tracker_uri: https://github.com/riverqueue/riverqueue-ruby/issues
187
- changelog_uri: https://github.com/riverqueue/riverqueue-ruby/blob/master/CHANGELOG.md
188
+ bug_tracker_uri: https://github.com/riverqueue/river/issues
189
+ changelog_uri: https://github.com/riverqueue/river/blob/master/ruby/CHANGELOG.md
188
190
  rubygems_mfa_required: 'true'
189
- source_code_uri: https://github.com/riverqueue/riverqueue-ruby
191
+ source_code_uri: https://github.com/riverqueue/river/tree/master/ruby
190
192
  rdoc_options: []
191
193
  require_paths:
192
194
  - lib