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 +4 -4
- data/README.md +4 -0
- data/lib/logster/redis_store.rb +24 -4
- data/lib/logster/version.rb +1 -1
- data/test/logster/test_redis_rate_limiter.rb +29 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 484c833daa418abec6e50539b82a84bb07baf6d2
|
4
|
+
data.tar.gz: 28f4b8bdf0231275c386e618cabb1741e03ddf5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
data/lib/logster/redis_store.rb
CHANGED
@@ -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
|
75
|
-
"#{
|
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|
|
245
|
+
.map { |string|
|
246
|
+
Message.from_json(string) rescue nil
|
247
|
+
}
|
248
|
+
.compact
|
229
249
|
.sort
|
230
250
|
.map(&:key)
|
231
251
|
|
data/lib/logster/version.rb
CHANGED
@@ -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.
|
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-
|
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:
|