uninterruptible 2.5.1 → 2.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da483ac5cd1a38088938f5958340b313dfde952d
4
- data.tar.gz: 1da163a7b7055f10c6bcf0814c92654dfb0b8780
3
+ metadata.gz: b45204189743c30326bd6e496b3c69c88d4383d5
4
+ data.tar.gz: c8d14b020356d5f68685b2f58833a433868cddb2
5
5
  SHA512:
6
- metadata.gz: 39942f15c0fff227a8f2f818e294467a1c7f4237a334550ba9b9aff802125460e1edd29272aa1fae5849d46a2e6907ca6ee1fde8d29a71de4f829d67eddebbfe
7
- data.tar.gz: f8a57b4b7e10250a19ac07cdce75a8f276fe539cd7d0a191fbf9971760f00f9d63f3c9d14ae133f00bd2a565ecebfe23af57daf49f44c0ce9d02be96d53f8655
6
+ metadata.gz: c89bd5e1d9adadc4b3e31bf9b745f339599d158782d9eb6bd81d1e47c58f0f58d00469cb72566b2730baaf80222b6887acdf0dcdebf6c89c669a4e74624ed126
7
+ data.tar.gz: d78b97f691ed20d40f02730f6e3fcf866e1fb27218b3256187c4aec046819fe7279a0aaed86ba8088dbe0e8fc57b5463c4c7ef7617299fb581fd51de6e04f087
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.5.2
4
+ * Pass a class to UNIXSocket.recv_io to have the C-code instantiate our socket server. If we don't, they have a habit of getting garbage collected resulting in Errno:EBADF exceptions
5
+
3
6
  ## 2.5.1
4
7
  * Fix bug where new restart code didn't work with TLS servers
5
8
  * Add echo server tests for UNIX and TLS servers
@@ -35,7 +35,7 @@ module Uninterruptible
35
35
  # @return [TCPServer] Socket server for the configured address and port
36
36
  def bind_to_tcp_socket
37
37
  if ENV[FILE_DESCRIPTOR_SERVER_VAR]
38
- TCPServer.for_fd(read_file_descriptor_from_fds)
38
+ bind_from_file_descriptor_server(TCPServer)
39
39
  else
40
40
  TCPServer.new(bind_uri.host, bind_uri.port)
41
41
  end
@@ -46,7 +46,7 @@ module Uninterruptible
46
46
  # @return [UNIXServer] Socket server for the configured path
47
47
  def bind_to_unix_socket
48
48
  if ENV[FILE_DESCRIPTOR_SERVER_VAR]
49
- UNIXServer.for_fd(read_file_descriptor_from_fds)
49
+ bind_from_file_descriptor_server(UNIXServer)
50
50
  else
51
51
  File.delete(bind_uri.path) if File.exist?(bind_uri.path)
52
52
  UNIXServer.new(bind_uri.path)
@@ -70,11 +70,15 @@ module Uninterruptible
70
70
 
71
71
  # Open a connection to a running FileDesciptorServer on the parent of this server and obtain a file descriptor
72
72
  # for the running socket server on there.
73
- def read_file_descriptor_from_fds
73
+ #
74
+ # @param socket_klass [#for_fd] Class which responds to for_fd and accepts a file descriptor
75
+ #
76
+ # @return [IO] An IO instance created from the file descriptor received from the file descriptor server
77
+ def bind_from_file_descriptor_server(socket_klass)
74
78
  fds_socket = UNIXSocket.new(ENV[FILE_DESCRIPTOR_SERVER_VAR])
75
- socket_file_descriptor = fds_socket.recv_io
79
+ socket_file_descriptor = fds_socket.recv_io(socket_klass)
76
80
  fds_socket.close
77
- socket_file_descriptor.to_i
81
+ socket_file_descriptor
78
82
  end
79
83
  end
80
84
  end
@@ -1,3 +1,3 @@
1
1
  module Uninterruptible
2
- VERSION = "2.5.1".freeze
2
+ VERSION = "2.5.2".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uninterruptible
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Wentworth