rest-ftp-daemon 0.434.0 → 0.435.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 591f494a7bf660ee944096abcb623bc0d771157a
4
- data.tar.gz: 34f150dc4b22573c0cbc948788adee9618f82599
3
+ metadata.gz: 7c055c5d41a1ed721a1a3ff65bb7b27b9c3aee74
4
+ data.tar.gz: 84ef017d71bbf52321f3956a0303a5ccee879a80
5
5
  SHA512:
6
- metadata.gz: 087935f7b3179f7033f233e3344d98e26e6ad00e8e192722991409cc2d86f320857d7a87272d70812c6a34144e4f9b668b36b2a16f624fb2c00011478d7f914f
7
- data.tar.gz: 58807f103079e56eb17b679b6d5d29552aea8d30d417c7b9b2dc0a46237b23bf1b4c9d3191a5a906a872ab36798ad698f6d1d2259f5031d15363eecc3ac3cd90
6
+ metadata.gz: ee3b4ab65e21ca786a9d41766c71a783216765ad8651d579e6c1c46763432977a349516df998d5e448358737401f481f13fdfe41c31f54a62bbbedcde1a38acc
7
+ data.tar.gz: cd89a20b329a1172279ef5873489dfdf86dd23f4b25a39b4840ea4b52a5b08bc2a016aaced357eb2281e8e71ef7f1fed5bacb2fbbc1055b1ae07528f3784b0bf
data/.gitignore CHANGED
@@ -7,3 +7,4 @@ log/
7
7
  DOC/
8
8
  rest-ftp-daemon.yml
9
9
  .ruby-version
10
+ /.idea
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest-ftp-daemon (0.434.0)
4
+ rest-ftp-daemon (0.435.0)
5
5
  activesupport (~> 4.2)
6
6
  api-auth
7
7
  aws-sdk-resources (~> 2)
8
- bmc-daemon-lib (~> 0.3.18)
8
+ bmc-daemon-lib (~> 0.4.1)
9
9
  double-bag-ftps
10
10
  facter
11
11
  get_process_mem
@@ -37,16 +37,16 @@ GEM
37
37
  addressable (2.4.0)
38
38
  api-auth (2.0.1)
39
39
  ast (2.3.0)
40
- aws-sdk-core (2.6.1)
40
+ aws-sdk-core (2.6.2)
41
41
  jmespath (~> 1.0)
42
- aws-sdk-resources (2.6.1)
43
- aws-sdk-core (= 2.6.1)
42
+ aws-sdk-resources (2.6.2)
43
+ aws-sdk-core (= 2.6.2)
44
44
  axiom-types (0.1.1)
45
45
  descendants_tracker (~> 0.0.4)
46
46
  ice_nine (~> 0.11.0)
47
47
  thread_safe (~> 0.3, >= 0.3.1)
48
- bmc-daemon-lib (0.3.18)
49
- chamber (~> 2.9)
48
+ bmc-daemon-lib (0.4.1)
49
+ chamber (~> 2.9.1)
50
50
  builder (3.2.2)
51
51
  chamber (2.9.1)
52
52
  hashie (~> 3.3)
@@ -119,7 +119,7 @@ GEM
119
119
  net-ssh (3.2.0)
120
120
  netrc (0.11.0)
121
121
  newrelic_rpm (3.16.2.321)
122
- parser (2.3.1.3)
122
+ parser (2.3.1.4)
123
123
  ast (~> 2.2)
124
124
  powerpack (0.1.1)
125
125
  pry (0.10.4)
@@ -130,7 +130,7 @@ GEM
130
130
  rack-accept (0.4.5)
131
131
  rack (>= 0.4)
132
132
  rainbow (2.1.0)
133
- rake (11.2.2)
133
+ rake (11.3.0)
134
134
  representable (3.0.0)
135
135
  declarative (~> 0.0.5)
136
136
  uber (~> 0.0.15)
@@ -138,7 +138,7 @@ GEM
138
138
  http-cookie (>= 1.0.2, < 2.0)
139
139
  mime-types (>= 1.16, < 3.0)
140
140
  netrc (~> 0.7)
141
- rollbar (2.13.0)
141
+ rollbar (2.13.1)
142
142
  multi_json
143
143
  rspec (3.5.0)
144
144
  rspec-core (~> 3.5.0)
@@ -4,6 +4,14 @@ module RestFtpDaemon
4
4
  module API
