dalli 3.2.1 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of dalli might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f81141d870bf96f502734833c9e63678c4f034a2e5cdb6a28bf1fe54b5a6f8f2
4
- data.tar.gz: abbb39311cd429b8546397b1c5ba0555024f104e49a6b23fd97b3386408cb5e6
3
+ metadata.gz: 539a5ec7700d7d96bece70021727ff422d24202ab9e89fd07afc623dc3480502
4
+ data.tar.gz: ba9231846477125fd3ed77f5a60f0df3445e3cda12c1736cd71f6b299213accb
5
5
  SHA512:
6
- metadata.gz: 1a6af753aa61a1e80ed734eabb2fa70b8c14e2c1d2fd43a8f95f600732c02d2de08018cb9f41ce776d7796815f8da52fff4a95b05fccb732fe58506d6c38cb2f
7
- data.tar.gz: 1724f003506854bc011c90402584a898534059b022de87385e0f8f2b24879897f23d33219f732489212aaf86b58eaa3c6d6ceb4e86c028daacd5180bc3be07ae
6
+ metadata.gz: 4039d6ce807dc60351f5781438ae84a0d2a147d5af567607653fcfb943ca3d3e0bcfd231cc67dbf4b761a5f0797ba4e5c99e9441d8d1e738eeb356805d139b89
7
+ data.tar.gz: 5c31e6bc0d5b4b35280f7fd6747172838a8b037209d365906830634b32109a16c0301f732418c2ca99480ff3a37d9247a401c61e1d887ecf11a45dd4448d162b
data/Gemfile CHANGED
@@ -5,12 +5,5 @@ source 'https://rubygems.org'
5
5
  gemspec
6
6
 
7
7
  group :test do
8
- gem 'minitest'
9
- gem 'rake'
10
- gem 'rubocop'
11
- gem 'rubocop-minitest'
12
- gem 'rubocop-performance'
13
- gem 'rubocop-rake'
14
8
  gem 'ruby-prof', platform: :mri
15
- gem 'simplecov'
16
9
  end
data/History.md CHANGED
@@ -4,6 +4,11 @@ Dalli Changelog
4
4
  Unreleased
5
5
  ==========
6
6
 
7
+ 3.2.2
8
+ ==========
9
+
10
+ - Ensure apps are resilient against old session ids
11
+
7
12
  3.2.1
8
13
  ==========
9
14
 
@@ -118,6 +123,9 @@ Unreleased
118
123
  * The Rack session adapter has been refactored to remove support for thread-unsafe
119
124
  configurations. You will need to include the `connection_pool` gem in
120
125
  your Gemfile to ensure session operations are thread-safe.
126
+ * When using namespaces, the algorithm for calculating truncated keys was
127
+ changed. Non-truncated keys and truncated keys for the non-namespace
128
+ case were left unchanged.
121
129
 
