mogilefsd_log_tailer 0.0.2 → 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6ac2358edf4f8ae9b0e8944ba6e4ba18926d2ca4
4
+ data.tar.gz: a97abc1cc84f5ddcb0ebc11dda07e52ccd3d7d51
5
+ SHA512:
6
+ metadata.gz: 7f05d4b54a77db3116a41755b0b4b9835e3e1eeaf4844748471116dc97f5d5f1835acd418c2e45c03f6cd87d1f4a795f3f3506bba5d1a6f9fa5885f5304c6729
7
+ data.tar.gz: 1170e69666135d4c0b1f86a95cc0ade2b7d25b39d2e8e51ae05a6a148b97432a2f8e81036b34fe0d8f2524d4b29cab5bcc724790488a4efe2353d424540919d5
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ mlt
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1
@@ -1,21 +1,35 @@
1
1
  require 'eventmachine'
2
+ require 'socket'
2
3
 
3
4
  module MogilefsdLogTailer
4
5
  class TailHandler < EventMachine::Connection
5
- def initialize(hostname, filename)
6
+ def initialize(hostname, port, file)
6
7
  @hostname = hostname
8
+ @port = port.to_i
7
9
  @received_data = ''
8
-
9
- if filename.nil? || filename.empty?
10
- @file = $stdout
11
- else
12
- @file = File.open(filename, 'wb')
13
- end
10
+ @file = file
11
+ @reconnect_wait = 1
14
12
  end
15
13
 
16
14
  def post_init
17
15
  @received_data = ''
16
+ # pn = get_peername
17
+ # if pn.nil?
18
+ # @port, @ip = [ "unknown", -1 ]
19
+ # else
20
+ # @port, @ip = Socket.unpack_sockaddr_in(get_peername)
21
+ # end
22
+ rescue
23
+ $stderr.puts "Exception in post_init: %s (%p)\n\t%s" %
24
+ [ $!.message, $!.class, $!.backtrace.join("\n\t") ]
25
+ end
26
+
27
+ def connection_completed
18
28
  send_data("!watch\r\n")
29
+ @reconnect_wait = 1
30
+ rescue
31
+ $stderr.puts "Exception in connection_completed: %s (%p)\n\t%s" %
32
+ [ $!.message, $!.class, $!.backtrace.join("\n\t") ]
19
33
  end
20
34
 
21
35
  def receive_data(data)
@@ -35,6 +49,32 @@ module MogilefsdLogTailer
35
49
  else
36
50
  @received_data << data
37
51
  end
52
+ rescue
53
+ $stderr.puts "Exception in receive_data: %s (%p)\n\t%s" %
54
+ [ $!.message, $!.class, $!.backtrace.join("\n\t") ]
55
+ end
56
+
57
+ def unbind
58
+ print_log_entry "[mogilefsd_log_tailer] Connection closed to #{@hostname}:#{@port}, reconnecting after #{@reconnect_wait} seconds."
59
+ EventMachine::Timer.new(@reconnect_wait) do
60
+ print_log_entry "[mogilefsd_log_tailer] Reconnecting to #{@hostname}:#{@port}..."
61
+ reconnect(@hostname, @port)
62
+ end
63
+
64
+ @reconnect_wait *= 2
65
+ if @reconnect_wait > 120
66
+ @reconnect_wait = 120
67
+ end
68
+
69
+ # print_log_entry "[mogilefsd_log_tailer] Giving up on #{@hostname}:#{@port}"
70
+ # EventMachine::Timer.new(0.5) do
71
+ # if EventMachine.connection_count == 0
72
+ # EventMachine.stop_event_loop
73
+ # end
74
+ # end
75
+ rescue
76
+ $stderr.puts "Exception in unbind: %s (%p)\n\t%s" %
77
+ [ $!.message, $!.class, $!.backtrace.join("\n\t") ]
38
78
  end
39
79
 
40
80
  def print_log_entry(line)
@@ -1,3 +1,3 @@
1
1
  module MogilefsdLogTailer
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -40,24 +40,31 @@ module MogilefsdLogTailer
40
40
  def self.run
41
41
  hosts, options = parse_options!
42
42
 
43
+ log_file = $stdout
43
44
  log_dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
45
+
44
46
  if options[:filename]
45
47
  log_dir = File.dirname(options[:filename])
46
48
  end
47
49
 
48
50
  if options[:daemonize]
49
- Daemons.daemonize(
50
- :app_name => 'mogilefsd_log_tailer',
51
- :dir_mode => :normal,
52
- :dir => log_dir,
53
- :log_output => true
54
- )
51
+ Daemons.daemonize({
52
+ :app_name => 'mogilefsd_tail',
53
+ :dir_mode => :normal,
54
+ :dir => log_dir,
55
+ :log_output => true,
56
+ })
57
+ end
58
+
59
+ if options[:filename]
60
+ log_file = File.open(options[:filename], 'ab')
55
61
  end
56
62
 
57
63
  EventMachine.run do
58
64
  hosts.each do |hp|
59
65
  host, port = hp.split(':')
60
- EventMachine.connect(host, port.to_i, TailHandler, host, options[:filename])
66
+ EventMachine.connect(host, port.to_i,
67
+ TailHandler, host, port.to_i, log_file)
61
68
  end
62
69
  end
63
70
  end
metadata CHANGED
@@ -1,38 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mogilefsd_log_tailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andrew Watts
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-01-19 00:00:00.000000000Z
11
+ date: 2014-10-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: daemons
16
- requirement: &8400940 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *8400940
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: eventmachine
27
- requirement: &8400520 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *8400520
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  description: Script to do "tail -f" on the "!watch" output from several MogileFS trackers.
37
42
  email:
38
43
  - ahwatts@gmail.com
@@ -41,8 +46,9 @@ executables:
41
46
  extensions: []
42
47
  extra_rdoc_files: []
43
48
  files:
44
- - .gitignore
45
- - .rvmrc
49
+ - ".gitignore"
50
+ - ".ruby-gemset"
51
+ - ".ruby-version"
46
52
  - Gemfile
47
53
  - Gemfile.lock
48
54
  - Rakefile
@@ -53,26 +59,25 @@ files:
53
59
  - mogilefsd_log_tailer.gemspec
54
60
  homepage: ''
55
61
  licenses: []
62
+ metadata: {}
56
63
  post_install_message:
57
64
  rdoc_options: []
58
65
  require_paths:
59
66
  - lib
60
67
  required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
68
  requirements:
63
- - - ! '>='
69
+ - - ">="
64
70
  - !ruby/object:Gem::Version
65
71
  version: '0'
66
72
  required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
73
  requirements:
69
- - - ! '>='
74
+ - - ">="
70
75
  - !ruby/object:Gem::Version
71
76
  version: '0'
72
77
  requirements: []
73
78
  rubyforge_project: mogilefsd_log_tailer
74
- rubygems_version: 1.8.6
79
+ rubygems_version: 2.2.2
75
80
  signing_key:
76
- specification_version: 3
81
+ specification_version: 4
77
82
  summary: Script to do "tail -f" on the "!watch" output from several MogileFS trackers.
78
83
  test_files: []
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm 1.9.2@mlt