logster 1.2.2 → 1.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.
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: