dalli 2.7.3 → 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.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/{History.md → CHANGELOG.md} +211 -0
  3. data/Gemfile +3 -6
  4. data/LICENSE +1 -1
  5. data/README.md +30 -208
  6. data/lib/dalli/cas/client.rb +2 -57
  7. data/lib/dalli/client.rb +254 -253
  8. data/lib/dalli/compressor.rb +13 -2
  9. data/lib/dalli/key_manager.rb +121 -0
  10. data/lib/dalli/options.rb +7 -7
  11. data/lib/dalli/pipelined_getter.rb +177 -0
  12. data/lib/dalli/protocol/base.rb +241 -0
  13. data/lib/dalli/protocol/binary/request_formatter.rb +117 -0
  14. data/lib/dalli/protocol/binary/response_header.rb +36 -0
  15. data/lib/dalli/protocol/binary/response_processor.rb +239 -0
  16. data/lib/dalli/protocol/binary/sasl_authentication.rb +60 -0
  17. data/lib/dalli/protocol/binary.rb +173 -0
  18. data/lib/dalli/protocol/connection_manager.rb +252 -0
  19. data/lib/dalli/protocol/meta/key_regularizer.rb +31 -0
  20. data/lib/dalli/protocol/meta/request_formatter.rb +121 -0
  21. data/lib/dalli/protocol/meta/response_processor.rb +211 -0
  22. data/lib/dalli/protocol/meta.rb +178 -0
  23. data/lib/dalli/protocol/response_buffer.rb +54 -0
  24. data/lib/dalli/protocol/server_config_parser.rb +86 -0
  25. data/lib/dalli/protocol/ttl_sanitizer.rb +45 -0
  26. data/lib/dalli/protocol/value_compressor.rb +85 -0
  27. data/lib/dalli/protocol/value_marshaller.rb +59 -0
  28. data/lib/dalli/protocol/value_serializer.rb +91 -0
  29. data/lib/dalli/protocol.rb +8 -0
  30. data/lib/dalli/ring.rb +97 -86
  31. data/lib/dalli/server.rb +4 -719
  32. data/lib/dalli/servers_arg_normalizer.rb +54 -0
  33. data/lib/dalli/socket.rb +123 -115
  34. data/lib/dalli/version.rb +5 -1
  35. data/lib/dalli.rb +45 -14
  36. data/lib/rack/session/dalli.rb +162 -42
  37. metadata +136 -63
  38. data/Performance.md +0 -42
  39. data/Rakefile +0 -43
  40. data/dalli.gemspec +0 -29
  41. data/lib/action_dispatch/middleware/session/dalli_store.rb +0 -81
  42. data/lib/active_support/cache/dalli_store.rb +0 -372
  43. data/lib/dalli/railtie.rb +0 -7
  44. data/test/benchmark_test.rb +0 -243
  45. data/test/helper.rb +0 -56
  46. data/test/memcached_mock.rb +0 -201
  47. data/test/sasl/memcached.conf +0 -1
  48. data/test/sasl/sasldb +0 -1
  49. data/test/test_active_support.rb +0 -541
  50. data/test/test_cas_client.rb +0 -107
  51. data/test/test_compressor.rb +0 -52
  52. data/test/test_dalli.rb +0 -682
  53. data/test/test_encoding.rb +0 -32
  54. data/test/test_failover.rb +0 -137
  55. data/test/test_network.rb +0 -64
  56. data/test/test_rack_session.rb +0 -341
  57. data/test/test_ring.rb +0 -85
  58. data/test/test_sasl.rb +0 -105
  59. data/test/test_serializer.rb +0 -29
  60. data/test/test_server.rb +0 -110
metadata CHANGED
@@ -1,31 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dalli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.3
4
+ version: 3.2.3
5
5
  platform: ruby
6
6
  authors:
7
+ - Peter M. Goldstein
7
8
  - Mike Perham
8
- autorequire:
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-03-14 00:00:00.000000000 Z
12
+ date: 2022-10-28 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: connection_pool
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: minitest
15
30
  requirement: !ruby/object:Gem::Requirement
16
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'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rack
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '2.0'
17
49
  - - ">="
18
50
  - !ruby/object:Gem::Version
19
- version: 4.2.0
51
+ version: 2.2.0
20
52
  type: :development
21
53
  prerelease: false
22
54
  version_requirements: !ruby/object:Gem::Requirement
23
55
  requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: '2.0'
24
59
  - - ">="
25
60
  - !ruby/object:Gem::Version
26
- version: 4.2.0
61
+ version: 2.2.0
27
62
  - !ruby/object:Gem::Dependency