122
130
  - Raise NetworkError when multi response gets into corrupt state (mervync, #783)
123
131
  - Validate servers argument (semaperepelitsa, petergoldstein, #776)
data/README.md CHANGED
@@ -23,7 +23,7 @@ The name is a variant of Salvador Dali for his famous painting [The Persistence
23
23
  * [Announcements](https://github.com/petergoldstein/dalli/discussions/categories/announcements) - Announcements of interest to the Dalli community will be posted here.
24
24
  * [Bug Reports](https://github.com/petergoldstein/dalli/issues) - If you discover a problem with Dalli, please submit a bug report in the tracker.
25
25
  * [Forum](https://github.com/petergoldstein/dalli/discussions/categories/q-a) - If you have questions about Dalli, please post them here.
26
- * [Client API](https://www.rubydoc.info/github/petergoldstein/dalli/master/Dalli/Client) - Ruby documentation for the `Dalli::Client` API
26
+ * [Client API](https://rubydoc.info/github/petergoldstein/dalli/Dalli/Client) - Ruby documentation for the `Dalli::Client` API
27
27
 
28
28
  ## Contributing
29
29
 
@@ -127,11 +127,11 @@ module Dalli
127
127
  end
128
128
 
129
129
  def username
130
- @options[:username] || ENV['MEMCACHE_USERNAME']
130
+ @options[:username] || ENV.fetch('MEMCACHE_USERNAME', nil)
131
131
  end
132
132
 
133
133
  def password
134
- @options[:password] || ENV['MEMCACHE_PASSWORD']
134
+ @options[:password] || ENV.fetch('MEMCACHE_PASSWORD', nil)
135
135
  end
136
136
 
137
137
  def require_auth?
@@ -40,7 +40,7 @@ module Dalli
40
40
  def self.apply_defaults(arg)
41
41
  return arg unless arg.nil?
42
42
 
43
- ENV[ENV_VAR_NAME] || DEFAULT_SERVERS
43
+ ENV.fetch(ENV_VAR_NAME, nil) || DEFAULT_SERVERS
44
44
  end
45
45
 
46
46
  def self.validate_type(arg)
data/lib/dalli/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dalli
4
- VERSION = '3.2.1'
4
+ VERSION = '3.2.2'
5
5
 
6
6
  MIN_SUPPORTED_MEMCACHED_VERSION = '1.4'
7
7
  end
@@ -82,6 +82,9 @@ module Rack
82
82
  def write_session(_req, sid, session, options)
83
83
  return false unless sid
84
84
 
85
+ key = memcached_key_from_sid(sid)
86
+ return false unless key
87
+
85
88
  with_dalli_client(false) do |dc|
86
89
  dc.set(memcached_key_from_sid(sid), session, ttl(options[:expire_after]))
87
90
  sid
@@ -90,7 +93,8 @@ module Rack
90
93
 
91
94
  def delete_session(_req, sid, options)
92
95
  with_dalli_client do |dc|
93
- dc.delete(memcached_key_from_sid(sid))
96
+ key = memcached_key_from_sid(sid)
97
+ dc.delete(key) if key
94
98
  generate_sid_with(dc) unless options[:drop]
95
99
  end
96
100
  end
@@ -98,20 +102,24 @@ module Rack
98
102
  private
99
103
 
100
104
  def memcached_key_from_sid(sid)
101
- sid.private_id
105
+ sid.private_id if sid.respond_to?(:private_id)
102
106
  end
103
107
 
104
108
  def existing_session_for_sid(client, sid)
105
109
  return nil unless sid && !sid.empty?
106
110
 
107
- client.get(memcached_key_from_sid(sid))
111
+ key = memcached_key_from_sid(sid)
112
+ return nil if key.nil?
113
+
114
+ client.get(key)
108
115
  end
109
116
 
110
117
  def create_sid_with_empty_session(client)
111
118
  loop do
112
119
  sid = generate_sid_with(client)
120
+ key = memcached_key_from_sid(sid)
113
121
 
114
- break sid if client.add(memcached_key_from_sid(sid), {}, @default_ttl)
122
+ break sid if key && client.add(key, {}, @default_ttl)
115
123
  end
116
124
  end
117
125
 
@@ -119,7 +127,8 @@ module Rack
119
127
  loop do
120
128
  raw_sid = generate_sid
121
129
  sid = raw_sid.is_a?(String) ? Rack::Session::SessionId.new(raw_sid) : raw_sid
122
- break sid unless client.get(memcached_key_from_sid(sid))
130
+ key = memcached_key_from_sid(sid)
131
+ break sid unless key && client.get(key)
123
132
  end
124
133
  end
125
134
 
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.1
4
+ version: 3.2.2
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-02-14 00:00:00.000000000 Z
12
+ date: 2022-06-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: connection_pool
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: minitest
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '5'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '5'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: rack
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +59,20 @@ dependencies:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: 2.2.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '13.0'
48
76
  - !ruby/object:Gem::Dependency
49
77
  name: rubocop
50
78
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +129,20 @@ dependencies:
101
129
  - - ">="
102
130
  - !ruby/object:Gem::Version
103
131
  version: '0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: simplecov
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
104
146
  description: High performance memcached client for Ruby
105
147
  email:
106
148
  - peter.m.goldstein@gmail.com
@@ -164,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
206
  - !ruby/object:Gem::Version
165
207
  version: '0'
166
208
  requirements: []
167
- rubygems_version: 3.3.7
209
+ rubygems_version: 3.3.16
168
210
  signing_key:
169
211
  specification_version: 4
170
212
  summary: High performance memcached client for Ruby