flagpole_sitta 0.9.6 → 0.9.7
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.
- data/lib/flagpole_sitta/cache_sitta.rb +52 -62
- data/lib/flagpole_sitta/version.rb +1 -1
- metadata +4 -4
@@ -112,9 +112,7 @@ module FlagpoleSitta
|
|
112
112
|
for i in 0..flag[:space] do
|
113
113
|
array_key = array_cache_key_gen i, route_id
|
114
114
|
hash = FlagpoleSitta::CommonFs.flagpole_cache_read(array_key)
|
115
|
-
|
116
|
-
yield hash
|
117
|
-
end
|
115
|
+
yield hash
|
118
116
|
end
|
119
117
|
end
|
120
118
|
|
@@ -125,63 +123,40 @@ module FlagpoleSitta
|
|
125
123
|
#Nukes all corresponding caches for a given array.
|
126
124
|
def destroy_array_cache options={}
|
127
125
|
|
128
|
-
i = 0
|
129
|
-
|
130
126
|
each_cache options[:route_id] do |hash|
|
131
|
-
#A Check in Case there is some type of cache failure
|
132
|
-
if hash.present?
|
133
|
-
#
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
FlagpoleSitta::CommonFs.flagpole_cache_write(flag_key, flag)
|
156
|
-
end
|
157
|
-
|
158
|
-
#Finally get rid of the associated cache object.
|
159
|
-
FlagpoleSitta::CommonFs.flagpole_cache_delete(a)
|
160
|
-
|
127
|
+
#A Check in Case there is some type of cache failure, or it is an empty spot, also if it has no scope, or it falls in scope
|
128
|
+
if hash.present? && (hash[:scope].nil? || options[:obj].in_scope(hash[:scope]))
|
129
|
+
#Get all the associated.
|
130
|
+
associated = FlagpoleSitta::CommonFs.flagpole_cache_read(hash[:key])[:associated]
|
131
|
+
Rails.logger.info "#{hash[:key]} is being cleared"
|
132
|
+
#Destroy the actually cache
|
133
|
+
FlagpoleSitta::CommonFs.flagpole_cache_delete(hash[:key])
|
134
|
+
#The associated objects will always include the object we got the actually cache from
|
135
|
+
associated.each do |a|
|
136
|
+
#Get the base key
|
137
|
+
base_key = a.gsub(/\/[^\/]*\z/, "")
|
138
|
+
#Get the flag. Capture the god damn flag!
|
139
|
+
flag_key = base_key + "/Flag"
|
140
|
+
#Get its location in the 'Array'
|
141
|
+
n = a.split("/").last
|
142
|
+
# Check in case of cache failure
|
143
|
+
if flag = FlagpoleSitta::CommonFs.flagpole_cache_read(flag_key)
|
144
|
+
#Add an empty spot to the 'Array'
|
145
|
+
flag[:empty] = flag[:empty] + 1
|
146
|
+
empty_stack_key = base_key + "/EmptyStack/" + flag[:empty].to_s
|
147
|
+
#Save the empty spot location to the 'Stack'
|
148
|
+
FlagpoleSitta::CommonFs.flagpole_cache_write(empty_stack_key, n)
|
149
|
+
#Update the flag
|
150
|
+
FlagpoleSitta::CommonFs.flagpole_cache_write(flag_key, flag)
|
161
151
|
end
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
FlagpoleSitta::CommonFs.flagpole_cache_write(key, hash)
|
166
|
-
i = i + 1
|
152
|
+
|
153
|
+
#Finally get rid of the associated cache object.
|
154
|
+
FlagpoleSitta::CommonFs.flagpole_cache_delete(a)
|
167
155
|
end
|
156
|
+
#Else It is not in scope so the cache lives to fight another day!
|
168
157
|
end
|
169
158
|
end
|
170
159
|
|
171
|
-
|
172
|
-
flag_key = array_cache_key_gen "Flag", options[:route_id]
|
173
|
-
#If everything was deleted destroy the flag.
|
174
|
-
if i == 0
|
175
|
-
FlagpoleSitta::CommonFs.flagpole_cache_delete(flag_key)
|
176
|
-
#Else update the flag
|
177
|
-
else
|
178
|
-
flag = FlagpoleSitta::CommonFs.flagpole_cache_read(flag_key)
|
179
|
-
flag[:space] = (i - 1)
|
180
|
-
#Sense we moved through every object and moved all the remaining objects down
|
181
|
-
#there should be no empty spaces.
|
182
|
-
flag[:empty] = -1
|
183
|
-
FlagpoleSitta::CommonFs.flagpole_cache_write(flag_key, flag)
|
184
|
-
end
|
185
160
|
end
|
186
161
|
|
187
162
|
end
|
@@ -224,10 +199,15 @@ module FlagpoleSitta
|
|
224
199
|
|
225
200
|
#AR - For Safety this will not recurse upwards for the extra cache maintenance
|
226
201
|
extra_cache_maintenance(alive)
|
227
|
-
rescue
|
202
|
+
rescue Exception => e
|
228
203
|
#Keep ending up with one of the array objects having a key of nil. Despite the fact that it would have to at least start with /view
|
229
204
|
#becuase of the way its set up in the helper. If that happens all bets are off and just clear everything.
|
230
205
|
Rails.cache.clear
|
206
|
+
Rails.logger.error("CACHE FAILURE @BEFORE STATE CHANGE CACHE IS BEING NUKED :: FLAGPOLE_SITTA")
|
207
|
+
Rails.logger.error(e.message)
|
208
|
+
e.backtrace.inspect.each do |b|
|
209
|
+
Rails.logger.error(b)
|
210
|
+
end
|
231
211
|
end
|
232
212
|
|
233
213
|
end
|
@@ -236,16 +216,26 @@ module FlagpoleSitta
|
|
236
216
|
#saved fits into any cache's scope. The above call to clear index caches is basically the object_was call, while this is just the call
|
237
217
|
#for the update object.
|
238
218
|
def post_cache_work
|
239
|
-
|
240
|
-
|
219
|
+
begin
|
220
|
+
original_clazz = self.class
|
221
|
+
cur_clazz = original_clazz
|
241
222
|
|
242
|
-
|
243
|
-
|
244
|
-
|
223
|
+
while(cur_clazz.respond_to? :destroy_array_cache)
|
224
|
+
# AR - Remember to include models_in_index in your helper call in the corresponding index cache.
|
225
|
+
cur_clazz.destroy_array_cache(:obj => self)
|
245
226
|
|
246
|
-
|
227
|
+
cur_clazz = cur_clazz.superclass
|
228
|
+
end
|
229
|
+
rescue Exception => e
|
230
|
+
#Keep ending up with one of the array objects having a key of nil. Despite the fact that it would have to at least start with /view
|
231
|
+
#becuase of the way its set up in the helper. If that happens all bets are off and just clear everything.
|
232
|
+
Rails.cache.clear
|
233
|
+
Rails.logger.error("CACHE FAILURE @AFTER_SAVE CACHE IS BEING NUKED :: FLAGPOLE_SITTA")
|
234
|
+
Rails.logger.error(e.message)
|
235
|
+
e.backtrace.inspect.each do |b|
|
236
|
+
Rails.logger.error(b)
|
237
|
+
end
|
247
238
|
end
|
248
|
-
|
249
239
|
end
|
250
240
|
|
251
241
|
#AR - For Safety this will not recurse upwards for the extra cache maintenance
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flagpole_sitta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 53
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 7
|
10
|
+
version: 0.9.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrew Rove (Rover)
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-10-01 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: dalli
|