5
5
  class Config < Grape::API
6
6
 
7
+ ### HELPERS
8
+ helpers do
9
+ def log_context
10
+ {caller: "API::Config"}
11
+ end
12
+ end
13
+
14
+
7
15
  ### ENDPOINTS
8
16
  desc "Show daemon config"
9
17
  get "/" do
@@ -6,11 +6,15 @@ require "grape"
6
6
 
7
7
  module RestFtpDaemon
8
8
  module API
9
- class Dashbaord < Grape::API
9
+ class Dashboard < Grape::API
10
10
  include BmcDaemonLib
11
11
 
12
12
  ### HELPERS
13
13
  helpers do
14
+ def log_context
15
+ {caller: "API::Dashboard"}
16
+ end
17
+
14
18
  def render name, values={}
15
19
  # Prepare template engine
16
20
  template = File.read("#{Conf.app_libs}/views/#{name}.haml")
@@ -7,6 +7,9 @@ module RestFtpDaemon
7
7
 
8
8
  ### HELPERS
9
9
  helpers do
10
+ def log_context
11
+ {caller: "API::Debug"}
12
+ end
10
13
 
11
14
  def debug_metrics
12
15
  Metrics.sample
@@ -5,6 +5,13 @@ module RestFtpDaemon
5
5
  class Jobs < Grape::API
6
6
  include BmcDaemonLib
7
7
 
8
+ ### HELPERS
9
+ helpers do
10
+ def log_context
11
+ {caller: "API::Jobs"}
12
+ end
13
+ end
14
+
8
15
  ### EXCEPTIONS HANDLERS
9
16
  rescue_from RestFtpDaemon::JobNotFound do |exception|
10
17
  exception_error :api_job_not_found, 404, exception
@@ -7,16 +7,22 @@ module RestFtpDaemon
7
7
  module API
8
8
  class Root < Grape::API
9
9
  include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
10
- include BmcDaemonLib
10
+ #include BmcDaemonLib
11
+ include BmcDaemonLib::LoggerHelper
12
+
11
13
 
12
14
  ### LOGGING & HELPERS
15
+ logger BmcDaemonLib::LoggerPool.instance.get :api
13
16
  helpers RestFtpDaemon::CommonHelpers
14
17
  helpers RestFtpDaemon::ApiHelpers
15
18
  helpers BmcDaemonLib::LoggerHelper
16
19
 
17
20
  helpers do
18
- def log_prefix
19
- ['API', nil, nil]
21
+
22
+ include BmcDaemonLib::LoggerHelper
23
+
24
+ def log_context
25
+ {caller: "API::Root"}
20
26
  end
21
27
 
22
28
  def logger
@@ -28,7 +34,7 @@ module RestFtpDaemon
28
34
  lines = exception.message.lines.collect(&:strip).reject(&:empty?)
29
35
 
30
36
  # Log error to file
31
- log_error "#{http_code} [#{error}] #{lines.shift} ", lines
37
+ log_error "[#{error}] [#{http_code}] #{lines.shift} ", lines
32
38
 
33
39
  # Return error
