dalli-elasticache 2.0.1 → 2.0.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 +4 -4
- data/lib/dalli/elasticache/auto_discovery/base_command.rb +16 -10
- data/lib/dalli/elasticache/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c0afff12dcbecd681d00446e7a792cb82f356f28e02bfaac78a1962180e7973e
|
|
4
|
+
data.tar.gz: 2918dfeefec59bf0c663c15ecc2d981a1b16a51d8b653d2df710290f379945f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0acf68cd09b9bf0bda5e1e77a4c8aff7925edf1e1a51e26adf8773e7a86df0e69fdf9d285d6ee965b24648d0feeb6406cb9bfca6a1187f7ffb652ab117b275fc
|
|
7
|
+
data.tar.gz: 05702c86d429beea0759bde3682068986b7b0da1f54c55155e3b9ce2f228e95d9b979c8c8ffdf8a35e1a2b752a3e3523624aa8940454f073fd2c6cb79311f1b5
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'openssl'
|
|
4
|
+
require 'timeout'
|
|
4
5
|
|
|
5
6
|
module Dalli
|
|
6
7
|
module Elasticache
|
|
@@ -33,21 +34,32 @@ module Dalli
|
|
|
33
34
|
end
|
|
34
35
|
end
|
|
35
36
|
|
|
37
|
+
# `timeout` bounds the entire multi-line read as a single wall-clock deadline,
|
|
38
|
+
# not each individual `readline`. A per-line readiness check (e.g. `wait_readable`)
|
|
39
|
+
# can't tell buffered-but-unread bytes apart from an empty socket once a buffering
|
|
40
|
+
# layer (Ruby's IO buffer, or OpenSSL::Buffering for TLS) sits between the fd and
|
|
41
|
+
# `readline`, so it can't be used to gate individual lines reliably.
|
|
36
42
|
def response_from_socket(socket)
|
|
43
|
+
return read_lines(socket) unless timeout
|
|
44
|
+
|
|
45
|
+
Timeout.timeout(timeout, Timeout::Error, "Auto discovery read timed out after #{timeout}s") do
|
|
46
|
+
read_lines(socket)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def read_lines(socket)
|
|
37
53
|
data = +''
|
|
38
54
|
loop do
|
|
39
|
-
wait_for_data(socket)
|
|
40
55
|
line = socket.readline
|
|
41
56
|
break if line.include?('END')
|
|
42
57
|
|
|
43
58
|
data << line
|
|
44
59
|
end
|
|
45
|
-
|
|
46
60
|
data
|
|
47
61
|
end
|
|
48
62
|
|
|
49
|
-
private
|
|
50
|
-
|
|
51
63
|
def wrap_with_ssl(tcp_socket)
|
|
52
64
|
ssl_socket = OpenSSL::SSL::SSLSocket.new(tcp_socket, ssl_context)
|
|
53
65
|
ssl_socket.hostname = @host
|
|
@@ -55,12 +67,6 @@ module Dalli
|
|
|
55
67
|
ssl_socket.connect
|
|
56
68
|
ssl_socket
|
|
57
69
|
end
|
|
58
|
-
|
|
59
|
-
def wait_for_data(socket)
|
|
60
|
-
return unless timeout
|
|
61
|
-
|
|
62
|
-
raise Timeout::Error, "Auto discovery read timed out after #{timeout}s" unless socket.wait_readable(timeout)
|
|
63
|
-
end
|
|
64
70
|
end
|
|
65
71
|
end
|
|
66
72
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dalli-elasticache
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aaron Suggs
|
|
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
69
69
|
- !ruby/object:Gem::Version
|
|
70
70
|
version: 1.3.5
|
|
71
71
|
requirements: []
|
|
72
|
-
rubygems_version: 4.0.
|
|
72
|
+
rubygems_version: 4.0.18
|
|
73
73
|
specification_version: 4
|
|
74
74
|
summary: Configure Dalli clients with ElastiCache's AutoDiscovery
|
|
75
75
|
test_files: []
|