aws-sdk-rails 3.12.0 → 3.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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/active_job/queue_adapters/amazon_sqs_async_adapter.rb +2 -2
- data/lib/aws/rails/sqs_active_job/executor.rb +29 -16
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43528604142d01e2ddcddf37ae598a08c11744aa3a9ccc6757dbc7d1932d3546
|
4
|
+
data.tar.gz: 7977e087f6372fc8326193dad744f908cda1d2174fc6f817e9cfe48b286a5cfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ceda136ba4f7077b6608787528f2ae97b9ceb3169d9c67f101105e7e512dc8000cdb3bf09e5f96b786544bdb427eb15cc0df6571ecc544f5b1603c51cc034b8
|
7
|
+
data.tar.gz: 1fdb53b5fdc4a752643deb9e360988983ad939cce6ada4a8ce3bc68122959c44c7ca6f98d55987172c4d559d9d010ec652b482576bf12b4e496193b183aa236e
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.13.0
|
@@ -20,13 +20,13 @@ module ActiveJob
|
|
20
20
|
# FIFO jobs must be queued in order, so do not queue async
|
21
21
|
queue_url = Aws::Rails::SqsActiveJob.config.queue_url_for(job.queue_name)
|
22
22
|
if Aws::Rails::SqsActiveJob.fifo?(queue_url)
|
23
|
-
super
|
23
|
+
super
|
24
24
|
else
|
25
25
|
# Serialize is called here because the job’s locale needs to be
|
26
26
|
# determined in this thread and not in some other thread.
|
27
27
|
body = job.serialize
|
28
28
|
Concurrent::Promises
|
29
|
-
.future { super
|
29
|
+
.future { super }
|
30
30
|
.rescue do |e|
|
31
31
|
Rails.logger.error "Failed to queue job #{job}. Reason: #{e}"
|
32
32
|
error_handler = Aws::Rails::SqsActiveJob.config.async_queue_error_handler
|
@@ -9,20 +9,44 @@ module Aws
|
|
9
9
|
class Executor
|
10
10
|
DEFAULTS = {
|
11
11
|
min_threads: 0,
|
12
|
-
max_threads: Concurrent.processor_count,
|
12
|
+
max_threads: Integer(Concurrent.available_processor_count || Concurrent.processor_count),
|
13
13
|
auto_terminate: true,
|
14
14
|
idletime: 60, # 1 minute
|
15
|
-
fallback_policy: :
|
16
|
-
# TODO: Consider catching the exception and sleeping instead of using :caller_runs
|
15
|
+
fallback_policy: :abort # Concurrent::RejectedExecutionError must be handled
|
17
16
|
}.freeze
|
18
17
|
|
19
18
|
def initialize(options = {})
|
20
19
|
@executor = Concurrent::ThreadPoolExecutor.new(DEFAULTS.merge(options))
|
21
20
|
@retry_standard_errors = options[:retry_standard_errors]
|
22
21
|
@logger = options[:logger] || ActiveSupport::Logger.new($stdout)
|
22
|
+
@task_complete = Concurrent::Event.new
|
23
23
|
end
|
24
24
|
|
25
25
|
def execute(message)
|
26
|
+
post_task(message)
|
27
|
+
rescue Concurrent::RejectedExecutionError
|
28
|
+
# no capacity, wait for a task to complete
|
29
|
+
@task_complete.reset
|
30
|
+
@task_complete.wait
|
31
|
+
retry
|
32
|
+
end
|
33
|
+
|
34
|
+
def shutdown(timeout = nil)
|
35
|
+
@executor.shutdown
|
36
|
+
clean_shutdown = @executor.wait_for_termination(timeout)
|
37
|
+
if clean_shutdown
|
38
|
+
@logger.info 'Clean shutdown complete. All executing jobs finished.'
|
39
|
+
else
|
40
|
+
@logger.info "Timeout (#{timeout}) exceeded. Some jobs may not have " \
|
41
|
+
'finished cleanly. Unfinished jobs will not be removed from ' \
|
42
|
+
'the queue and can be ru-run once their visibility timeout ' \
|
43
|
+
'passes.'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def post_task(message)
|
26
50
|
@executor.post(message) do |message|
|
27
51
|
job = JobRunner.new(message)
|
28
52
|
@logger.info("Running job: #{job.id}[#{job.class_name}]")
|
@@ -43,19 +67,8 @@ module Aws
|
|
43
67
|
else
|
44
68
|
message.delete
|
45
69
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
def shutdown(timeout = nil)
|
50
|
-
@executor.shutdown
|
51
|
-
clean_shutdown = @executor.wait_for_termination(timeout)
|
52
|
-
if clean_shutdown
|
53
|
-
@logger.info 'Clean shutdown complete. All executing jobs finished.'
|
54
|
-
else
|
55
|
-
@logger.info "Timeout (#{timeout}) exceeded. Some jobs may not have " \
|
56
|
-
'finished cleanly. Unfinished jobs will not be removed from ' \
|
57
|
-
'the queue and can be ru-run once their visibility timeout ' \
|
58
|
-
'passes.'
|
70
|
+
ensure
|
71
|
+
@task_complete.set
|
59
72
|
end
|
60
73
|
end
|
61
74
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-record
|
@@ -102,16 +102,16 @@ dependencies:
|
|
102
102
|
name: concurrent-ruby
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- - "
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
|
-
version:
|
107
|
+
version: 1.3.1
|
108
108
|
type: :runtime
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- - "
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
114
|
+
version: 1.3.1
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: railties
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
198
|
- !ruby/object:Gem::Version
|
199
199
|
version: '0'
|
200
200
|
requirements: []
|
201
|
-
rubygems_version: 3.
|
201
|
+
rubygems_version: 3.5.5
|
202
202
|
signing_key:
|
203
203
|
specification_version: 4
|
204
204
|
summary: AWS SDK for Ruby on Rails Plugin
|