logster 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3410af7ae9feb8efd0c52f4cb7c2867cccd7ea30
4
- data.tar.gz: f3c684edca2d1417fc999c7ab8cb449beddfccc1
3
+ metadata.gz: 484c833daa418abec6e50539b82a84bb07baf6d2
4
+ data.tar.gz: 28f4b8bdf0231275c386e618cabb1741e03ddf5e
5
5
  SHA512:
6
- metadata.gz: b07a76fbdd0e8d2ba64c9bbbd54f7ecad6e4e3fb113ce082daecd30aa13c56b8b12078c67c3b54bffd0e731b40e19465c142f045efedf6bc7b649291c864f1be
7
- data.tar.gz: 115e47a420bd7c69e49885651a555ab2a31eacaad1cbdce5ecf62add358360ad5a0535a017e52e1beee337b5d4ae59c2b0273c42f2dc47769d2254c256ed7299
6
+ metadata.gz: 2c1263387bcb227863dbc9a5fb9e0c8bf1beb07eeff85a70c08acdcf753bccfab6f33b17d61c948a6454c0f4921bafeef0750f127503bc86a734c366c684f2fc
7
+ data.tar.gz: 9c7fbb351f43a819138258c958c1850ff95a7f4ffb7c86c62c517dcd0990fd95efba3d0d98245b76a27b8bd1eea7f437920c8061f475d126646d5fb7a8ceba9e
data/README.md CHANGED
@@ -96,6 +96,10 @@ Logster UI is built using [Ember.js](http://emberjs.com/)
96
96
  5. Create a new Pull Request
97
97
 
98
98
  # CHANGELOG
99
+ - 2016-05-05: Version 1.2.3h
100
+ - Fix: clear_all now also clears rate limits
101
+ - Fix: protect against corrupt data in redis during clear
102
+
99
103
  - 2016-03-22: Version 1.2.2
100
104
  - Fix: Conflicting attributes and method name for `Logster::RedisStore#rate_limits`.
101
105
  - Fix: Rate limit checker was tracking limits too early. It should only track when a message has been bumped or saved.
@@ -8,6 +8,17 @@ module Logster
8
8
 
9
9
  attr_reader :duration, :callback
10
10
 
11
+ def self.clear_all(redis, redis_prefix=nil)
12
+ prefix = key_prefix(redis_prefix)
13
+
14
+ redis.eval "
15
+ local keys = redis.call('keys', '*#{prefix}*')
16
+ if (table.getn(keys) > 0) then
17
+ redis.call('del', unpack(keys))
18
+ end
19
+ "
20
+ end
21
+
11
22
  def initialize(redis, severities, limit, duration, redis_prefix = nil, callback = nil)
12
23
  @severities = severities
13
24
  @limit = limit
@@ -70,12 +81,17 @@ module Logster
70
81
 
71
82
  private
72
83
 
73
- def key_prefix
74
- if @redis_prefix
75
- "#{@redis_prefix.call}:#{PREFIX}"
84
+ def self.key_prefix(redis_prefix)
85
+ if redis_prefix
86
+ "#{redis_prefix.call}:#{PREFIX}"
76
87
  else
77
88
  PREFIX
78
89
  end
90
+
91
+ end
92
+
93
+ def key_prefix
94
+ self.class.key_prefix(@redis_prefix)
79
95
  end
80
96
 
81
97
  def mget_keys(bucket_num)
@@ -213,6 +229,7 @@ module Logster
213
229
  end
214
230
 
215
231
  def clear
232
+ RedisRateLimiter.clear_all(@redis)
216
233
  @redis.del(solved_key)
217
234
  @redis.del(list_key)
218
235
  keys = @redis.smembers(protected_key) || []
@@ -225,7 +242,10 @@ module Logster
225
242
 
226
243
  sorted = protected
227
244
  .values
228
- .map { |string| Message.from_json(string) }
245
+ .map { |string|
246
+ Message.from_json(string) rescue nil
247
+ }
248
+ .compact
229
249
  .sort
230
250
  .map(&:key)
231
251
 
@@ -1,3 +1,3 @@
1
1
  module Logster
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.3"
3
3
  end
@@ -12,6 +12,35 @@ class TestRedisRateLimiter < Minitest::Test
12
12
  Timecop.return
13
13
  end
14
14
 
15
+ def test_clear_all
16
+ called = 0
17
+
18
+ @redis.set("dont_nuke", "1")
19
+
20
+ @rate_limiter = Logster::RedisRateLimiter.new(
21
+ @redis, [Logger::WARN], 8, 60, Proc.new { "prefix" }, Proc.new { called += 1 }
22
+ )
23
+
24
+ 9.times do
25
+ @rate_limiter.check(Logger::WARN)
26
+ end
27
+
28
+ assert_equal 10, @rate_limiter.check(Logger::WARN)
29
+
30
+ Logster::RedisRateLimiter.clear_all(@redis, Proc.new { "prefix" })
31
+
32
+ assert_equal 1, @rate_limiter.check(Logger::WARN)
33
+
34
+ # also clears when prefix missing
35
+ Logster::RedisRateLimiter.clear_all(@redis)
36
+
37
+ assert_equal 1, @rate_limiter.check(Logger::WARN)
38
+
39
+ assert_equal "1", @redis.get("dont_nuke")
40
+ @redis.del("dont_nuke")
41
+
42
+ end
43
+
15
44
  def test_check
16
45
  time = Time.new(2015, 1, 1, 1, 1)
17
46
  Timecop.freeze(time)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - UI for viewing logs in Rack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-29 00:00:00.000000000 Z
11
+ date: 2016-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -216,4 +216,3 @@ test_files:
216
216
  - test/logster/test_redis_rate_limiter.rb
217
217
  - test/logster/test_redis_store.rb
218
218
  - test/test_helper.rb
219
- has_rdoc: