logstash-filter-fingerprint 3.4.4 → 3.5.0
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/CHANGELOG.md +3 -0
- data/lib/logstash/filters/fingerprint.rb +20 -4
- data/logstash-filter-fingerprint.gemspec +1 -1
- data/spec/filters/fingerprint_spec.rb +1 -1
- metadata +11 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cab2034c16ba3a10e1e9c54f1c647e41656231297b12b8a0071aa2e2993f1c7b
|
|
4
|
+
data.tar.gz: abba4c27fe2388d5ee2f153f64b700ab92f8916804846e18d2b8b4a538f63bb3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 574c5ac68d60513c4b4ac55bd7f6c2a6a1c986fdfa6135c56ee551dcd7ac2a119cb08ac42e1636eb19414e1b91141c72849c775df09cb9ef8ad110de1bbb0583
|
|
7
|
+
data.tar.gz: f807ec6c96c7d239be51ecd6244f6ba57c4c322968e0055a2d3dbe7e1fccec3d0b8e102917dff2ae439a24fac4197c18b30a3255d1226ba566831ded2d303d46
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
## 3.5.0
|
|
2
|
+
- Fix fingerprint instability for Hash and Array field values caused by JRuby 10 changing `Hash#inspect` formatting [#79](https://github.com/logstash-plugins/logstash-filter-fingerprint/pull/79)
|
|
3
|
+
|
|
1
4
|
## 3.4.4
|
|
2
5
|
- Fix, eagerly load OpenSSL classes ot avoid uninitialized constant error [#76](https://github.com/logstash-plugins/logstash-filter-fingerprint/pull/76)
|
|
3
6
|
|
|
@@ -160,12 +160,12 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
|
|
160
160
|
if @concatenate_all_fields
|
|
161
161
|
deep_sort_hashes(event.to_hash).each do |k,v|
|
|
162
162
|
# Force encoding to UTF-8 to get around https://github.com/jruby/jruby/issues/6748
|
|
163
|
-
to_string << "|#{k}|#{v}".force_encoding("UTF-8")
|
|
163
|
+
to_string << "|#{k}|#{to_canonical_value(v)}".force_encoding("UTF-8")
|
|
164
164
|
end
|
|
165
165
|
else
|
|
166
166
|
@source.sort.each do |k|
|
|
167
167
|
# Force encoding to UTF-8 to get around https://github.com/jruby/jruby/issues/6748
|
|
168
|
-
to_string << "|#{k}|#{
|
|
168
|
+
to_string << "|#{k}|#{to_canonical_value(event.get(k))}".force_encoding("UTF-8")
|
|
169
169
|
end
|
|
170
170
|
end
|
|
171
171
|
to_string << "|"
|
|
@@ -175,9 +175,9 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
|
|
175
175
|
@source.each do |field|
|
|
176
176
|
next unless event.include?(field)
|
|
177
177
|
if event.get(field).is_a?(Array)
|
|
178
|
-
event.set(@target, event.get(field).collect { |v| fingerprint(
|
|
178
|
+
event.set(@target, event.get(field).collect { |v| fingerprint(to_canonical_value(v)) })
|
|
179
179
|
else
|
|
180
|
-
event.set(@target, fingerprint(
|
|
180
|
+
event.set(@target, fingerprint(to_canonical_value(event.get(field))))
|
|
181
181
|
end
|
|
182
182
|
end
|
|
183
183
|
end
|
|
@@ -201,6 +201,22 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
|
|
201
201
|
end
|
|
202
202
|
end
|
|
203
203
|
|
|
204
|
+
# Returns a canonical representation of the given object for fingerprinting.
|
|
205
|
+
# For Hashes and Arrays, produces a pipe-delimited string that is
|
|
206
|
+
# independent of Hash#inspect formatting (which changed in JRuby 10).
|
|
207
|
+
# Scalars pass through unchanged to preserve type-aware fingerprinting
|
|
208
|
+
# (e.g., MURMUR3 uses int64_hash for Integers vs str_hash for Strings).
|
|
209
|
+
def to_canonical_value(object)
|
|
210
|
+
case object
|
|
211
|
+
when Hash
|
|
212
|
+
object.sort.map { |k, v| "#{to_canonical_value(k)}|#{to_canonical_value(v)}" }.join("|")
|
|
213
|
+
when Array
|
|
214
|
+
object.map { |e| to_canonical_value(e) }.join("|")
|
|
215
|
+
else
|
|
216
|
+
object
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
204
220
|
def fingerprint_ipv4_network(ip_string)
|
|
205
221
|
# in JRuby 1.7.11 outputs as US-ASCII
|
|
206
222
|
IPAddr.new(ip_string).mask(@key.value.to_i).to_s.force_encoding(Encoding::UTF_8)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
|
|
3
3
|
s.name = 'logstash-filter-fingerprint'
|
|
4
|
-
s.version = '3.
|
|
4
|
+
s.version = '3.5.0'
|
|
5
5
|
s.licenses = ['Apache-2.0']
|
|
6
6
|
s.summary = "Fingerprints fields by replacing values with a consistent hash"
|
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
|
@@ -261,7 +261,7 @@ describe LogStash::Filters::Fingerprint, :ecs_compatibility_support, :aggregate_
|
|
|
261
261
|
let(:config) { super().merge("concatenate_sources" => true) }
|
|
262
262
|
it "fingerprints the value of concatenated key/pairs" do
|
|
263
263
|
# SHA1 of "|field1|inner_key|🂡|1|2|field2|🂡|"
|
|
264
|
-
expect(fingerprint).to eq("
|
|
264
|
+
expect(fingerprint).to eq("d2a1c14e0c9ef137d67114db23b3f2fdbcc90d08")
|
|
265
265
|
end
|
|
266
266
|
end
|
|
267
267
|
end
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-filter-fingerprint
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2026-03-31 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: logstash-core-plugin-api
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
@@ -19,9 +19,8 @@ dependencies:
|
|
|
19
19
|
- - "<="
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: '2.99'
|
|
22
|
-
name: logstash-core-plugin-api
|
|
23
|
-
prerelease: false
|
|
24
22
|
type: :runtime
|
|
23
|
+
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
25
|
requirements:
|
|
27
26
|
- - ">="
|
|
@@ -31,42 +30,42 @@ dependencies:
|
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
31
|
version: '2.99'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: murmurhash3
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
35
35
|
requirements:
|
|
36
36
|
- - '='
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
38
|
version: 0.1.6
|
|
39
|
-
name: murmurhash3
|
|
40
|
-
prerelease: false
|
|
41
39
|
type: :runtime
|
|
40
|
+
prerelease: false
|
|
42
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
42
|
requirements:
|
|
44
43
|
- - '='
|
|
45
44
|
- !ruby/object:Gem::Version
|
|
46
45
|
version: 0.1.6
|
|
47
46
|
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: logstash-devutils
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
49
49
|
requirements:
|
|
50
50
|
- - ">="
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
52
|
version: '0'
|
|
53
|
-
name: logstash-devutils
|
|
54
|
-
prerelease: false
|
|
55
53
|
type: :development
|
|
54
|
+
prerelease: false
|
|
56
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
56
|
requirements:
|
|
58
57
|
- - ">="
|
|
59
58
|
- !ruby/object:Gem::Version
|
|
60
59
|
version: '0'
|
|
61
60
|
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: logstash-mixin-ecs_compatibility_support
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
66
|
version: '1.2'
|
|
67
|
-
name: logstash-mixin-ecs_compatibility_support
|
|
68
|
-
prerelease: false
|
|
69
67
|
type: :runtime
|
|
68
|
+
prerelease: false
|
|
70
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
70
|
requirements:
|
|
72
71
|
- - "~>"
|
|
@@ -96,7 +95,6 @@ licenses:
|
|
|
96
95
|
metadata:
|
|
97
96
|
logstash_plugin: 'true'
|
|
98
97
|
logstash_group: filter
|
|
99
|
-
post_install_message:
|
|
100
98
|
rdoc_options: []
|
|
101
99
|
require_paths:
|
|
102
100
|
- lib
|
|
@@ -111,8 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
111
109
|
- !ruby/object:Gem::Version
|
|
112
110
|
version: '0'
|
|
113
111
|
requirements: []
|
|
114
|
-
rubygems_version: 3.
|
|
115
|
-
signing_key:
|
|
112
|
+
rubygems_version: 3.6.3
|
|
116
113
|
specification_version: 4
|
|
117
114
|
summary: Fingerprints fields by replacing values with a consistent hash
|
|
118
115
|
test_files:
|