28
- name: mocha
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'
76
+ - !ruby/object:Gem::Dependency
77
+ name: rubocop
29
78
  requirement: !ruby/object:Gem::Requirement
30
79
  requirements:
31
80
  - - ">="
@@ -39,102 +88,126 @@ dependencies:
39
88
  - !ruby/object:Gem::Version
40
89
  version: '0'
41
90
  - !ruby/object:Gem::Dependency
42
- name: rails
91
+ name: rubocop-minitest
43
92
  requirement: !ruby/object:Gem::Requirement
44
93
  requirements:
45
- - - "~>"
94
+ - - ">="
46
95
  - !ruby/object:Gem::Version
47
- version: '4'
96
+ version: '0'
48
97
  type: :development
49
98
  prerelease: false
50
99
  version_requirements: !ruby/object:Gem::Requirement
51
100
  requirements:
52
- - - "~>"
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rubocop-performance
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: rubocop-rake
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
53
130
  - !ruby/object:Gem::Version
54
- version: '4'
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'
55
146
  description: High performance memcached client for Ruby
56
- email: mperham@gmail.com
147
+ email:
148
+ - peter.m.goldstein@gmail.com
149
+ - mperham@gmail.com
57
150
  executables: []
58
151
  extensions: []
59
152
  extra_rdoc_files: []
60
153
  files:
154
+ - CHANGELOG.md
61
155
  - Gemfile
62
- - History.md
63
156
  - LICENSE
64
- - Performance.md
65
157
  - README.md
66
- - Rakefile
67
- - dalli.gemspec
68
- - lib/action_dispatch/middleware/session/dalli_store.rb
69
- - lib/active_support/cache/dalli_store.rb
70
158
  - lib/dalli.rb
71
159
  - lib/dalli/cas/client.rb
72
160
  - lib/dalli/client.rb
73
161
  - lib/dalli/compressor.rb
162
+ - lib/dalli/key_manager.rb
74
163
  - lib/dalli/options.rb
75
- - lib/dalli/railtie.rb
164
+ - lib/dalli/pipelined_getter.rb
165
+ - lib/dalli/protocol.rb
166
+ - lib/dalli/protocol/base.rb
167
+ - lib/dalli/protocol/binary.rb
168
+ - lib/dalli/protocol/binary/request_formatter.rb
169
+ - lib/dalli/protocol/binary/response_header.rb
170
+ - lib/dalli/protocol/binary/response_processor.rb
171
+ - lib/dalli/protocol/binary/sasl_authentication.rb
172
+ - lib/dalli/protocol/connection_manager.rb
173
+ - lib/dalli/protocol/meta.rb
174
+ - lib/dalli/protocol/meta/key_regularizer.rb
175
+ - lib/dalli/protocol/meta/request_formatter.rb
176
+ - lib/dalli/protocol/meta/response_processor.rb
177
+ - lib/dalli/protocol/response_buffer.rb
178
+ - lib/dalli/protocol/server_config_parser.rb
179
+ - lib/dalli/protocol/ttl_sanitizer.rb
180
+ - lib/dalli/protocol/value_compressor.rb
181
+ - lib/dalli/protocol/value_marshaller.rb
182
+ - lib/dalli/protocol/value_serializer.rb
76
183
  - lib/dalli/ring.rb
77
184
  - lib/dalli/server.rb
185
+ - lib/dalli/servers_arg_normalizer.rb
78
186
  - lib/dalli/socket.rb
79
187
  - lib/dalli/version.rb
80
188
  - lib/rack/session/dalli.rb
81
- - test/benchmark_test.rb
82
- - test/helper.rb
83
- - test/memcached_mock.rb
84
- - test/sasl/memcached.conf
85
- - test/sasl/sasldb
86
- - test/test_active_support.rb
87
- - test/test_cas_client.rb
88
- - test/test_compressor.rb
89
- - test/test_dalli.rb
90
- - test/test_encoding.rb
91
- - test/test_failover.rb
92
- - test/test_network.rb
93
- - test/test_rack_session.rb
94
- - test/test_ring.rb
95
- - test/test_sasl.rb
96
- - test/test_serializer.rb
97
- - test/test_server.rb
98
- homepage: http://github.com/mperham/dalli
189
+ homepage: https://github.com/petergoldstein/dalli
99
190
  licenses:
100
191
  - MIT
101
- metadata: {}
102
- post_install_message:
103
- rdoc_options:
104
- - "--charset=UTF-8"
192
+ metadata:
193
+ rubygems_mfa_required: 'true'
194
+ post_install_message:
195
+ rdoc_options: []
105
196
  require_paths:
