dalli 3.2.2 → 3.2.3
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/{History.md → CHANGELOG.md} +10 -1
- data/README.md +1 -1
- data/lib/dalli/key_manager.rb +11 -3
- data/lib/dalli/pipelined_getter.rb +1 -1
- data/lib/dalli/protocol/meta/request_formatter.rb +18 -5
- data/lib/dalli/protocol/meta.rb +1 -0
- data/lib/dalli/protocol/server_config_parser.rb +2 -0
- data/lib/dalli/version.rb +1 -1
- data/lib/rack/session/dalli.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0ef39f4ff4e9e465b2522707f3c4eea85a94373ba0d3de4b9d940830001b118
|
4
|
+
data.tar.gz: 35cb362ec6075818f062106769481e92c90752936ecaf9a00fae25725ee4ea94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c6b2b205551fb10fb2e49ab7c3c3eba3c552c0bc4b8132783b51f6cdc7a9ddd4c272bd24ed13f9d78e29353e3b84daec001b2691ad630bdfd517bb7af86fd54
|
7
|
+
data.tar.gz: 6ef9f6733d8e6d5f8a6bf8fb7d782e99c450494e03d4e5fe46037b77665682df63eaa9a3eb05007d1720b175564c8e91524c0df92d0856dc1f68066501732a06
|
data/{History.md → CHANGELOG.md}
RENAMED
@@ -4,10 +4,19 @@ Dalli Changelog
|
|
4
4
|
Unreleased
|
5
5
|
==========
|
6
6
|
|
7
|
+
3.2.3
|
8
|
+
==========
|
9
|
+
|
10
|
+
- Sanitize CAS inputs to ensure additional commands are not passed to memcached (xhzeem / petergoldstein)
|
11
|
+
- Sanitize input to flush command to ensure additional commands are not passed to memcached (xhzeem / petergoldstein)
|
12
|
+
- Namespaces passed as procs are now evaluated every time, as opposed to just on initialization (nrw505)
|
13
|
+
- Fix missing require of uri in ServerConfigParser (adam12)
|
14
|
+
- Fix link to the CHANGELOG.md file in README.md (rud)
|
15
|
+
|
7
16
|
3.2.2
|
8
17
|
==========
|
9
18
|
|
10
|
-
- Ensure apps are resilient against old session ids
|
19
|
+
- Ensure apps are resilient against old session ids (kbrock)
|
11
20
|
|
12
21
|
3.2.1
|
13
22
|
==========
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ The name is a variant of Salvador Dali for his famous painting [The Persistence
|
|
27
27
|
|
28
28
|
## Contributing
|
29
29
|
|
30
|
-
If you have a fix you wish to provide, please fork the code, fix in your local project and then send a pull request on github. Please ensure that you include a test which verifies your fix and update
|
30
|
+
If you have a fix you wish to provide, please fork the code, fix in your local project and then send a pull request on github. Please ensure that you include a test which verifies your fix and update the [changelog](CHANGELOG.md) with a one sentence description of your fix so you get credit as a contributor.
|
31
31
|
|
32
32
|
## Appreciation
|
33
33
|
|
data/lib/dalli/key_manager.rb
CHANGED
@@ -61,7 +61,7 @@ module Dalli
|
|
61
61
|
def key_with_namespace(key)
|
62
62
|
return key if namespace.nil?
|
63
63
|
|
64
|
-
"#{
|
64
|
+
"#{evaluate_namespace}#{NAMESPACE_SEPARATOR}#{key}"
|
65
65
|
end
|
66
66
|
|
67
67
|
def key_without_namespace(key)
|
@@ -75,6 +75,8 @@ module Dalli
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def namespace_regexp
|
78
|
+
return /\A#{Regexp.escape(evaluate_namespace)}:/ if namespace.is_a?(Proc)
|
79
|
+
|
78
80
|
@namespace_regexp ||= /\A#{Regexp.escape(namespace)}:/.freeze unless namespace.nil?
|
79
81
|
end
|
80
82
|
|
@@ -87,9 +89,15 @@ module Dalli
|
|
87
89
|
def namespace_from_options
|
88
90
|
raw_namespace = @key_options[:namespace]
|
89
91
|
return nil unless raw_namespace
|
90
|
-
return raw_namespace.
|
92
|
+
return raw_namespace.to_s unless raw_namespace.is_a?(Proc)
|
93
|
+
|
94
|
+
raw_namespace
|
95
|
+
end
|
96
|
+
|
97
|
+
def evaluate_namespace
|
98
|
+
return namespace.call.to_s if namespace.is_a?(Proc)
|
91
99
|
|
92
|
-
|
100
|
+
namespace
|
93
101
|
end
|
94
102
|
|
95
103
|
##
|
@@ -167,7 +167,7 @@ module Dalli
|
|
167
167
|
groups = @ring.keys_grouped_by_server(keys)
|
168
168
|
if (unfound_keys = groups.delete(nil))
|
169
169
|
Dalli.logger.debug do
|
170
|
-
"unable to get keys for #{unfound_keys.length} keys "\
|
170
|
+
"unable to get keys for #{unfound_keys.length} keys " \
|
171
171
|
'because no matching server was found'
|
172
172
|
end
|
173
173
|
end
|
@@ -31,7 +31,7 @@ module Dalli
|
|
31
31
|
cmd << ' c' unless %i[append prepend].include?(mode)
|
32
32
|
cmd << ' b' if base64
|
33
33
|
cmd << " F#{bitflags}" if bitflags
|
34
|
-
cmd <<
|
34
|
+
cmd << cas_string(cas)
|
35
35
|
cmd << " T#{ttl}" if ttl
|
36
36
|
cmd << " M#{mode_to_token(mode)}"
|
37
37
|
cmd << ' q' if quiet
|
@@ -43,7 +43,7 @@ module Dalli
|
|
43
43
|
def self.meta_delete(key:, cas: nil, ttl: nil, base64: false, quiet: false)
|
44
44
|
cmd = "md #{key}"
|
45
45
|
cmd << ' b' if base64
|
46
|
-
cmd <<
|
46
|
+
cmd << cas_string(cas)
|
47
47
|
cmd << " T#{ttl}" if ttl
|
48
48
|
cmd << ' q' if quiet
|
49
49
|
cmd + TERMINATOR
|
@@ -54,8 +54,9 @@ module Dalli
|
|
54
54
|
cmd << ' b' if base64
|
55
55
|
cmd << " D#{delta}" if delta
|
56
56
|
cmd << " J#{initial}" if initial
|
57
|
-
|
58
|
-
cmd << " N#{ttl}" if ttl
|
57
|
+
# Always set a TTL if an initial value is specified
|
58
|
+
cmd << " N#{ttl || 0}" if ttl || initial
|
59
|
+
cmd << cas_string(cas)
|
59
60
|
cmd << ' q' if quiet
|
60
61
|
cmd << " M#{incr ? 'I' : 'D'}"
|
61
62
|
cmd + TERMINATOR
|
@@ -75,7 +76,7 @@ module Dalli
|
|
75
76
|
|
76
77
|
def self.flush(delay: nil, quiet: false)
|
77
78
|
cmd = +'flush_all'
|
78
|
-
cmd << " #{delay}" if delay
|
79
|
+
cmd << " #{parse_to_64_bit_int(delay, 0)}" if delay
|
79
80
|
cmd << ' noreply' if quiet
|
80
81
|
cmd + TERMINATOR
|
81
82
|
end
|
@@ -102,6 +103,18 @@ module Dalli
|
|
102
103
|
end
|
103
104
|
end
|
104
105
|
# rubocop:enable Metrics/MethodLength
|
106
|
+
|
107
|
+
def self.cas_string(cas)
|
108
|
+
cas = parse_to_64_bit_int(cas, nil)
|
109
|
+
cas.nil? || cas.zero? ? '' : " C#{cas}"
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.parse_to_64_bit_int(val, default)
|
113
|
+
val.nil? ? nil : Integer(val)
|
114
|
+
rescue ArgumentError
|
115
|
+
# Sanitize to default if it isn't parsable as an integer
|
116
|
+
default
|
117
|
+
end
|
105
118
|
end
|
106
119
|
end
|
107
120
|
end
|
data/lib/dalli/protocol/meta.rb
CHANGED
data/lib/dalli/version.rb
CHANGED
data/lib/rack/session/dalli.rb
CHANGED
@@ -170,7 +170,7 @@ module Rack
|
|
170
170
|
def ensure_connection_pool_added!
|
171
171
|
require 'connection_pool'
|
172
172
|
rescue LoadError => e
|
173
|
-
warn "You don't have connection_pool installed in your application. "\
|
173
|
+
warn "You don't have connection_pool installed in your application. " \
|
174
174
|
'Please add it to your Gemfile and run bundle install'
|
175
175
|
raise e
|
176
176
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dalli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter M. Goldstein
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: connection_pool
|
@@ -151,8 +151,8 @@ executables: []
|
|
151
151
|
extensions: []
|
152
152
|
extra_rdoc_files: []
|
153
153
|
files:
|
154
|
+
- CHANGELOG.md
|
154
155
|
- Gemfile
|
155
|
-
- History.md
|
156
156
|
- LICENSE
|
157
157
|
- README.md
|
158
158
|
- lib/dalli.rb
|
@@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
206
|
- !ruby/object:Gem::Version
|
207
207
|
version: '0'
|
208
208
|
requirements: []
|
209
|
-
rubygems_version: 3.3.
|
209
|
+
rubygems_version: 3.3.24
|
210
210
|
signing_key:
|
211
211
|
specification_version: 4
|
212
212
|
summary: High performance memcached client for Ruby
|