opener-daemons 2.2.2 → 2.3.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/lib/opener/daemons/daemon.rb +8 -20
- data/lib/opener/daemons/transaction.rb +56 -0
- data/lib/opener/daemons/version.rb +1 -1
- data/lib/opener/daemons/worker.rb +11 -20
- data/lib/opener/daemons.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d343e353902637e8107d0fae767b78ae6f1d5088
|
4
|
+
data.tar.gz: ca6e691a8224d1d8b9fdc10e1fa60b688f4e13c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4e8da4cb952e4168d1e82dcb7c1a50e60558355618919ed33f0384ea8ebfe948701eb369367dde02fab5f1b5c6894a7de0994ed501bba516331e30978eaf228
|
7
|
+
data.tar.gz: c5b0205a179c591d1389c62696aae256e2973a6b446a91f5885aacef2229597384a3d4af095bad50ad01e3bee6e42cb3855dc377828da1b4af920d63788d10a4
|
@@ -75,9 +75,7 @@ module Opener
|
|
75
75
|
# @param [StandardError] error
|
76
76
|
#
|
77
77
|
def error(error)
|
78
|
-
|
79
|
-
|
80
|
-
report_exception(error, params)
|
78
|
+
report_exception(error)
|
81
79
|
end
|
82
80
|
|
83
81
|
##
|
@@ -89,39 +87,29 @@ module Opener
|
|
89
87
|
log_msg = "Finished message #{message.id}"
|
90
88
|
|
91
89
|
Core::Syslog.info(log_msg)
|
90
|
+
|
91
|
+
ensure
|
92
|
+
Transaction.reset_current
|
92
93
|
end
|
93
94
|
|
94
95
|
##
|
95
96
|
# Sends an error to Rollbar.
|
96
97
|
#
|
97
98
|
# @param [StandardError] error
|
98
|
-
# @param [Hash] parameters
|
99
99
|
#
|
100
|
-
def report_exception(error
|
100
|
+
def report_exception(error)
|
101
101
|
if Daemons.rollbar?
|
102
102
|
Rollbar.error(
|
103
103
|
error,
|
104
104
|
:active_threads => Thread.list.count,
|
105
105
|
:ruby_description => RUBY_DESCRIPTION,
|
106
|
-
:parameters => parameters
|
106
|
+
:parameters => Transaction.current.parameters
|
107
107
|
)
|
108
108
|
else
|
109
109
|
raise error
|
110
110
|
end
|
111
|
-
|
112
|
-
|
113
|
-
##
|
114
|
-
# Takes either a regular error or a `Oni::WrappedError` and unwraps it,
|
115
|
-
# returning the original error and the parameters (if any).
|
116
|
-
#
|
117
|
-
# @param [StandardError] error
|
118
|
-
# @return [Array]
|
119
|
-
#
|
120
|
-
def unwrap_error(error)
|
121
|
-
params = error.respond_to?(:parameters) ? error.parameters : {}
|
122
|
-
error = error.original_error if error.respond_to?(:original_error)
|
123
|
-
|
124
|
-
return error, params
|
111
|
+
ensure
|
112
|
+
Transaction.reset_current
|
125
113
|
end
|
126
114
|
end # Daemon
|
127
115
|
end # Daemons
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Opener
|
2
|
+
module Daemons
|
3
|
+
##
|
4
|
+
# Class for storing information of a single transaction in a thread.
|
5
|
+
#
|
6
|
+
# @!attribute [r] parameters
|
7
|
+
# @return [Hash]
|
8
|
+
#
|
9
|
+
class Transaction
|
10
|
+
attr_reader :parameters
|
11
|
+
|
12
|
+
##
|
13
|
+
# The name of the key to store the current transaction in.
|
14
|
+
#
|
15
|
+
# @return [Symbol]
|
16
|
+
#
|
17
|
+
THREAD_KEY = :opener_daemons_transaction
|
18
|
+
|
19
|
+
##
|
20
|
+
# Returns the current transaction.
|
21
|
+
#
|
22
|
+
# @return [Opener::Daemons::Transaction]
|
23
|
+
#
|
24
|
+
def self.current
|
25
|
+
return Thread.current[THREAD_KEY] ||= new
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Removes the current transaction
|
30
|
+
#
|
31
|
+
def self.reset_current
|
32
|
+
Thread.current[THREAD_KEY] = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@parameters = {}
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Merges the given parameters with the existing ones.
|
41
|
+
#
|
42
|
+
# If New Relic is enabled the parameters are also added to the current
|
43
|
+
# New Relic transaction.
|
44
|
+
#
|
45
|
+
# @param [Hash] parameters
|
46
|
+
#
|
47
|
+
def add_parameters(parameters = {})
|
48
|
+
@parameters = @parameters.merge(parameters)
|
49
|
+
|
50
|
+
if Daemons.newrelic?
|
51
|
+
NewRelic::Agent.add_custom_parameters(parameters)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end # Transaction
|
55
|
+
end # Daemons
|
56
|
+
end # Opener
|
@@ -39,11 +39,11 @@ module Opener
|
|
39
39
|
# @raise [Oni::WrappedError]
|
40
40
|
#
|
41
41
|
def process
|
42
|
-
|
42
|
+
add_transaction_attributes
|
43
43
|
|
44
|
-
input
|
45
|
-
output
|
46
|
-
object
|
44
|
+
input = downloader.download(config.input_url)
|
45
|
+
output = config.component_instance.run(input)
|
46
|
+
object = uploader.upload(config.identifier, output, config.metadata)
|
47
47
|
|
48
48
|
Core::Syslog.info(
|
49
49
|
"Wrote output to s3://#{Daemons.output_bucket}/#{object.key}",
|
@@ -51,14 +51,6 @@ module Opener
|
|
51
51
|
)
|
52
52
|
|
53
53
|
submit_callbacks(object)
|
54
|
-
|
55
|
-
rescue Exception => error
|
56
|
-
raise Oni::WrappedError.from(
|
57
|
-
error,
|
58
|
-
:input_url => config.input_url,
|
59
|
-
:callbacks => config.callbacks,
|
60
|
-
:metadata => config.metadata
|
61
|
-
)
|
62
54
|
end
|
63
55
|
|
64
56
|
##
|
@@ -84,14 +76,13 @@ module Opener
|
|
84
76
|
|
85
77
|
private
|
86
78
|
|
87
|
-
def
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
79
|
+
def add_transaction_attributes
|
80
|
+
Transaction.current.add_parameters(
|
81
|
+
:input_url => config.input_url,
|
82
|
+
:identifier => config.identifier,
|
83
|
+
:callbacks => config.callbacks,
|
84
|
+
:metadata => config.metadata
|
85
|
+
)
|
95
86
|
end
|
96
87
|
|
97
88
|
if Daemons.newrelic?
|
data/lib/opener/daemons.rb
CHANGED
@@ -20,6 +20,7 @@ require_relative 'daemons/pidfile'
|
|
20
20
|
require_relative 'daemons/configuration'
|
21
21
|
require_relative 'daemons/downloader'
|
22
22
|
require_relative 'daemons/uploader'
|
23
|
+
require_relative 'daemons/transaction'
|
23
24
|
|
24
25
|
require_relative 'daemons/mapper'
|
25
26
|
require_relative 'daemons/worker'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opener-daemons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wilco van Duinkerken
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-12-
|
12
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
@@ -205,6 +205,7 @@ files:
|
|
205
205
|
- lib/opener/daemons/mapper.rb
|
206
206
|
- lib/opener/daemons/option_parser.rb
|
207
207
|
- lib/opener/daemons/pidfile.rb
|
208
|
+
- lib/opener/daemons/transaction.rb
|
208
209
|
- lib/opener/daemons/uploader.rb
|
209
210
|
- lib/opener/daemons/version.rb
|
210
211
|
- lib/opener/daemons/worker.rb
|