mondrian_redis_segment_cache 0.4.0-java → 0.4.1-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c7637717595cdf7c5447a26dead15bc177106402
4
- data.tar.gz: 98088ae79461e0a5b484385275858b35fb58bf0f
3
+ metadata.gz: c120ed66894ca27037fa5ab85ecd56fd9c57dbd0
4
+ data.tar.gz: 33fd9bcd2484e75540746890522b771d4e59666c
5
5
  SHA512:
6
- metadata.gz: 612220016333dfd5b7b667cf48a6effe1dff8ebe2a36ec46dac325f6c8b56c7e8f00df631477ba8be4a395bed529d2227e6ddb7a63acce44f42e03f8fb96cd1f
7
- data.tar.gz: 398b873c2906b1738152e52e224a44af99e0450030566ba0c0ca31cc34b79b0a843d54be8f08727154e55f899c125fd1c157895c53f179ebbcd7157e0a8287c9
6
+ metadata.gz: f7bb09883b38bbe9ecfa321efe3e1eaf41cab8e7b0fbdb71a2b041fed15a1d557a52e7d1eea7391201bf686609c5f850ea7e88d930162206acff19f4779a8e6b
7
+ data.tar.gz: 4128c1f68b480e8b25c83ccbaab47fbec40cf1500a8af407e9874c7c7fc30dbda66e55d7649e176573343a4356169b8c3f020232de5db7977de6865b5bd1e28d
@@ -20,8 +20,8 @@ module MondrianRedisSegmentCache
20
20
  def initialize(mondrian_redis_connection, new_options = {})
21
21
  @mondrian_redis = mondrian_redis_connection
22
22
  @options = Marshal.load(Marshal.dump(new_options))
23
- @listeners = Set.new
24
- @local_cache_set = Set.new
23
+ @listeners = ::Concurrent::Array.new
24
+ @local_cache_set = ::Concurrent::Array.new
25
25
 
26
26
  ##
27
27
  # Having a TimerTask reconcile every 5 minutes so the local listeners are eventually consistent with
@@ -39,7 +39,8 @@ module MondrianRedisSegmentCache
39
39
  # Public Instance Methods
40
40
  #
41
41
  def addListener(segment_cache_listener)
42
- listeners << segment_cache_listener
42
+ listeners << segment_cache_listener unless listeners.include?(segment_cache_listener)
43
+ listeners.uniq!
43
44
  end
44
45
 
45
46
  # returns mondrian.spi.SegmentBody
@@ -78,7 +79,7 @@ module MondrianRedisSegmentCache
78
79
  segment_header.getDescription # Hazel adapter says this affects serialization
79
80
  header_base64 = segment_header_to_base64(segment_header)
80
81
  body_base64 = segment_body_to_base64(segment_body)
81
- @local_cache_set << header_base64
82
+ @local_cache_set << header_base64 unless @local_cache_set.include?(header_base64)
82
83
  mondrian_redis.with do |connection|
83
84
  connection.sadd(SEGMENT_HEADERS_SET_KEY, header_base64)
84
85
  end
@@ -93,7 +94,6 @@ module MondrianRedisSegmentCache
93
94
  end
94
95
  end
95
96
 
96
- publish_created_to_listeners(header_base64)
97
97
  return ("#{set_success}".upcase == "OK" || set_success == true) # weird polymorphic return ?
98
98
  end
99
99
 
@@ -113,7 +113,6 @@ module MondrianRedisSegmentCache
113
113
  connection.del(header_base64)
114
114
  end
115
115
 
116
- publish_deleted_to_listeners(header_base64)
117
116
  return deleted_keys >= 1
118
117
  end
119
118
 
@@ -189,7 +188,7 @@ module MondrianRedisSegmentCache
189
188
  end
190
189
 
191
190
  def reconcile_local_set_with_redis
192
- remote_set = Set.new
191
+ remote_set = []
193
192
 
194
193
  mondrian_redis.with do |connection|
195
194
  connection.sscan_each(SEGMENT_HEADERS_SET_KEY) do |segment_header_base64|
@@ -197,8 +196,10 @@ module MondrianRedisSegmentCache
197
196
  end
198
197
  end
199
198
 
200
- remote_added_keys = remote_set - local_cache_set
201
- remote_removed_keys = local_cache_set - remote_set
199
+ local_copy = []
200
+ local_cache_set.each { |value| local_copy << value }
201
+ remote_added_keys = remote_set - local_copy
202
+ remote_removed_keys = local_copy - remote_set
202
203
 
203
204
  remote_added_keys.each do |remote_added_key|
204
205
  @local_cache_set << remote_added_key
@@ -209,6 +210,8 @@ module MondrianRedisSegmentCache
209
210
  @local_cache_set.delete(remote_removed_key)
210
211
  publish_deleted_to_listeners(remote_removed_key)
211
212
  end
213
+
214
+ @local_cache_set.uniq!
212
215
  end
213
216
 
214
217
  def reconcile_set_and_keys
@@ -1,3 +1,3 @@
1
1
  module MondrianRedisSegmentCache
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
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.0
4
+ version: 0.4.1
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-01-26 00:00:00.000000000 Z
11
+ date: 2017-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement