mogilefsd_log_tailer 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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