hotswap 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2313b39ed36d4fd0d236192de9c34f9ac7546984f8a076d474f035abddef947
4
- data.tar.gz: a7458d108f6d2051a08c89aa3a8357c3cb72ccb892c7669b69d3deeaf1f5abe3
3
+ metadata.gz: ed51ade37bb88b93a99e766a91cd1148255e6abb36f723977131b9d6419271fd
4
+ data.tar.gz: 5bac1bb9a48fe4c93cf950685a98792c809a4260f7efd9a824e22b3d0d1ca69e
5
5
  SHA512:
6
- metadata.gz: 53ea80ca58d9f342fc04bc51385674ee5b5f8d3dd64a63a18869b5d4fdc81f8ac74c80a6901991d8709d65aeb565d19a5ca3cbeaa19e1a0408ab4ca9ce0dd154
7
- data.tar.gz: dfbb24c4a439443db7e43d19f65b9964c86505eda6479fa6ec4ca75cba93b25cc619a6d845aa6ca16a822bc187c2f53f8cabdbf66d4ffae98dc9e93682324fbb
6
+ metadata.gz: 19f1b83864b37d2099a313bf38d051a93d3d73cf85f5657e74b31664c694937440b6b8076b49369057d0412b1f4e0580aa37b4979ceeb91b41a66ba02294fc62
7
+ data.tar.gz: 33b9108f537b578e5ff1fcf396ff61ba3e23ab23000ed28f1128515c83c05d17fe78f4f4141acd5f63800c64b72d61312bfcfb2d605a20336567df879006a9b5
@@ -37,6 +37,7 @@ module Hotswap
37
37
  stderr.write("Swapping database...\n")
38
38
 
39
39
  Middleware::SWAP_LOCK.synchronize do
40
+ logger.info "swap lock acquired, requests are queued"
40
41
  if defined?(ActiveRecord::Base)
41
42
  ActiveRecord::Base.connection_handler.clear_all_connections!
42
43
  logger.info "disconnected ActiveRecord"
@@ -44,6 +45,7 @@ module Hotswap
44
45
  File.rename(temp.path, @path)
45
46
  logger.info "renamed #{temp.path} → #{@path}"
46
47
  end
48
+ logger.info "swap lock released, requests resuming"
47
49
 
48
50
  if defined?(ActiveRecord::Base)
49
51
  ActiveRecord::Base.establish_connection
@@ -7,7 +7,19 @@ module Hotswap
7
7
  end
8
8
 
9
9
  def call(env)
10
- SWAP_LOCK.synchronize { @app.call(env) }
10
+ if SWAP_LOCK.locked?
11
+ logger.info "request queued, waiting for swap to complete: #{env['REQUEST_METHOD']} #{env['PATH_INFO']}"
12
+ SWAP_LOCK.synchronize do
13
+ logger.info "swap complete, resuming request: #{env['REQUEST_METHOD']} #{env['PATH_INFO']}"
14
+ @app.call(env)
15
+ end
16
+ else
17
+ SWAP_LOCK.synchronize { @app.call(env) }
18
+ end
11
19
  end
20
+
21
+ private
22
+
23
+ def logger = Hotswap.logger
12
24
  end
13
25
  end
@@ -1,3 +1,3 @@
1
1
  module Hotswap
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hotswap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler