switchman 1.5.18 → 1.5.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/switchman/shard_internal.rb +23 -10
- data/lib/switchman/active_record/query_cache.rb +1 -1
- data/lib/switchman/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65bb936a3b1c3df9044c0c8429a6e7b01b0bafb3
|
4
|
+
data.tar.gz: a1e4e5e2c846e10fd95f1916a175b5327e4429d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d7888becfe60dd1e14255cfca4c3492268ea4048133819a2aa40de66c696b0dd6c4965c66eb82bb68603346afdc43b3f5b8ee636da2ff36a58db7bd0628a52c
|
7
|
+
data.tar.gz: bf563c2246872f3afb630f93e08906b55f8e6e7f63a92cd0c765cd87a1fb21120634b375a011fa5b29793c293400ccc96bca83d4796025d15d6985ccc138825f
|
@@ -249,14 +249,20 @@ module Switchman
|
|
249
249
|
end
|
250
250
|
end
|
251
251
|
|
252
|
+
# only one process; don't bother forking
|
253
|
+
if scopes.length == 1 && parallel == 1
|
254
|
+
return with_each_shard(subscopes.first, categories, options) { yield }
|
255
|
+
end
|
256
|
+
|
257
|
+
# clear connections prior to forking (no more queries will be executed in the parent,
|
258
|
+
# and we want them gone so that we don't accidentally use them post-fork doing something
|
259
|
+
# silly like dealloc'ing prepared statements)
|
260
|
+
::ActiveRecord::Base.clear_all_connections!
|
261
|
+
|
252
262
|
scopes.each do |server, subscopes|
|
253
263
|
if !(::ActiveRecord::Relation === subscopes.first) && subscopes.first.class != Array
|
254
264
|
subscopes = [subscopes]
|
255
265
|
end
|
256
|
-
# only one process; don't bother forking
|
257
|
-
if scopes.length == 1 && subscopes.length == 1
|
258
|
-
return with_each_shard(subscopes.first, categories, options) { yield }
|
259
|
-
end
|
260
266
|
|
261
267
|
subscopes.each_with_index do |subscope, idx|
|
262
268
|
if subscopes.length > 1
|
@@ -269,13 +275,23 @@ module Switchman
|
|
269
275
|
exception_pipes << exception_pipe
|
270
276
|
pid, io_in, io_out, io_err = Open4.pfork4(lambda do
|
271
277
|
begin
|
272
|
-
::ActiveRecord::Base.clear_all_connections!
|
273
278
|
Switchman.config[:on_fork_proc].try(:call)
|
274
279
|
$0 = [$0, ARGV, name].flatten.join(' ')
|
275
280
|
with_each_shard(subscope, categories, options) { yield }
|
276
281
|
exception_pipe.last.close
|
277
|
-
rescue
|
278
|
-
|
282
|
+
rescue => e
|
283
|
+
begin
|
284
|
+
dumped = Marshal.dump(e)
|
285
|
+
rescue
|
286
|
+
# couldn't dump the exception; create a copy with just
|
287
|
+
# the message and the backtrace
|
288
|
+
e2 = e.class.new(e.message)
|
289
|
+
e2.set_backtrace(e.backtrace)
|
290
|
+
e2.instance_variable_set(:@active_shards, e.instance_variable_get(:@active_shards))
|
291
|
+
dumped = Marshal.dump(e2)
|
292
|
+
end
|
293
|
+
exception_pipe.last.set_encoding(dumped.encoding)
|
294
|
+
exception_pipe.last.write(dumped)
|
279
295
|
exception_pipe.last.flush
|
280
296
|
exception_pipe.last.close
|
281
297
|
exit! 1
|
@@ -311,9 +327,6 @@ module Switchman
|
|
311
327
|
errors << pid_to_name_map[pid] if status.exitstatus != 0
|
312
328
|
end
|
313
329
|
|
314
|
-
# I'm not sure why, but we have to do this
|
315
|
-
::ActiveRecord::Base.clear_all_connections!
|
316
|
-
|
317
330
|
# check for an exception; we only re-raise the first one
|
318
331
|
exception_pipes.each do |exception_pipe|
|
319
332
|
begin
|
@@ -52,7 +52,7 @@ module Switchman
|
|
52
52
|
arel, binds = binds_from_relation(arel, binds)
|
53
53
|
sql = to_sql(arel, binds)
|
54
54
|
if ::Rails.version >= '5'
|
55
|
-
cache_sql(sql, binds) { super(sql, name, binds, preparable:
|
55
|
+
cache_sql(sql, binds) { super(sql, name, binds, preparable: preparable) }
|
56
56
|
else
|
57
57
|
cache_sql(sql, binds) { super(sql, name, binds) }
|
58
58
|
end
|
data/lib/switchman/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switchman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-08-
|
13
|
+
date: 2016-08-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|