From e1094e993bd2add49d7f3b72c905cf37700c9023 Mon Sep 17 00:00:00 2001 From: Graham Cooper Date: Mon, 3 Feb 2025 11:59:18 -0500 Subject: [PATCH 1/2] Remove readfull, ruby does nonblocking in C --- lib/dalli/protocol/connection_manager.rb | 2 +- lib/dalli/socket.rb | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/lib/dalli/protocol/connection_manager.rb b/lib/dalli/protocol/connection_manager.rb index b52ecb07..63a6d522 100644 --- a/lib/dalli/protocol/connection_manager.rb +++ b/lib/dalli/protocol/connection_manager.rb @@ -161,7 +161,7 @@ def read_line end def read(count) - @sock.readfull(count) + @sock.read(count) rescue SystemCallError, *TIMEOUT_ERRORS, EOFError => e error_on_request!(e) end diff --git a/lib/dalli/socket.rb b/lib/dalli/socket.rb index 9ba4c034..fed0be14 100644 --- a/lib/dalli/socket.rb +++ b/lib/dalli/socket.rb @@ -15,16 +15,6 @@ module Socket module InstanceMethods WAIT_RCS = %i[wait_writable wait_readable].freeze - def readfull(count) - value = String.new(capacity: count + 1) - loop do - result = read_nonblock(count - value.bytesize, exception: false) - value << result if append_to_buffer?(result) - break if value.bytesize == count - end - value - end - def read_available value = +'' loop do From 59c04ba4d9e9d984a50a4eed0c454494badbbb37 Mon Sep 17 00:00:00 2001 From: Graham Cooper Date: Mon, 3 Feb 2025 12:02:29 -0500 Subject: [PATCH 2/2] Fix rubocop --- lib/dalli/key_manager.rb | 2 +- lib/dalli/protocol/value_compressor.rb | 2 +- lib/dalli/protocol/value_marshaller.rb | 2 +- lib/dalli/protocol/value_serializer.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/dalli/key_manager.rb b/lib/dalli/key_manager.rb index a5fc7123..5e10396c 100644 --- a/lib/dalli/key_manager.rb +++ b/lib/dalli/key_manager.rb @@ -30,7 +30,7 @@ class KeyManager def initialize(client_options) @key_options = - DEFAULTS.merge(client_options.select { |k, _| OPTIONS.include?(k) }) + DEFAULTS.merge(client_options.slice(*OPTIONS)) validate_digest_class_option(@key_options) @namespace = namespace_from_options diff --git a/lib/dalli/protocol/value_compressor.rb b/lib/dalli/protocol/value_compressor.rb index 541ea37e..23d2b3f7 100644 --- a/lib/dalli/protocol/value_compressor.rb +++ b/lib/dalli/protocol/value_compressor.rb @@ -35,7 +35,7 @@ def initialize(client_options) end @compression_options = - DEFAULTS.merge(client_options.select { |k, _| OPTIONS.include?(k) }) + DEFAULTS.merge(client_options.slice(*OPTIONS)) end def store(value, req_options, bitflags) diff --git a/lib/dalli/protocol/value_marshaller.rb b/lib/dalli/protocol/value_marshaller.rb index 85f80247..7fa248e2 100644 --- a/lib/dalli/protocol/value_marshaller.rb +++ b/lib/dalli/protocol/value_marshaller.rb @@ -27,7 +27,7 @@ def initialize(client_options) @value_compressor = ValueCompressor.new(client_options) @marshal_options = - DEFAULTS.merge(client_options.select { |k, _| OPTIONS.include?(k) }) + DEFAULTS.merge(client_options.slice(*OPTIONS)) end def store(key, value, options = nil) diff --git a/lib/dalli/protocol/value_serializer.rb b/lib/dalli/protocol/value_serializer.rb index 7f8f52ae..ac546bde 100644 --- a/lib/dalli/protocol/value_serializer.rb +++ b/lib/dalli/protocol/value_serializer.rb @@ -24,7 +24,7 @@ class ValueSerializer def initialize(protocol_options) @serialization_options = - DEFAULTS.merge(protocol_options.select { |k, _| OPTIONS.include?(k) }) + DEFAULTS.merge(protocol_options.slice(*OPTIONS)) end def store(value, req_options, bitflags)