nats 0.4.24 → 0.4.26

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.
data/HISTORY.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # HISTORY
2
2
 
3
+ ## v0.4.26 (July 30, 2012)
4
+ - Syslog support
5
+ - Fixed reconnect bug to authorized servers
6
+ - See full list @ https://github.com/derekcollison/nats/compare/v0.4.24...v0.4.26
7
+
3
8
  ## v0.4.24 (May 24, 2012)
4
9
 
5
10
  - Persist queue groups across reconnects
@@ -8,7 +8,7 @@ require "#{ep}/ext/json"
8
8
 
9
9
  module NATS
10
10
 
11
- VERSION = '0.4.24'.freeze
11
+ VERSION = '0.4.26'.freeze
12
12
 
13
13
  DEFAULT_PORT = 4222
14
14
  DEFAULT_URI = "nats://localhost:#{DEFAULT_PORT}".freeze
@@ -439,7 +439,7 @@ module NATS
439
439
  cs[:pass] = @uri.password
440
440
  end
441
441
  cs[:ssl_required] = @ssl if @ssl
442
- send_command("CONNECT #{cs.to_json}#{CR_LF}")
442
+ send_command("CONNECT #{cs.to_json}#{CR_LF}", true)
443
443
  end
444
444
 
445
445
  def queue_server_rt(&cb) #:nodoc:
@@ -613,9 +613,11 @@ module NATS
613
613
  @reconnect_cb.call unless @reconnect_cb.nil?
614
614
  end
615
615
 
616
- def send_command(command) #:nodoc:
616
+ def send_command(command, priority = false) #:nodoc:
617
617
  EM.next_tick { flush_pending } if (connected? && @pending.nil?)
618
- (@pending ||= []) << command
618
+ @pending ||= []
619
+ @pending << command unless priority
620
+ @pending.unshift(command) if priority
619
621
  @pending_size += command.bytesize
620
622
  flush_pending if (connected? && @pending_size > MAX_PENDING_SIZE)
621
623
  if (@options[:fast_producer_error] && pending_data_size > FAST_PRODUCER_THRESHOLD)
@@ -2,6 +2,7 @@
2
2
  require 'socket'
3
3
  require 'fileutils'
4
4
  require 'pp'
5
+ require 'syslog'
5
6
 
6
7
  ep = File.expand_path(File.dirname(__FILE__))
7
8
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  module NATSD #:nodoc:
3
3
 
4
- VERSION = '0.4.24'
4
+ VERSION = '0.4.26'
5
5
  APP_NAME = 'nats-server'
6
6
 
7
7
  DEFAULT_PORT = 4222
@@ -27,6 +27,7 @@ module NATSD
27
27
 
28
28
  opts.on("-l", "--log FILE", "File to redirect log output") { |file| @options[:log_file] = file }
29
29
  opts.on("-T", "--logtime", "Timestamp log entries (default: false)") { @options[:log_time] = true }
30
+ opts.on("-S", "--syslog IDENT", "Enable Syslog output") { |ident| @options[:syslog] = ident }
30
31
  opts.on("-D", "--debug", "Enable debugging output") { @options[:debug] = true }
31
32
  opts.on("-V", "--trace", "Trace the raw protocol") { @options[:trace] = true }
32
33
 
@@ -77,6 +78,7 @@ module NATSD
77
78
  @options[:pid_file] = config['pid_file'] if @options[:pid_file].nil?
78
79
  @options[:log_file] = config['log_file'] if @options[:log_file].nil?
79
80
  @options[:log_time] = config['logtime'] if @options[:log_time].nil?
81
+ @options[:syslog] = config['syslog'] if @options[:syslog].nil?
80
82
  @options[:debug] = config['debug'] if @options[:debug].nil?
81
83
  @options[:trace] = config['trace'] if @options[:trace].nil?
82
84
 
@@ -116,6 +118,15 @@ module NATSD
116
118
  $stderr.reopen($stdout)
117
119
  end
118
120
 
121
+ def open_syslog
122
+ return unless @options[:syslog]
123
+ Syslog.open("#{@options[:syslog]}", Syslog::LOG_PID, Syslog::LOG_USER ) unless Syslog.opened?
124
+ end
125
+
126
+ def close_syslog
127
+ Syslog.close if @options[:syslog]
128
+ end
129
+
119
130
  def symbolize_users(users)
120
131
  return nil unless users
121
132
  auth_users = []
@@ -145,6 +156,9 @@ module NATSD
145
156
  debug "DEBUG is on"
146
157
  trace "TRACE is on"
