zeus 0.13.0 → 0.13.1

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.
Binary file
Binary file
Binary file
@@ -39,6 +39,7 @@ module Zeus
39
39
 
40
40
  setup_dummy_tty!
41
41
  master = setup_master_socket!
42
+ feature_pipe_r, feature_pipe_w = IO.pipe
42
43
 
43
44
  # I need to give the master a way to talk to me exclusively
44
45
  local, remote = UNIXSocket.pair(Socket::SOCK_STREAM)
@@ -46,6 +47,7 @@ module Zeus
46
47
 
47
48
  # Now I need to tell the master about my PID and ID
48
49
  local.write "P:#{Process.pid}:#{identifier}\0"
50
+ local.send_io(feature_pipe_r)
49
51
 
50
52
  # Now we run the action and report its success/fail status to the master.
51
53
  features = Zeus::LoadTracking.features_loaded_by {
@@ -53,7 +55,7 @@ module Zeus
53
55
  }
54
56
 
55
57
  # the master wants to know about the files that running the action caused us to load.
56
- Thread.new { notify_features(local, features) }
58
+ Thread.new { notify_features(feature_pipe_w, features) }
57
59
 
58
60
  # We are now 'connected'. From this point, we may receive requests to fork.
59
61
  loop do
@@ -81,9 +83,8 @@ module Zeus
81
83
  remote.close
82
84
  sock.close
83
85
 
84
- pid_and_arguments = local.recv(1024)
86
+ pid_and_arguments = local.recv(1024) # if starting client before boot slave is latched, we get stuck here. We also get stuck here in #182.
85
87
  pid_and_arguments.chomp!("\0")
86
- # pid_and_arguments.force_encoding("ASCII-8BIT")
87
88
  pid_and_arguments =~ /(.*?):(.*)/
88
89
  client_pid, arguments = $1.to_i, $2
89
90
  arguments.chomp!("\0")
@@ -123,21 +124,16 @@ module Zeus
123
124
  Process.kill(0, client_pid)
124
125
  rescue Errno::ESRCH
125
126
  Process.kill(9, command_pid)
127
+ exit 0
126
128
  end
127
129
  sleep 1
128
130
  }
129
131
  }
130
132
  end
131
133
 
132
- def notify_features(sock, features)
134
+ def notify_features(pipe, features)
133
135
  features.each do |t|
134
- begin
135
- sock.write "F:#{t}\0"
136
- sock.flush
137
- rescue Errno::ENOBUFS
138
- sleep 0.2
139
- retry
140
- end
136
+ pipe.puts t
141
137
  end
142
138
  end
143
139
 
@@ -221,8 +221,15 @@ module Zeus
221
221
  end
222
222
 
223
223
  def reconnect_activerecord
224
- ActiveRecord::Base.clear_all_connections! rescue nil
225
- ActiveRecord::Base.establish_connection rescue nil
224
+ return unless defined?(ActiveRecord::Base)
225
+ begin
226
+ ActiveRecord::Base.clear_all_connections!
227
+ ActiveRecord::Base.establish_connection
228
+ if ActiveRecord::Base.respond_to?(:shared_connection)
229
+ ActiveRecord::Base.shared_connection = ActiveRecord::Base.retrieve_connection
230
+ end
231
+ rescue ActiveRecord::AdapterNotSpecified
232
+ end
226
233
  end
227
234
 
228
235
  def reconnect_redis
@@ -1,3 +1,3 @@
1
1
  module Zeus
2
- VERSION = "0.13.0"
2
+ VERSION = "0.13.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-06 00:00:00.000000000 Z
12
+ date: 2012-12-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec