rest-ftp-daemon 0.210.2 → 0.212.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 37f7d8425d04c02fd6bbf0e29e4aa2e68b4a4a88
4
- data.tar.gz: 55887f0ff182963af1b010bf29529b73b1665d46
3
+ metadata.gz: 53e2cba7fe2218d3f261566678feba235343ca4a
4
+ data.tar.gz: 75c4001a985741740c66165c6b1d73a893d0e43a
5
5
  SHA512:
6
- metadata.gz: 2d654b0cd05e3acb927cf5c2280c5eb0127d7de59fe6fa69b47eab9e6e0d353fa8f4972054402b28fa4bd67aebffa30fa25ff656edee764a9f4e08f2c9df4a1b
7
- data.tar.gz: 2ecd5231f676eb178d8c521a03a53d83a21904a221541371d925d508839b8bf63d5cd019958ba062fd2d97f2fdee4154e7de1fcd5ac7704cf83b5ab02fedbfe9
6
+ metadata.gz: 695516939d86fe5e962458758dfe2ce3aa34b5c80ca8eec9bd3ccc4f893c303f9fac4489eec4368cc0ab469d53c584654573e938ad6b90a37c42795f3c1d85ce
7
+ data.tar.gz: 72cdbba9f002f17faa9e6c0d203c089b89e5eb9a57cc32e892287ebe620e4e4c96f1234fc54ca0087e1cfe733ba7da3290c247c93f1f07cf1d1ec269f7ee6361
data/Gemfile.lock CHANGED
@@ -1,13 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest-ftp-daemon (0.210.2)
4
+ rest-ftp-daemon (0.212.0)
5
5
  double-bag-ftps
6
6
  facter
7
+ get_process_mem
7
8
  grape
8
9
  grape-entity
9
10
  haml
10
11
  json
12
+ newrelic_rpm
11
13
  settingslogic
12
14
  sys-cpu
13
15
  thin (~> 1.6)
@@ -39,6 +41,7 @@ GEM
39
41
  facter (2.4.1)
40
42
  CFPropertyList (~> 2.2.6)
41
43
  ffi (1.9.8)
44
+ get_process_mem (0.2.0)
42
45
  grape (0.11.0)
43
46
  activesupport
44
47
  builder
@@ -61,6 +64,7 @@ GEM
61
64
  minitest (5.5.1)
62
65
  multi_json (1.11.0)
63
66
  multi_xml (0.5.5)
67
+ newrelic_rpm (3.11.1.284)
64
68
  rack (1.6.0)
65
69
  rack-accept (0.4.5)
66
70
  rack (>= 0.4)
data/bin/rest-ftp-daemon CHANGED
@@ -6,9 +6,10 @@ begin
6
6
  require "thin"
7
7
  require 'optparse'
8
8
  require 'socket'
9
- require 'timeout'
9
+ # require 'timeout'
10
+ require "settingslogic"
10
11
  rescue LoadError
11
- raise "EXITING: some of basic libs were not found: thin, optparse, socket, timeout"
12
+ raise "EXITING: some of basic libs were not found: thin, optparse, socket, settingslogic"
12
13
  end
13
14
 
14
15
 
@@ -50,17 +51,26 @@ else
50
51
  end
51
52
 
52
53
 
53
- # Build configuration file path from options
54
+ # Load config, and merge options from ARGV into settings
54
55
  APP_CONF ||= File.expand_path "/etc/#{APP_NAME}.yml"
55
56
  abort "EXITING: cannot read configuration file: #{APP_CONF}" unless File.exists? APP_CONF
56
-
57
-
58
- # Load config, and merge options from ARGV into settings
59
57
  begin
58
+ # Import settings
60
59
  require File.expand_path("#{app_root}/lib/rest-ftp-daemon/settings")
60
+
61
+ # Set defaults
62
+ Settings.init_defaults
63
+
64
+ # Overwrite with commandline options
61
65
  Settings.merge!(options)
66
+
67
+ # Init NewRelic
68
+ Settings.init_newrelic
69
+
62
70
  rescue Psych::SyntaxError => e
63
71
  abort "EXITING: config file syntax error: #{e.message}"
72
+ rescue Exception => e
73
+ abort "EXITING: unknow error loading settings #{e.inspect}"
64
74
  end
65
75
 
66
76
 