147
158
 
159
+ # Syslog
160
+ @syslog = @options[:syslog]
161
+
148
162
  # Authorization
149
163
 
150
164
  # Multi-user setup for auth
@@ -6,7 +6,7 @@ module NATSD #:nodoc: all
6
6
  class Server
7
7
 
8
8
  class << self
9
- attr_reader :id, :info, :log_time, :auth_required, :ssl_required, :debug_flag, :trace_flag, :options
9
+ attr_reader :id, :info, :log_time, :auth_required, :ssl_required, :debug_flag, :trace_flag, :syslog, :options
10
10
  attr_reader :max_payload, :max_pending, :max_control_line, :auth_timeout, :ssl_timeout, :ping_interval, :ping_max
11
11
  attr_accessor :varz, :healthz, :max_connections, :num_connections, :in_msgs, :out_msgs, :in_bytes, :out_bytes
12
12
 
@@ -75,6 +75,7 @@ module NATSD #:nodoc: all
75
75
  end
76
76
 
77
77
  setup_logs
78
+ open_syslog
78
79
 
79
80
  # Setup optimized select versions
80
81
  EM.epoll unless @options[:noepoll]
@@ -5,17 +5,26 @@ def fast_uuid #:nodoc:
5
5
  "%04x%04x%04x%04x%04x%06x" % v
6
6
  end
7
7
 
8
+ def syslog(args, priority) #:nodoc:
9
+ Syslog::log(priority, '%s', PP::pp(args.compact, '', 120))
10
+ end
11
+
8
12
  def log(*args) #:nodoc:
13
+ return syslog(args, Syslog::LOG_NOTICE) if NATSD::Server.syslog
9
14
  args.unshift(Time.now) if NATSD::Server.log_time
10
15
  PP::pp(args.compact, $stdout, 120)
11
16
  end
12
17
 
13
18
  def debug(*args) #:nodoc:
14
- log(*args) if NATSD::Server.debug_flag?
19
+ return unless NATSD::Server.debug_flag?
20
+ return syslog(args, Syslog::LOG_INFO) if NATSD::Server.syslog
21
+ log(*args)
15
22
  end
16
23
 
17
24
  def trace(*args) #:nodoc:
18
- log(*args) if NATSD::Server.trace_flag?
25
+ return unless NATSD::Server.trace_flag?
26
+ return syslog(args, Syslog::LOG_DEBUG) if NATSD::Server.syslog
27
+ log(*args)
19
28
  end
20
29
 
21
30
  def log_error(e=$!) #:nodoc:
@@ -56,6 +65,7 @@ end
56
65
  def shutdown #:nodoc:
57
66
  puts
58
67
  log 'Server exiting..'
68
+ NATSD::Server.close_syslog
59
69
  EM.stop
60
70
  if NATSD::Server.pid_file
61
71
  FileUtils.rm(NATSD::Server.pid_file) if File.exists? NATSD::Server.pid_file
@@ -19,7 +19,7 @@ spec = Gem::Specification.new do |s|
19
19
  s.add_dependency('eventmachine', '>= 0.12.10')
20
20
  s.add_dependency('json_pure', '>= 1.7.3')
21
21
  s.add_dependency('daemons', '>= 1.1.5')
22
- s.add_dependency('thin', '>= 1.3.1')
22
+ s.add_dependency('thin', '>= 1.4.1')
23
23
 
24
24
  s.require_paths = ['lib']
25
25
  s.bindir = 'bin'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.24
4
+ version: 0.4.26
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-25 00:00:00.000000000 Z
12
+ date: 2012-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &70102540108020 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.12.10
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70102540108020
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.12.10
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: json_pure
27
- requirement: &70102540107180 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 1.7.3
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70102540107180
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.7.3
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: daemons
38
- requirement: &70102540106400 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,18 +53,28 @@ dependencies:
43
53
  version: 1.1.5
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70102540106400
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.5
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: thin
49
- requirement: &70102540257660 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
53
68
  - !ruby/object:Gem::Version
54
- version: 1.3.1
69
+ version: 1.4.1
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70102540257660
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.4.1
58
78
  description: A lightweight cloud messaging system.
59
79
  email:
60
80
  - derek.collison@gmail.com
@@ -112,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
132
  version: '0'
113
133
  requirements: []
114
134
  rubyforge_project:
115
- rubygems_version: 1.8.10
135
+ rubygems_version: 1.8.24
116
136
  signing_key:
117
137
  specification_version: 3
118
138
  summary: A lightweight cloud messaging system.