mondrian_redis_segment_cache 0.4.3-java → 0.4.4-java
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/mondrian_redis_segment_cache/cache.rb +30 -44
- data/lib/mondrian_redis_segment_cache/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 846739c7d8f7e615e241b6f87736edb84ff6389c
|
4
|
+
data.tar.gz: b85140550855920737f35be7b6c6e0148b0d5237
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e82def47c87d8f0290a45b3106696d25a00e4ade0163916f95de5b0eff15eb120062f3d9ae1eb5921a81fb27a8ec9679aba9382cf0935ad54a4dd1177990e3ae
|
7
|
+
data.tar.gz: ce194dbc0961acd5bcec1a1e3a90a859216303386074fb8bb1e5091fa6a95840d95d4e07e71734076bef034873a0018db73d35865c0439ebe189326f0a4b0e7a
|
@@ -104,8 +104,33 @@ module MondrianRedisSegmentCache
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def reload
|
107
|
-
|
108
|
-
|
107
|
+
existing_hash_vals = ::Set.new
|
108
|
+
|
109
|
+
mondrian_redis.with do |connection|
|
110
|
+
connection.sscan_each(SEGMENT_HEADERS_SET_KEY) do |segment_header_base64|
|
111
|
+
unless connection.exists(segment_header_base64)
|
112
|
+
connection.srem(SEGMENT_HEADERS_SET_KEY, segment_header_base64)
|
113
|
+
next
|
114
|
+
end
|
115
|
+
|
116
|
+
existing_hash_vals << segment_header_base64.hash
|
117
|
+
|
118
|
+
unless local_cache_set.include?(segment_header_base64)
|
119
|
+
@local_cache_set << segment_header_base64
|
120
|
+
publish_created_to_listeners(segment_header_base64)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
local_cache_set.select! do |segment|
|
126
|
+
unless existing_hash_vals.include?(segment.hash)
|
127
|
+
publish_deleted_to_listeners(segment)
|
128
|
+
end
|
129
|
+
|
130
|
+
existing_hash_vals.include?(segment.hash)
|
131
|
+
end
|
132
|
+
|
133
|
+
true
|
109
134
|
end
|
110
135
|
|
111
136
|
def remove(segment_header)
|
@@ -167,7 +192,7 @@ module MondrianRedisSegmentCache
|
|
167
192
|
end
|
168
193
|
|
169
194
|
def has_expiry?
|
170
|
-
options.has_key?(:ttl) || options.has_key?(:expires_at)
|
195
|
+
options.has_key?(:ttl) || options.has_key?(:expires_at) || options.has_key?(:expires) || options.has_key?(:expires_callback)
|
171
196
|
end
|
172
197
|
|
173
198
|
def publish_created_to_listener(message, listener)
|
@@ -200,49 +225,9 @@ module MondrianRedisSegmentCache
|
|
200
225
|
end
|
201
226
|
end
|
202
227
|
|
203
|
-
def reconcile_local_set_with_redis
|
204
|
-
remote_set = []
|
205
|
-
|
206
|
-
mondrian_redis.with do |connection|
|
207
|
-
connection.sscan_each(SEGMENT_HEADERS_SET_KEY) do |segment_header_base64|
|
208
|
-
remote_set << segment_header_base64
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
local_copy = []
|
213
|
-
local_cache_set.each { |value| local_copy << value }
|
214
|
-
remote_added_keys = remote_set - local_copy
|
215
|
-
remote_removed_keys = local_copy - remote_set
|
216
|
-
|
217
|
-
remote_added_keys.each do |remote_added_key|
|
218
|
-
@local_cache_set << remote_added_key
|
219
|
-
publish_created_to_listeners(remote_added_key)
|
220
|
-
end
|
221
|
-
|
222
|
-
remote_removed_keys.each do |remote_removed_key|
|
223
|
-
@local_cache_set.delete(remote_removed_key)
|
224
|
-
publish_deleted_to_listeners(remote_removed_key)
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
def reconcile_set_and_keys
|
229
|
-
headers = []
|
230
|
-
mondrian_redis.with do |connection|
|
231
|
-
connection.sscan_each(SEGMENT_HEADERS_SET_KEY) do |segment_header_base64|
|
232
|
-
headers << segment_header_base64
|
233
|
-
end
|
234
|
-
end
|
235
|
-
|
236
|
-
mondrian_redis.with do |connection|
|
237
|
-
headers.each do |header|
|
238
|
-
# Spin through Header Set and remove any keys that are not in redis at all (they may have been deleted while offline)
|
239
|
-
connection.srem(SEGMENT_HEADERS_SET_KEY, header) unless connection.exists(header)
|
240
|
-
end
|
241
|
-
end
|
242
|
-
end
|
243
|
-
|
244
228
|
def segment_body_from_base64(segment_body_base64)
|
245
229
|
return nil unless segment_body_base64
|
230
|
+
return nil if segment_body_base64.empty?
|
246
231
|
return ::Java::MondrianSpi::SegmentBody.from_base64(segment_body_base64)
|
247
232
|
rescue
|
248
233
|
return nil
|
@@ -255,6 +240,7 @@ module MondrianRedisSegmentCache
|
|
255
240
|
|
256
241
|
def segment_header_from_base64(segment_header_base64)
|
257
242
|
return nil unless segment_header_base64
|
243
|
+
return nil if segment_header_base64.empty?
|
258
244
|
return ::Java::MondrianSpi::SegmentHeader.from_base64(segment_header_base64)
|
259
245
|
rescue
|
260
246
|
return nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mondrian_redis_segment_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Brandon Dewitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
161
|
version: '0'
|
162
162
|
requirements: []
|
163
163
|
rubyforge_project:
|
164
|
-
rubygems_version: 2.
|
164
|
+
rubygems_version: 2.6.9
|
165
165
|
signing_key:
|
166
166
|
specification_version: 4
|
167
167
|
summary: Segment Cache for Mondrian written in JRuby with Redis as the cache store
|