34
40
  error!({
@@ -48,14 +54,14 @@ module RestFtpDaemon
48
54
 
49
55
  ## EXCEPTION HANDLERS
50
56
  rescue_from :all do |exception|
51
- Rollbar.error exception, "api [#{error}]: #{exception.class.name}: #{exception.message}"
57
+ Rollbar.error exception, "api: #{exception.class.name}: #{exception.message}"
58
+ # Rollbar.error exception, "api [#{error}]: #{exception.class.name}: #{exception.message}"
52
59
  #error!({error: :internal_server_error, message: exception.message}, 500)
53
- exception_error :api_unexpected_error, 500, exception
60
+ exception_error :api_error, 500, exception
54
61
  end
55
62
 
56
63
 
57
64
  ### CLASS CONFIG
58
- logger BmcDaemonLib::LoggerPool.instance.get :api
59
65
  do_not_route_head!
60
66
  do_not_route_options!
61
67
  # version 'v1'
@@ -66,20 +72,15 @@ module RestFtpDaemon
66
72
  default_format :json
67
73
 
68
74
  # Pretty JSON
69
- formatter :json_tmp, ->(object, env) do
70
- put "----- formatter"
71
- puts object.inspect
72
- # JSON.pretty_generate(JSON.parse(object.to_json))
73
- #if object.respond_to? to_hash
74
- JSON.pretty_generate(object)
75
- #end
76
- put "-----"
77
- end
75
+ # formatter :json_tmp, ->(object, env) do
76
+ # puts object.inspect
77
+ # JSON.pretty_generate(object)
78
+ # end
78
79
 
79
80
  ### MOUNTPOINTS
80
81
  mount RestFtpDaemon::API::Status => MOUNT_STATUS
81
82
  mount RestFtpDaemon::API::Jobs => MOUNT_JOBS
82
- mount RestFtpDaemon::API::Dashbaord => MOUNT_BOARD
83
+ mount RestFtpDaemon::API::Dashboard => MOUNT_BOARD
83
84
  mount RestFtpDaemon::API::Config => MOUNT_CONFIG
84
85
  mount RestFtpDaemon::API::Debug => MOUNT_DEBUG
85
86
 
@@ -6,6 +6,13 @@ module RestFtpDaemon
6
6
  class Status < Grape::API
7
7
  include BmcDaemonLib
8
8
 
9
+ ### HELPERS
10
+ helpers do
11
+ def log_context
12
+ {caller: "API::Status"}
13
+ end
14
+ end
15
+
9
16
  ### ENDPOINTS
10
17
  desc "Show daemon status"
11
18
  get "/" do
@@ -16,8 +16,6 @@ JOB_FFMPEG_ATTRIBUTES = [:video_codec, :video_bitrate, :video_bitrate_toleranc
16
16
 
17
17
  # Internal job infos
18
18
  INFO_PARAMS = :params
19
-
20
-
21
19
  INFO_ERROR_MESSAGE = :error_message
22
20
  INFO_ERROR_EXCEPTION = :error_exception
23
21
  INFO_ERROR_BACKTRACE = :error_backtrace
@@ -31,22 +29,17 @@ INFO_TRANFER_PROGRESS = :progress
31
29
  INFO_TRANFER_BITRATE = :bitrate
32
30
  INFO_TARGET_FILES = :target_files
33
31
 
34
-
35
32
  # Constants: logger
36
- LOG_FORMAT_PROGNAME = "%d\t%s"
37
- LOG_HEADER_TIME = "%Y-%m-%d %H:%M:%S"
38
- LOG_HEADER_FORMAT = "%s \t%d\t%-8s %-10s "
39
- LOG_MESSAGE_TRIM = 200
40
- LOG_MESSAGE_TEXT = "%s%s"
41
- LOG_MESSAGE_ARRAY = "%s - %s"
42
- LOG_MESSAGE_HASH = "%s * %-20s %s"
43
-
44
-
45
- # Constants: logger app-specific prefix
46
- LOG_PREFIX_WID = 8
47
- LOG_PREFIX_JID = JOB_IDENT_LEN + 4
48
- LOG_PREFIX_ID = 5
49
- LOG_PREFIX_FORMAT = "%#{-LOG_PREFIX_WID.to_i}s %#{-LOG_PREFIX_JID.to_i}s %#{-LOG_PREFIX_ID.to_i}s "
33
+ LOGGER_FORMAT = {
34
+ # context: "%#{-LOG_PREFIX_WID.to_i}s %#{-LOG_PREFIX_JID.to_i}s %#{-LOG_PREFIX_ID.to_i}s ",
35
+ # context: "wid:%-8{wid} jid:%-12{jid} id:%-5{id}",
36
+ context: {
37
+ caller: "%-17s",
38
+ wid: "%-10s",
39
+ jid: "%-10s",
40
+ id: "%-8s",
41
+ }
42
+ }
50
43
 
51
44
 
52
45
  # Constants: logger to be cleaned up
@@ -7,12 +7,11 @@ require "securerandom"
7
7
 
8
8
  module RestFtpDaemon
9
9
  class Job
10
+ include BmcDaemonLib::LoggerHelper
10
11
  include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
11
12
  include CommonHelpers
12
13
 
13
14
  # Logging
14
- attr_reader :logger
15
- include BmcDaemonLib::LoggerHelper
16
15
 
17
16
  # Fields to be imported from params
18
17
  IMPORTED = %w(type priority pool label priority source target overwrite notify mkdir tempfile video_options video_custom)
@@ -59,18 +58,16 @@ module RestFtpDaemon
59
58
  @status = nil
60
59
  @tentatives = 0
61
60
  @wid = nil
62
-
63
- # Update timestamps
64
61
  @created_at = Time.now
65
62
 
63
+ # Logger # FIXME: should be :jobs
64
+ log_pipe :transfer
65
+
66
66
  # Prepare configuration
67
67
  @config = Conf[:transfer] || {}
68
68
  @endpoints = Conf[:endpoints] || {}
69
69
  @pools = Conf[:pools] || {}
70
70
 
71
- # Logger
72
- @logger = BmcDaemonLib::LoggerPool.instance.get :transfer
73
-
74
71
  # Import query params
75
72
  set_info INFO_PARAMS, params
76
73
  IMPORTED.each do |field|
@@ -83,11 +80,16 @@ module RestFtpDaemon
83
80
  # Prepare sources/target
84
81
  raise RestFtpDaemon::JobAttributeMissing, "source" unless params[:source]
85
82
  @source_loc = Location.new(params[:source])
86
- log_info "Job.initialize source #{@source_loc.uri}"
87
83
 
88
84
  raise RestFtpDaemon::JobAttributeMissing, "target" unless params[:target]
89
85
  @target_loc = Location.new(params[:target])
90
- log_info "Job.initialize target #{@target_loc.uri}"
86
+
87
+ # We're done!
88
+ log_info "Job.initialized", {
89
+ source: @source_loc.uri,
90
+ target: @target_loc.uri,
91
+ pool: @pool,
92
+ }
91
93
  end
92
94
 
93
95
  def reset
@@ -220,8 +222,12 @@ module RestFtpDaemon
220
222
 
221
223
  private
222
224
 
223
- def log_prefix
224
- [@wid, @id, nil]
225
+ def log_context
226
+ {
227
+ wid: @wid,
228
+ jid: @id,
229
+ #id: @id,
230
+ }
225
231
  end
226
232
 
227
233
  def touch_job
@@ -309,7 +315,7 @@ module RestFtpDaemon
309
315
  end
310
316
 
311
317
  # Log to Rollbar
312
- Rollbar.warning e, "oops [#{error}]: #{exception.class.name}: #{exception.message}"
318
+ Rollbar.warning exception, "oops [#{error}]: #{exception.class.name}: #{exception.message}"
313
319
 
314
320
  # Close ftp connexion if open
315
321
  @remote.close unless @remote.nil? || !@remote.connected?
@@ -4,13 +4,11 @@ require 'singleton'
4
4
  module RestFtpDaemon
5
5
  class JobQueue
6
6
  include Singleton
7
-
8
7
  include BmcDaemonLib::LoggerHelper
9
8
  include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
10
9
  include CommonHelpers
11
10
 
12
11
  # Class options
13
- attr_reader :logger
14
12
  attr_reader :jobs
15
13
 
16
14
  def initialize
@@ -28,10 +26,10 @@ module RestFtpDaemon
28
26
  @mutex = Mutex.new
29
27
 
30
28
  # Logger
31
- @logger = BmcDaemonLib::LoggerPool.instance.get :queue
29
+ log_pipe :queue
32
30
 
33
31
  # Identifiers generator
34
- @prefix = identifier JOB_IDENT_LEN
32
+ @prefix = identifier(JOB_IDENT_LEN)
35
33
  log_info "JobQueue initialized (prefix: #{@prefix})"
36
34
  end
37
35
 
@@ -259,10 +257,6 @@ module RestFtpDaemon
259
257
 
260
258
  protected
261
259
 
262
- def log_prefix
263
- [nil, nil, nil]
264
- end
265
-
266
260
  def prefixed_id id
267
261
  "#{@prefix}.#{id}"
268
262
  end
@@ -22,16 +22,16 @@ module RestFtpDaemon
22
22
  case target_uri
23
23
  when URI::FTP
24
24
  log_info "JobTransfer.do_before target_method FTP"
25
- @remote = Remote::RemoteFTP.new @target_loc, log_prefix, @config[:debug_ftp]
25
+ @remote = Remote::RemoteFTP.new @target_loc, log_context, @config[:debug_ftp]
26
26
  when URI::FTPES, URI::FTPS
27
27
  log_info "JobTransfer.do_before target_method FTPES/FTPS"
28
- @remote = Remote::RemoteFTP.new @target_loc, log_prefix, @config[:debug_ftps], :ftpes
28
+ @remote = Remote::RemoteFTP.new @target_loc, log_context, @config[:debug_ftps], :ftpes
29
29
  when URI::SFTP
30
30
  log_info "JobTransfer.do_before target_method SFTP"
31
- @remote = Remote::RemoteSFTP.new @target_loc, log_prefix, @config[:debug_sftp]
31
+ @remote = Remote::RemoteSFTP.new @target_loc, log_context, @config[:debug_sftp]
32
32
  when URI::S3
33
33
  log_info "JobTransfer.do_before target_method S3"
34
- @remote = Remote::RemoteS3.new @target_loc, log_prefix, @config[:debug_s3]
34
+ @remote = Remote::RemoteS3.new @target_loc, log_context, @config[:debug_s3]
35
35
  else
36
36
  message = "unknown scheme [#{@target_loc.scheme}] [#{target_uri.class.name}]"
37
37
  log_info "JobTransfer.do_before #{message}"
@@ -18,10 +18,6 @@ module RestFtpDaemon
18
18
  attr_reader :aws_id
19
19
  attr_reader :aws_secret
20
20
 
21
- # Logging
22
- #attr_reader :logger
23
- #include BmcDaemonLib::LoggerHelper
24
-
25
21
  # def_delegators :@uri,
26
22
  delegate :scheme, :host, :port, :user, :password, :to_s,
27
23
  to: :uri
@@ -8,7 +8,6 @@ module RestFtpDaemon
8
8
  include CommonHelpers
9
9
 
10
10
  # Class options
11
- attr_reader :logger
12
11
  attr_accessor :job_id
13
12
  attr_accessor :signal
14
13
  attr_accessor :error
@@ -27,7 +26,7 @@ module RestFtpDaemon
27
26
  @jid = nil
28
27
 
29
28
  # Logger
30
- @logger = BmcDaemonLib::LoggerPool.instance.get :notify
29
+ log_pipe :notify
31
30
 
32
31
  # Handle the notification
33
32
  log_info "initialized [#{@url}]"
@@ -104,8 +103,11 @@ module RestFtpDaemon
104
103
  log_error "UNHANDLED EXCEPTION: #{e.message}", e.backtrace
105
104
  end
106
105
 
107
- def log_prefix
108
- [nil, @jid, @id]
106
+ def log_context
107
+ {
108
+ jid: @jid,
109
+ id: @id,
110
+ }
109
111
  end
110
112
 
111
113
  end
@@ -5,14 +5,13 @@ module RestFtpDaemon
5
5
  include BmcDaemonLib::LoggerHelper
6
6
 
7
7
  # Class options
8
- attr_reader :logger
9
8
  attr_reader :log_prefix
10
9
  attr_accessor :job
11
10
 
12
11
  # Delegate set_info info to Job
13
12
  delegate :set_info, to: :job
14
13
 
15
- def initialize target, log_prefix, debug = false, ftpes = false
14
+ def initialize target, context, debug = false, ftpes = false
16
15
  # Init
17
16
  @target = target
18
17
  @ftpes = ftpes
@@ -22,8 +21,8 @@ module RestFtpDaemon
22
21
  @job = Job.new(nil, {})
23
22
 
24
23
  # Logger
25
- @log_prefix = log_prefix || {}
26
- @logger = BmcDaemonLib::LoggerPool.instance.get :transfer
24
+ @context = context || {}
25
+ log_pipe :transfer
27
26
 
28
27
  # Annnounce object
29
28
  log_info "RemoteBase.initialize debug[#{debug}] target[#{target.path}] "
@@ -61,6 +60,12 @@ module RestFtpDaemon
61
60
  puts "-------------------- SESSION CLOSING --------------------------"
62
61
  end
63
62
 
63
+ protected
64
+
65
+ def log_context
66
+ @context
67
+ end
68
+
64
69
  private
65
70
 
66
71
  def split_path path
@@ -5,7 +5,7 @@
5
5
 
6
6
  &copy;
7
7
  = "2014-#{Time.now.year}"
8
- %a{href: "http://bmconseil.com/?ref=rftpd-dashbaord", target: TARGET_BLANK} Bruno Medici Consultant
8
+ %a{href: "http://bmconseil.com/?ref=rftpd-dashboard", target: TARGET_BLANK} Bruno Medici Consultant
9
9
 
10
10
  &middot;
11
11
  %a{href: "http://github.com/bmedici/rest-ftp-daemon/", target: TARGET_BLANK} GitHub
@@ -4,17 +4,15 @@ require 'singleton'
4
4
  module RestFtpDaemon
5
5
  class WorkerPool
6
6
  include Singleton
7
-
8
7
  include BmcDaemonLib::LoggerHelper
9
8
  include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
10
9
 
11
10
  # Class options
12
- attr_reader :logger
13
11
  attr_reader :wid
14
12
 
15
13
  def initialize
16
14
  # Logger
17
- @logger = BmcDaemonLib::LoggerPool.instance.get :workers
15
+ log_pipe :workers
18
16
 
19
17
  # Prepare status hash and vars
20
18
  @statuses = {}
@@ -65,12 +63,6 @@ module RestFtpDaemon
65
63
  @workers[wid] && @workers[wid].alive?
66
64
  end
67
65
 
68
- protected
69
-
70
- def log_prefix
71
- [nil, nil, nil]
72
- end
73
-
74
66
  private
75
67
 
76
68
  def thread_variables thread
@@ -10,6 +10,7 @@ module RestFtpDaemon
10
10
  config_section :conchita
11
11
 
12
12
  # Check that everything is OK
13
+ return "conchita disabled" if disabled?(@config[:timer])
13
14
  return "invalid timer" unless @config[:timer].to_i > 0
14
15
  return false
15
16
  end
@@ -13,6 +13,7 @@ module RestFtpDaemon
13
13
  @feature_newrelic = Conf.feature?(:newrelic)
14
14
 
15
15
  # Check that everything is OK
16
+ return "reporter disabled" if disabled?(@config[:timer])
16
17
  return "invalid timer" unless @config[:timer].to_i > 0
17
18
  return false
18
19
  end
@@ -11,6 +11,7 @@ module RestFtpDaemon
11
11
  @endpoints = Conf[:endpoints]
12
12
 
13
13
  # Timeout and retry config
14
+ return "timeout disabled" if disabled?(@config[:timeout])
14
15
  return "invalid timeout" unless @config[:timeout].to_i > 0
15
16
 
16
17
  # Log that
@@ -24,7 +25,7 @@ module RestFtpDaemon
24
25
 
25
26
  def worker_after
26
27
  # Clean worker status
27
- worker_jid nil
28
+ worker_set_jid nil
28
29
  end
29
30
 
30
31
  private
@@ -35,23 +36,24 @@ module RestFtpDaemon
35
36
  job = RestFtpDaemon::JobQueue.instance.pop @pool
36
37
 
37
38
  # Work on this job
38
- work_on_job job
39
+ job_process job
39
40
 
40
41
  # Clean job status
41
42
  job.wid = nil
42
43
  #sleep 1
43
44
 
44
45
  # Handle the retry if needed
45
- handle_job_result job
46
+ job_result job
46
47
  end
47
48
 
48
- def work_on_job job
49
+ def job_process job
49
50
  # Prepare job and worker for processing
50
- worker_jid job.id
51
+ worker_set_jid job.id
51
52
  worker_status WORKER_STATUS_RUNNING, job
52
53
  job.wid = Thread.current.thread_variable_get :wid
53
54
 
54
55
  # Processs this job protected by a timeout
56
+ log_info "job_process: start working"
55
57
  Timeout.timeout(@config[:timeout], RestFtpDaemon::JobTimeout) do
56
58
  job.start
57
59
  end
@@ -60,45 +62,45 @@ module RestFtpDaemon
60
62
  RestFtpDaemon::Counters.instance.increment :jobs, :processed
61
63
 
62
64
  rescue RestFtpDaemon::JobTimeout => ex
63
- log_error "JOB TIMEOUT started_at[#{job.started_at}] started_since[#{job.started_since}] #{ex.message}", ex.backtrace
65
+ log_error "job_process: TIMEOUT: started_at[#{job.started_at}] started_since[#{job.started_since}] #{ex.message}", ex.backtrace
64
66
  worker_status WORKER_STATUS_TIMEOUT, job
65
67
 
66
68
  # Inform the job
67
69
  job.oops_end(:timeout, ex) unless job.nil?
68
70
 
69
71
  rescue RestFtpDaemon::AssertionFailed, RestFtpDaemon::JobAttributeMissing, StandardError => ex
70
- log_error "JOB CRASHED ex[#{ex.class}] #{ex.message}", ex.backtrace
72
+ log_error "job_process: CRASHED: ex[#{ex.class}] #{ex.message}", ex.backtrace
71
73
  worker_status WORKER_STATUS_CRASHED
72
74
 
73
75
  # Inform the job
74
76
  job.oops_end(:crashed, ex) unless job.nil?
75
77
  end
76
78
 
77
- def handle_job_result job
79
+ def job_result job
78
80
  # If job status requires a retry, just restack it
79
81
  if !job.error
80
82
  # Processing successful
81
- log_error "job finished with no error"
83
+ log_info "job_result: finished with success"
82
84
  worker_status WORKER_STATUS_FINISHED, job
83
85
 
84
86
  elsif error_not_eligible(job)
85
- log_error "not retrying [#{job.error}] retry_on not eligible"
87
+ log_error "job_result: not retrying [#{job.error}] retry_on not eligible"
86
88
 
87
89
  elsif error_reached_for(job)
88
- log_error "not retrying [#{job.error}] retry_for reached [#{@config[:retry_for]}s]"
90
+ log_error "job_result: not retrying [#{job.error}] retry_for reached [#{@config[:retry_for]}s]"
89
91
 
90
92
  elsif error_reached_max(job)
91
- log_error "not retrying [#{job.error}] retry_max reached #{tentatives(job)}"
93
+ log_error "job_result: not retrying [#{job.error}] retry_max reached #{tentatives(job)}"
92
94
 
93
95
  else
94
96
  # Delay cannot be negative, and will be 1s minimum
95
97
  retry_after = [@config[:retry_after] || DEFAULT_RETRY_AFTER, 1].max
96
- log_info "retry job [#{job.id}] in [#{retry_after}s] tried #{tentatives(job)}"
98
+ log_info "job_result: retrying job [#{job.id}] in [#{retry_after}s] - tried #{tentatives(job)}"
97
99
 
98
100
  # Wait !
99
101
  worker_status WORKER_STATUS_RETRYING, job
100
102
  sleep retry_after
101
- log_debug "job [#{job.id}] requeued after [#{retry_after}s] delay"
103
+ log_debug "job_result: job [#{job.id}] requeued after [#{retry_after}s] delay"
102
104
 
103
105
  # Now, requeue this job
104
106
  RestFtpDaemon::JobQueue.instance.requeue job
@@ -129,6 +131,11 @@ module RestFtpDaemon
129
131
  return job.tentatives >= @config[:retry_max]
130
132
  end
131
133
 
134
+ def worker_set_jid jid
135
+ Thread.current.thread_variable_set :jid, jid
136
+ Thread.current.thread_variable_set :updated_at, Time.now
137
+ end
138
+
132
139
  def tentatives job
133
140
  "[#{job.tentatives}/#{@config[:retry_max]}]"
134
141
  end
@@ -8,5 +8,19 @@ module RestFtpDaemon
8
8
  add_transaction_tracer :worker_init, category: :task
9
9
  add_transaction_tracer :worker_after, category: :task
10
10
  add_transaction_tracer :worker_process, category: :task
11
+
12
+ protected
13
+
14
+ def log_context
15
+ {
16
+ wid: Thread.current.thread_variable_get(:wid),
17
+ jid: Thread.current.thread_variable_get(:jid),
18
+ }
19
+ end
20
+
21
+ def disabled? value
22
+ value.nil? || value === false || value == 0
23
+ end
24
+
11
25
  end
12
26
  end
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |spec|
3
3
 
4
4
  # Project version
5
- spec.version = "0.434.0"
5
+ spec.version = "0.435.0"
6
6
 
7
7
  # Project description
8
8
  spec.name = "rest-ftp-daemon"
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "ruby-prof"
33
33
 
34
34
  # Runtime dependencies
35
- spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.18"
35
+ spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.4.1"
36
36
  spec.add_runtime_dependency "json", "~> 1.8"
37
37
  spec.add_runtime_dependency "thin", "~> 1.7"
38
38
  spec.add_runtime_dependency "activesupport", "~> 4.2"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-ftp-daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.434.0
4
+ version: 0.435.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno MEDICI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-19 00:00:00.000000000 Z
11
+ date: 2016-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.3.18
117
+ version: 0.4.1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.3.18
124
+ version: 0.4.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: json
127
127
  requirement: !ruby/object:Gem::Requirement