106
197
  - lib
107
198
  required_ruby_version: !ruby/object:Gem::Requirement
108
199
  requirements:
109
200
  - - ">="
110
201
  - !ruby/object:Gem::Version
111
- version: '0'
202
+ version: '2.6'
112
203
  required_rubygems_version: !ruby/object:Gem::Requirement
113
204
  requirements:
114
205
  - - ">="
115
206
  - !ruby/object:Gem::Version
116
207
  version: '0'
117
208
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.4.6
120
- signing_key:
209
+ rubygems_version: 3.3.24
210
+ signing_key:
121
211
  specification_version: 4
122
212
  summary: High performance memcached client for Ruby
123
- test_files:
124
- - test/benchmark_test.rb
125
- - test/helper.rb
126
- - test/memcached_mock.rb
127
- - test/sasl/memcached.conf
128
- - test/sasl/sasldb
129
- - test/test_active_support.rb
130
- - test/test_cas_client.rb
131
- - test/test_compressor.rb
132
- - test/test_dalli.rb
133
- - test/test_encoding.rb
134
- - test/test_failover.rb
135
- - test/test_network.rb
136
- - test/test_rack_session.rb
137
- - test/test_ring.rb
138
- - test/test_sasl.rb
139
- - test/test_serializer.rb
140
- - test/test_server.rb
213
+ test_files: []
data/Performance.md DELETED
@@ -1,42 +0,0 @@
1
- Performance
2
- ====================
3
-
4
- Caching is all about performance, so I carefully track Dalli performance to ensure no regressions.
5
- You can optionally use kgio to give Dalli a 10-20% performance boost: `gem install kgio`.
6
-
7
- Note I've added some benchmarks over time to Dalli that the other libraries don't necessarily have.
8
-
9
- memcache-client
10
- ---------------
11
-
12
- Testing 1.8.5 with ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
13
-
14
- user system total real
15
- set:plain:memcache-client 1.860000 0.310000 2.170000 ( 2.188030)
16
- set:ruby:memcache-client 1.830000 0.290000 2.120000 ( 2.130212)
17
- get:plain:memcache-client 1.830000 0.340000 2.170000 ( 2.176156)
18
- get:ruby:memcache-client 1.900000 0.330000 2.230000 ( 2.235045)
19
- multiget:ruby:memcache-client 0.860000 0.120000 0.980000 ( 0.987348)
20
- missing:ruby:memcache-client 1.630000 0.320000 1.950000 ( 1.954867)
21
- mixed:ruby:memcache-client 3.690000 0.670000 4.360000 ( 4.364469)
22
-
23
-
24
- dalli
25
- -----
26
-
27
- Testing with Rails 3.2.1
28
- Using kgio socket IO
29
- Testing 2.0.0 with ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
30
-
31
- user system total real
32
- mixed:rails:dalli 1.580000 0.570000 2.150000 ( 3.008839)
33
- set:plain:dalli 0.730000 0.300000 1.030000 ( 1.567098)
34
- setq:plain:dalli 0.520000 0.120000 0.640000 ( 0.634402)
35
- set:ruby:dalli 0.800000 0.300000 1.100000 ( 1.640348)
36
- get:plain:dalli 0.840000 0.330000 1.170000 ( 1.668425)
37
- get:ruby:dalli 0.850000 0.330000 1.180000 ( 1.665716)
38
- multiget:ruby:dalli 0.700000 0.260000 0.960000 ( 0.965423)
39
- missing:ruby:dalli 0.720000 0.320000 1.040000 ( 1.511720)
40
- mixed:ruby:dalli 1.660000 0.640000 2.300000 ( 3.320743)
41
- mixedq:ruby:dalli 1.630000 0.510000 2.140000 ( 2.629734)
42
- incr:ruby:dalli 0.270000 0.100000 0.370000 ( 0.547618)
data/Rakefile DELETED
@@ -1,43 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'appraisal'
3
- require 'rake/testtask'
4
- Rake::TestTask.new(:test) do |test|
5
- test.libs << 'test'
6
- test.pattern = 'test/**/test_*.rb'
7
- test.warning = true
8
- test.verbose = true
9
- end
10
-
11
- Rake::TestTask.new(:bench) do |test|
12
- test.libs << 'test'
13
- test.pattern = 'test/benchmark_test.rb'
14
- end
15
-
16
- begin
17
- require 'metric_fu'
18
- MetricFu::Configuration.run do |config|
19
- config.rcov[:rcov_opts] << "-Itest:lib"
20
- end
21
- rescue LoadError
22
- end
23
-
24
- task :default => :test
25
-
26
- task :test_all do
27
- system('rake test RAILS_VERSION="~> 3.0.0"')
28
- system('rake test RAILS_VERSION=">= 3.0.0"')
29
- end
30
-
31
- # 'gem install rdoc' to upgrade RDoc if this is giving you errors
32
- begin
33
- require 'rdoc/task'
34
- RDoc::Task.new do |rd|
35
- rd.rdoc_files.include("lib/**/*.rb")
36
- end
37
- rescue LoadError
38
- puts "Unable to load rdoc, run 'gem install rdoc' to fix this."
39
- end
40
-
41
- require 'rake/clean'
42
- CLEAN.include "**/*.rbc"
43
- CLEAN.include "**/.DS_Store"
data/dalli.gemspec DELETED
@@ -1,29 +0,0 @@
1
- require './lib/dalli/version'
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{dalli}
5
- s.version = Dalli::VERSION
6
- s.license = "MIT"
7
-
8
- s.authors = ["Mike Perham"]
9
- s.description = %q{High performance memcached client for Ruby}
10
- s.email = %q{mperham@gmail.com}
11
- s.files = Dir.glob("lib/**/*") + [
12
- "LICENSE",
13
- "README.md",
14
- "History.md",
15
- "Rakefile",
16
- "Gemfile",
17
- "dalli.gemspec",
18
- "Performance.md",
19
- ]
20
- s.homepage = %q{http://github.com/mperham/dalli}
21
- s.rdoc_options = ["--charset=UTF-8"]
22
- s.require_paths = ["lib"]
23
- s.summary = %q{High performance memcached client for Ruby}
24
- s.test_files = Dir.glob("test/**/*")
25
- s.add_development_dependency(%q<minitest>, [">= 4.2.0"])
26
- s.add_development_dependency(%q<mocha>, [">= 0"])
27
- s.add_development_dependency(%q<rails>, ["~> 4"])
28
- end
29
-
@@ -1,81 +0,0 @@
1
- require 'active_support/cache'
2
- require 'action_dispatch/middleware/session/abstract_store'
3
- require 'dalli'
4
-
5
- # Dalli-based session store for Rails 3.0.
6
- module ActionDispatch
7
- module Session
8
- class DalliStore < AbstractStore
9
- def initialize(app, options = {})
10
- # Support old :expires option
11
- options[:expire_after] ||= options[:expires]
12
-
13
- super
14
-
15
- @default_options = { :namespace => 'rack:session' }.merge(@default_options)
16
-
17
- @pool = options[:cache] || begin
18
- Dalli::Client.new(
19
- @default_options[:memcache_server], @default_options)
20
- end
21
- @namespace = @default_options[:namespace]
22
-
23
- @raise_errors = !!@default_options[:raise_errors]
24
-
25
- super
26
- end
27
-
28
- def reset
29
- @pool.reset
30
- end
31
-
32
- private
33
-
34
- def get_session(env, sid)
35
- sid = generate_sid unless sid and !sid.empty?
36
- begin
37
- session = @pool.get(sid) || {}
38
- rescue Dalli::DalliError => ex
39
- # re-raise ArgumentError so Rails' session abstract_store.rb can autoload any missing models
40
- raise ArgumentError, ex.message if ex.message =~ /unmarshal/
41
- Rails.logger.warn("Session::DalliStore#get: #{ex.message}")
42
- session = {}
43
- end
44
- [sid, session]
45
- end
46
-
47
- def set_session(env, sid, session_data, options = nil)
48
- options ||= env[ENV_SESSION_OPTIONS_KEY]
49
- expiry = options[:expire_after]
50
- @pool.set(sid, session_data, expiry)
51
- sid
52
- rescue Dalli::DalliError
53
- Rails.logger.warn("Session::DalliStore#set: #{$!.message}")
54
- raise if @raise_errors
55
- false
56
- end
57
-
58
- def destroy_session(env, session_id, options)
59
- begin
60
- @pool.delete(session_id)
61
- rescue Dalli::DalliError
62
- Rails.logger.warn("Session::DalliStore#destroy_session: #{$!.message}")
63
- raise if @raise_errors
64
- end
65
- return nil if options[:drop]
66
- generate_sid
67
- end
68
-
69
- def destroy(env)
70
- if sid = current_session_id(env)
71
- @pool.delete(sid)
72
- end
73
- rescue Dalli::DalliError
74
- Rails.logger.warn("Session::DalliStore#destroy: #{$!.message}")
75
- raise if @raise_errors
76
- false
77
- end
78
-
79
- end
80
- end
81
- end