@@ -84,30 +94,28 @@ argv << ["--log", Settings.at(:logs, :thin)]
84
94
  argv << ["--daemonize"] if [1, true].include? Settings.daemonize
85
95
 
86
96
 
87
- # ARGV: logging
97
+ # ARGV: logging, user and group, command
88
98
  if (logfile = Settings.at :logs, :thin)
89
99
  argv << ["--log", logfile] if logfile
90
100
  end
91
-
92
- # ARGV: user and group
93
101
  if Settings.user && Settings.group
94
102
  argv << ["--user", Settings.user]
95
103
  argv << ["--group", Settings.group]
96
104
  end
97
-
98
-
99
- # ARGV: add command
100
105
  argv << command unless command.nil?
101
106
 
107
+
102
108
  # Display final configuration
103
109
  puts "--- #{APP_NAME} #{APP_VER}"
104
110
  puts "Config file \t #{APP_CONF}"
105
111
  puts "PID file \t #{Settings.pidfile}"
106
- puts "Daemonize \t #{Settings.daemonize ? 'YES' : "no"}"
112
+ puts "Daemonize \t #{Settings.daemonize ? 'YES' : "no (PID: #{Process.pid})"}"
113
+ puts "Host \t #{Settings.host}"
107
114
  puts "Namespace \t #{Settings.namespace}"
108
115
  puts "Network port \t #{Settings.port}"
109
116
  puts "User:group \t #{Settings.user}:#{Settings.group}" if (Settings.user || Settings.group)
110
- puts Settings.dump
117
+ puts "Newrelic \t #{Settings.newrelic_enabled? ? Settings.newrelic.inspect : "no"}"
118
+ # puts Settings.dump
111
119
  puts
112
120
  puts "--- Thin ARGV"
113
121
  puts argv.flatten.join(' ')
@@ -139,11 +147,11 @@ rescue SystemExit
139
147
  begin
140
148
  Process.kill(0, pid)
141
149
  puts "Process ##{pid} is running"
142
- rescue Errno::EPERM # changed uid
143
- puts "No permission to query process ##{pid}!";
150
+ rescue Errno::EPERM # changed uid
151
+ puts "No permission to query process ##{pid}!";
144
152
  rescue Errno::ESRCH
145
- puts "Process ##{pid} is NOT running."; # or zombied
153
+ puts "Process ##{pid} is NOT running."; # or zombied
146
154
  rescue
147
- puts "Unable to determine status for ##{pid}: #{$!}"
155
+ puts "Unable to determine status for ##{pid}: #{$!}"
148
156
  end
149
157
  end
data/config.ru CHANGED
@@ -19,6 +19,9 @@ unless Settings.adminpwd.nil?
19
19
  end
20
20
  end
21
21
 
22
+ # NewRelic profiling
23
+ GC::Profiler.enable if Settings.newrelic_enabled?
24
+
22
25
  # Serve static assets
23
26
  use Rack::Static, :urls => ["/css", "/images"], :root => "#{APP_LIBS}/static/"
24
27
 
@@ -4,7 +4,7 @@ module RestFtpDaemon
4
4
 
5
5
  ####### GET /debug
6
6
 
7
- get '/debug' do
7
+ get '/raise' do
8
8
  info "GET /debug"
9
9
  begin
10
10
  raise RestFtpDaemon::DummyException
@@ -20,6 +20,25 @@ module RestFtpDaemon
20
20
  end
21
21
  end
22
22
 
23
+ # get '/memsize' do
24
+ # info "GET /memsize"
25
+ # ObjectSpace.each_object do |e|
26
+ # #puts
27
+ # print ObjectSpace.memsize_of(e)
28
+ # print "\t"
29
+ # print e.class.to_s
30
+ # print "\t"
31
+ # puts e.inspect[0..80]
32
+ # # puts ({
33
+ # # klass: e.class,
34
+ # # size: ObjectSpace.memsize_of(e),
35
+ # # }.inspect)
36
+ # # puts
37
+ # end
38
+ # status 200
39
+ # []
40
+ # end
41
+
23
42
  end
24
43
  end
25
44
  end
@@ -8,18 +8,22 @@ module RestFtpDaemon
8
8
  # Server global status
9
9
  get '/status' do
10
10
  info "GET /status"
11
+ mem = GetProcessMem.new
12
+
11
13
  status 200
12
14
  return {
13
15
  hostname: `hostname`.chomp,
14
16
  version: APP_VER,
15
- config: Helpers.get_censored_config,
16
17
  started: APP_STARTED,
17
18
  uptime: (Time.now - APP_STARTED).round(1),
18
19
  counters: $queue.counters,
20
+ memory_bytes: mem.bytes.to_i,
21
+ memory_mb: mem.mb.round(0),
19
22
  status: $queue.counts_by_status,
20
23
  workers: $pool.worker_variables,
21
24
  jobs_count: $queue.jobs_count,
22
- jobs_queued: $queue.queued_ids
25
+ jobs_queued: $queue.queued_ids,
26
+ config: Helpers.get_censored_config,
23
27
  #routes: RestFtpDaemon::API::Root::routes,
24
28
  }
25
29
  end
@@ -1,6 +1,7 @@
1
1
  # Terrific constants
2
2
  APP_NAME = "rest-ftp-daemon"
3
- APP_VER = "0.210.2"
3
+ APP_NICK = "rftpd"
4
+ APP_VER = "0.212.0"
4
5
 
5
6
 
6
7
  # Jobs and workers
@@ -1,6 +1,10 @@
1
1
  module RestFtpDaemon
2
2
  class Job
3
3
 
4
+ if Settings.newrelic_enabled?
5
+ include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
6
+ end
7
+
4
8
  FIELDS = [:source, :target, :label, :priority, :notify, :overwrite, :mkdir, :tempfile]
5
9
 
6
10
  attr_accessor :wid
@@ -20,7 +24,6 @@ module RestFtpDaemon
20
24
  attr_reader name
21
25
  end
22
26
 
23
-
24
27
  def initialize job_id, params={}
25
28
  # Call super
26
29
  # super()
@@ -134,7 +137,7 @@ module RestFtpDaemon
134
137
  rescue Errno::ECONNREFUSED => exception
135
138
  return oops :ended, exception, :conn_refused
136
139
 
137
- rescue Timeout::Error, Errno::ETIMEDOUT => exception
140
+ rescue Timeout::Error, Errno::ETIMEDOUT, Net::ReadTimeout => exception
138
141
  return oops :ended, exception, :conn_timed_out
139
142
 
140
143
  rescue OpenSSL::SSL::SSLError => exception
@@ -144,7 +147,7 @@ module RestFtpDaemon
144
147
  return oops :ended, exception, :ftp_perm_error
145
148
 
146
149
  rescue Net::FTPTempError => exception
147
- return oops :ended, exception, :ftp_temp_error
150
+ return oops :ended, exception, :net_temp_error
148
151
 
149
152
  rescue Errno::EMFILE => exception
150
153
  return oops :ended, exception, :too_many_open_files
@@ -197,6 +200,11 @@ module RestFtpDaemon
197
200
  @weight = [@priority.to_i, -@queued_at.to_i]
198
201
  end
199
202
 
203
+ def exectime
204
+ return nil if (@started_at.nil? || @finished_at.nil?)
205
+ (@finished_at - @started_at).round(2)
206
+ end
207
+
200
208
  def set_queued
201
209
  # Update job status
202
210
  newstatus JOB_STATUS_QUEUED
@@ -217,11 +225,6 @@ module RestFtpDaemon
217
225
  (Time.now - @queued_at).round(2)
218
226
  end
219
227
 
220
- def exectime
221
- return nil if (@started_at.nil? || @finished_at.nil?)
222
- (@finished_at - @started_at).round(2)
223
- end
224
-
225
228
  def set attribute, value
226
229
  @mutex.synchronize do
227
230
  @params || {}
@@ -713,5 +716,9 @@ module RestFtpDaemon
713
716
  client_notify event, error: error, status: notif_status
714
717
  end
715
718
 
719
+ if Settings.newrelic_enabled?
720
+ add_transaction_tracer :process, :category => :task
721
+ end
722
+
716
723
  end
717
724
  end
@@ -9,6 +9,10 @@ module RestFtpDaemon
9
9
  attr_reader :queue
10
10
  attr_reader :jobs
11
11
 
12
+ if Settings.newrelic_enabled?
13
+ include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
14
+ end
15
+
12
16
  def initialize
13
17
  # Instance variables
14
18
  @queue = []
@@ -154,7 +158,7 @@ module RestFtpDaemon
154
158
  alias << push
155
159
  alias enq push
156
160
 
157
- def pop(non_block=false)
161
+ def pop non_block=false
158
162
  @mutex.synchronize do
159
163
  while true
160
164
  if @queue.empty?
@@ -163,10 +167,6 @@ module RestFtpDaemon
163
167
  @waiting.push Thread.current
164
168
  @mutex.sleep
165
169
  else
166
- # Refresh queue order
167
- # sort_queue!
168
-
169
- # Extract the heaviest item in the queue
170
170
  return @queue.pop
171
171
  end
172
172
  end
@@ -261,5 +261,10 @@ module RestFtpDaemon
261
261
  origin: self.class.to_s
262
262
  end
263
263
 
264
+ if Settings.newrelic_enabled?
265
+ add_transaction_tracer :push, :category => :task
266
+ add_transaction_tracer :pop, :category => :task
267
+ end
268
+
264
269
  end
265
270
  end
@@ -1,10 +1,3 @@
1
- # Try to load Settingslogic
2
- begin
3
- require "settingslogic"
4
- rescue LoadError
5
- raise "warning: Settingslogic is needed to provide configuration values to the Gemspec file"
6
- end
7
-
8
1
  # Configuration class
9
2
  class Settings < Settingslogic
10
3
  # Read configuration
@@ -27,4 +20,31 @@ class Settings < Settingslogic
27
20
  self.to_hash.to_yaml( :Indent => 4, :UseHeader => true, :UseVersion => false )
28
21
  end
29
22
 
23
+ def init_defaults
24
+ Settings['host'] ||= `hostname`.chomp.split('.').first
25
+ end
26
+
27
+ def newrelic_enabled?
28
+ Settings.newrelic.is_a?(Hash) && Settings.at(:newrelic, :license)
29
+ end
30
+
31
+ def init_newrelic
32
+ # Skip if not enabled
33
+ return ENV['NEWRELIC_AGENT_ENABLED'] = 'false' unless Settings.newrelic_enabled?
34
+
35
+ # Enable module
36
+ ENV['NEWRELIC_AGENT_ENABLED'] = 'true'
37
+ ENV['NEW_RELIC_MONITOR_MODE'] = 'true'
38
+ #Settings['newrelic']['enabled'] = true
39
+
40
+ # License
41
+ ENV['NEW_RELIC_LICENSE_KEY'] = Settings.at(:newrelic, :license)
42
+
43
+ # Appname
44
+ ENV['NEW_RELIC_APP_NAME'] = Settings.at(:newrelic, :appname) || "#{APP_NICK}-#{Settings.host}-#{APP_ENV}"
45
+
46
+ # Logfile
47
+ ENV['NEW_RELIC_LOG'] = Settings.at(:logs, :newrelic)
48
+ end
49
+
30
50
  end
@@ -2,33 +2,38 @@
2
2
  - info_procs = (Facter.value :processorcount).to_i
3
3
  - info_load = Sys::CPU.load_avg.first.to_f
4
4
  - info_norm = info_procs.zero? ? "N/A" : (100 * info_load / info_procs).round(1)
5
+ - info_processed = $queue.counter_get(:jobs_processed)
6
+ - mem = GetProcessMem.new
5
7
 
6
8
 
7
9
  .btn-group.btn-group-sm
8
- .btn.btn-default.btn-success CPUs
9
- .btn.btn-default= info_procs
10
+ .btn.btn-default.btn-success Host
11
+ .btn.btn-default= Settings.host
10
12
 
11
13
  .btn-group.btn-group-sm
12
14
  .btn.btn-default.btn-success IP
13
15
  .btn.btn-default= Facter.value(:ipaddress)
14
16
 
15
17
  .btn-group.btn-group-sm
16
- .btn.btn-default.btn-success Host
17
- .btn.btn-default= Settings.host
18
+ .btn.btn-default.btn-success Cores
19
+ .btn.btn-default= info_procs
18
20
 
19
21
  .btn-group.btn-group-sm
20
- .btn.btn-default.btn-info Load
22
+ .btn.btn-default.btn-warning Load
21
23
  .btn.btn-default= info_load.round(1)
22
24
 
23
25
  .btn-group.btn-group-sm
24
- .btn.btn-default.btn-info CPU
26
+ .btn.btn-default.btn-warning CPU
25
27
  .btn.btn-default= "#{info_norm} %"
26
28
 
27
29
  .btn-group.btn-group-sm
28
- .btn.btn-default.btn-info Free
29
- .btn.btn-default= Facter.value(:memoryfree)
30
+ .btn.btn-default.btn-warning Mem
31
+ .btn.btn-default= Helpers.format_bytes(mem.bytes, "B")
32
+
33
+ .btn-group.btn-group-sm
34
+ .btn.btn-default.btn-info Processed
35
+ .btn.btn-default= Helpers.format_bytes(info_processed)
30
36
 
31
37
  .btn-group.btn-group-sm
32
38
  .btn.btn-default.btn-info Transferred
33
39
  .btn.btn-default= Helpers.format_bytes(trans, "B")
34
-
@@ -26,8 +26,8 @@
26
26
  %th <=>
27
27
  %th target
28
28
  %th queued
29
- %th{width: 220} status
30
- %th{width: 150} error
29
+ %th{width: 150} status
30
+ %th{"min-width" => 120} error
31
31
  %th.text-right size
32
32
  %th.text-right bitrate
33
33
  %th info
@@ -1,13 +1,10 @@
1
1
  - jobs.each do |job|
2
- - size = job.get :transfer_total
3
- - sent = job.get :transfer_sent
4
2
  - progress = job.get :progress
5
3
  - source_count = job.get(:source_count) || 0
6
4
  - source_processed = job.get(:source_processed) || 0
7
5
  - source_current = job.get(:source_current)
8
6
  - presented = present job, :with => RestFtpDaemon::API::Entities::JobPresenter, hide_params: true
9
- - errmsg = job.get :error_message
10
- - method = job.get(:target_method)
7
+ - bitrate = job.get :transfer_bitrate
11
8
 
12
9
  - trclass = JOB_STYLES[job.status]
13
10
 
@@ -25,7 +22,7 @@
25
22
  = Helpers.highlight_tokens job.source
26
23
 
27
24
  %td
28
- = Helpers.job_method_label method
25
+ = Helpers.job_method_label (job.get :target_method)
29
26
 
30
27
  %td{title: job.get(:target_url)}
31
28
  = Helpers.highlight_tokens job.target
@@ -45,28 +42,26 @@
45
42
  - unless progress.nil?
46
43
  %span.push-progress
47
44
  = "#{progress}%"
48
-
49
45
  %br
50
- %b
51
- %span.push-filename
52
- = source_current unless source_current.nil?
46
+ %span.push-filename
47
+ %b= source_current unless source_current.nil?
53
48
 
54
49
  %td
55
50
  - unless job.error || job.status == JOB_STATUS_FINISHED
56
51
  .progress
57
52
  .progress-bar{style:"width: #{progress}%;"}
58
53
  =# "#{progress}%" unless progress.nil?
59
- = Helpers.format_bytes(sent, "B")
54
+ = Helpers.format_bytes(job.get(:transfer_sent), "B")
60
55
 
61
56
  - else
62
- .error{title: errmsg}
57
+ .error{title: job.get(:error_message)}
63
58
  = Helpers.text_or_empty(job.error)
64
59
 
65
60
  %td.nobr.text-right
66
- = Helpers.format_bytes(size, "B")
61
+ = Helpers.format_bytes(job.get(:transfer_total), "B")
67
62
 
68
- %td.nobr.text-right
69
- - if (bitrate = job.get :transfer_bitrate)
63
+ %td.nobr.text-right{title: "time: #{job.exectime} s"}
64
+ - if bitrate
70
65
  %span.push-bitrate
71
66
  = Helpers.format_bytes(bitrate, "bps")
72
67
 
@@ -76,3 +71,5 @@
76
71
 
77
72
  - unless job.wid.nil?
78
73
  .label.label-warning.flag.worker-label= job.wid
74
+
75
+
@@ -3,6 +3,10 @@ module RestFtpDaemon
3
3
 
4
4
  attr_reader :wid
5
5
 
6
+ if Settings.newrelic_enabled?
7
+ include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
8
+ end
9
+
6
10
  def initialize number_threads
7
11
  # Logger
8
12
  @logger = RestFtpDaemon::LoggerPool.instance.get :workers
@@ -37,7 +41,6 @@ module RestFtpDaemon
37
41
  @workers[wid] && @workers[wid].alive?
38
42
  end
39
43
 
40
-
41
44
  private
42
45
 
43
46
  def create_worker_threads n
@@ -55,17 +58,22 @@ module RestFtpDaemon
55
58
 
56
59
  def create_worker_thread wid
57
60
  Thread.new wid do
58
-
59
61
  # Set thread context
60
62
  Thread.current.thread_variable_set :wid, wid
61
63
  Thread.current.thread_variable_set :started_at, Time.now
64
+ worker_status :starting
62
65
 
63
66
  # Start working
64
- worker_status :starting
65
67
  loop do
66
- work
68
+ begin
69
+ work
70
+ rescue Exception => ex
71
+ puts "WORKER UNEXPECTED CRASH: #{ex.message}", lines: ex.backtrace
72
+ sleep 1
73
+ end
67
74
  end
68
75
 
76
+ # We should never get here
69
77
  end
70
78
  end
71
79
 
@@ -102,7 +110,7 @@ module RestFtpDaemon
102
110
  sleep 1
103
111
 
104
112
  rescue Exception => ex
105
- info "[#{job.id}] UNHDNALED EXCEPTION: #{ex.message}", lines: ex.backtrace
113
+ info "UNHDNALED EXCEPTION: #{ex.message}", lines: ex.backtrace
106
114
  worker_status :crashed
107
115
  job.oops_after_crash ex unless job.nil?
108
116
  sleep 1
@@ -136,5 +144,10 @@ module RestFtpDaemon
136
144
  Thread.current.thread_variable_set :updted_at, Time.now
137
145
  end
138
146
 
147
+ if Settings.newrelic_enabled?
148
+ add_transaction_tracer :create_worker_thread, :category => :task
149
+ add_transaction_tracer :work, :category => :task
150
+ end
151
+
139
152
  end
140
153
  end
@@ -1,5 +1,6 @@
1
1
  # Global libs
2
2
  require 'rubygems'
3
+ require "settingslogic"
3
4
  require 'json'
4
5
  require 'grape'
5
6
  require 'grape-entity'
@@ -14,6 +15,8 @@ require 'net/ftp'
14
15
  require 'net/http'
15
16
  require 'double_bag_ftps'
16
17
 
18
+ require 'newrelic_rpm'
19
+ require 'get_process_mem'
17
20
 
18
21
  # Project's libs
19
22
  require 'rest-ftp-daemon/constants'
@@ -1,6 +1,7 @@
1
1
  # coding: utf-8
2
2
 
3
3
  # Libs
4
+ require "settingslogic"
4
5
  app_root = File.dirname(__FILE__)
5
6
  require File.expand_path("#{app_root}/lib/rest-ftp-daemon/constants")
6
7
 
@@ -36,4 +37,7 @@ Gem::Specification.new do |spec|
36
37
  spec.add_runtime_dependency "facter"
37
38
  spec.add_runtime_dependency "sys-cpu"
38
39
  spec.add_runtime_dependency "timeout"
40
+ spec.add_runtime_dependency "get_process_mem"
41
+
42
+ spec.add_runtime_dependency "newrelic_rpm"
39
43
  end
@@ -15,12 +15,15 @@ defaults: &defaults
15
15
  overwrite: false
16
16
  timeout: 1800
17
17
 
18
+ # newrelic:
19
+ # appname: rftpd-testing
20
+ # license: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
18
21
 
19
22
  conchita:
20
23
  timer: 10
21
- #clean_failed: 3600
22
- #clean_finished: 3600
23
- #clean_queued: 86400
24
+ # clean_failed: 3600
25
+ # clean_finished: 3600
26
+ # clean_queued: 86400
24
27
 
25
28
  debug:
26
29
  ftp: false
@@ -32,6 +35,7 @@ defaults: &defaults
32
35
  workers: "/var/log/rftpd-environment-work.log"
33
36
  jobs: "/var/log/rftpd-environment-work.log"
34
37
  notify: "/var/log/rftpd-environment-work.log"
38
+ newrelic:"/var/log/rftpd-environment-newrelic.log"
35
39
 
36
40
  preprod:
37
41
  <<: *defaults
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.210.2
4
+ version: 0.212.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: 2015-03-25 00:00:00.000000000 Z
11
+ date: 2015-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -178,6 +178,34 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: get_process_mem
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: newrelic_rpm
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
181
209
  description: This is a pretty simple FTP client daemon, controlled through a RESTful
182
210
  API
183
211
  email: rest-ftp-daemon@bmconseil.com