logstash-filter-translate 3.3.1 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/logstash/filters/dictionary/file.rb +5 -21
- data/lib/logstash/filters/translate.rb +7 -4
- data/logstash-filter-translate.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f628dd5414571a8ad48ac804294f9404b4eaa460457e15955824d8a2ff5b6809
|
4
|
+
data.tar.gz: 6e762d49f1030f379fb5033c75c177f4eca134672bb446a27bb7c69821858f03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8a2a50b3668fa320d10587fd903d0a47a84b5cb0416876aea7ebdfad73a0692379c4e34b60aaa3b49a6297a7deb418ce87bbcc40947a85c673af549b00bc358
|
7
|
+
data.tar.gz: bc28c2a3e20d1b8f2b5d3c713978e32e5fee1ed2ea95d74af446f5a686096ee6ae7e179cf828aba5c2857f187a1449b61ab22e0d19e16fbaf5e1c8e540971471
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 3.4.0
|
2
|
+
- Refactor: leverage scheduler mixin [#93](https://github.com/logstash-plugins/logstash-filter-translate/pull/93)
|
3
|
+
|
1
4
|
## 3.3.1
|
2
5
|
- Refactor: reading .csv for JRuby 9.3 compatibility [#94](https://github.com/logstash-plugins/logstash-filter-translate/pull/94)
|
3
6
|
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'concurrent/atomic/atomic_boolean'
|
3
|
-
require 'rufus-scheduler'
|
4
2
|
require "logstash/util/loggable"
|
5
3
|
require "logstash/filters/fetch_strategy/file"
|
6
4
|
|
7
|
-
java_import 'java.util.concurrent.locks.ReentrantReadWriteLock'
|
8
|
-
|
9
5
|
module LogStash module Filters module Dictionary
|
10
6
|
class DictionaryFileError < StandardError; end
|
11
7
|
|
12
8
|
class File
|
9
|
+
|
10
|
+
include LogStash::Util::Loggable
|
11
|
+
|
13
12
|
def self.create(path, refresh_interval, refresh_behaviour, exact, regex)
|
14
13
|
if /\.y[a]?ml$/.match(path)
|
15
14
|
instance = YamlFile.new(path, refresh_interval, exact, regex)
|
@@ -30,14 +29,12 @@ module LogStash module Filters module Dictionary
|
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
33
|
-
include LogStash::Util::Loggable
|
34
32
|
attr_reader :dictionary, :fetch_strategy
|
35
33
|
|
36
34
|
def initialize(path, refresh_interval, exact, regex)
|
37
35
|
@dictionary_path = path
|
38
36
|
@refresh_interval = refresh_interval
|
39
37
|
@short_refresh = @refresh_interval <= 300
|
40
|
-
@stopping = Concurrent::AtomicBoolean.new # ported from jdbc_static, need a way to prevent a scheduled execution from running a load.
|
41
38
|
rw_lock = java.util.concurrent.locks.ReentrantReadWriteLock.new
|
42
39
|
@write_lock = rw_lock.writeLock
|
43
40
|
@dictionary = Hash.new
|
@@ -51,13 +48,6 @@ module LogStash module Filters module Dictionary
|
|
51
48
|
end
|
52
49
|
@fetch_strategy = klass.new(*args)
|
53
50
|
load_dictionary(raise_exception = true)
|
54
|
-
stop_scheduler(initial = true)
|
55
|
-
start_scheduler unless @refresh_interval <= 0 # disabled, a scheduler interval of zero makes no sense
|
56
|
-
end
|
57
|
-
|
58
|
-
def stop_scheduler(initial = false)
|
59
|
-
@stopping.make_true unless initial
|
60
|
-
@scheduler.shutdown(:wait) if @scheduler
|
61
51
|
end
|
62
52
|
|
63
53
|
def load_dictionary(raise_exception=false)
|
@@ -88,13 +78,6 @@ module LogStash module Filters module Dictionary
|
|
88
78
|
|
89
79
|
private
|
90
80
|
|
91
|
-
def start_scheduler
|
92
|
-
@scheduler = Rufus::Scheduler.new
|
93
|
-
@scheduler.interval("#{@refresh_interval}s", :overlap => false) do
|
94
|
-
reload_dictionary
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
81
|
def merge_dictionary
|
99
82
|
@write_lock.lock
|
100
83
|
begin
|
@@ -116,14 +99,15 @@ module LogStash module Filters module Dictionary
|
|
116
99
|
end
|
117
100
|
end
|
118
101
|
|
102
|
+
# scheduler executes this method, periodically
|
119
103
|
def reload_dictionary
|
120
|
-
return if @stopping.true?
|
121
104
|
if @short_refresh
|
122
105
|
load_dictionary if needs_refresh?
|
123
106
|
else
|
124
107
|
load_dictionary
|
125
108
|
end
|
126
109
|
end
|
110
|
+
public :reload_dictionary
|
127
111
|
|
128
112
|
def needs_refresh?
|
129
113
|
@dictionary_mtime != ::File.mtime(@dictionary_path).to_f
|
@@ -4,6 +4,7 @@ require "logstash/namespace"
|
|
4
4
|
require 'logstash/plugin_mixins/ecs_compatibility_support'
|
5
5
|
require 'logstash/plugin_mixins/validator_support/field_reference_validation_adapter'
|
6
6
|
require 'logstash/plugin_mixins/deprecation_logger_support'
|
7
|
+
require 'logstash/plugin_mixins/scheduler'
|
7
8
|
|
8
9
|
require "logstash/filters/dictionary/memory"
|
9
10
|
require "logstash/filters/dictionary/file"
|
@@ -44,6 +45,8 @@ class Translate < LogStash::Filters::Base
|
|
44
45
|
|
45
46
|
extend LogStash::PluginMixins::ValidatorSupport::FieldReferenceValidationAdapter
|
46
47
|
|
48
|
+
include LogStash::PluginMixins::Scheduler
|
49
|
+
|
47
50
|
config_name "translate"
|
48
51
|
|
49
52
|
# The name of the logstash event field containing the value to be compared for a
|
@@ -228,11 +231,11 @@ class Translate < LogStash::Filters::Base
|
|
228
231
|
else
|
229
232
|
@logger.debug? && @logger.debug("#{self.class.name}: Dictionary translation method - Fuzzy")
|
230
233
|
end
|
231
|
-
end # def register
|
232
234
|
|
233
|
-
|
234
|
-
|
235
|
-
|
235
|
+
if @lookup.respond_to?(:reload_dictionary) && @refresh_interval > 0 # a scheduler interval of zero makes no sense
|
236
|
+
scheduler.interval("#{@refresh_interval}s", overlap: false) { @lookup.reload_dictionary }
|
237
|
+
end
|
238
|
+
end # def register
|
236
239
|
|
237
240
|
def filter(event)
|
238
241
|
return unless @updater.test_for_inclusion(event, @override)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-filter-translate'
|
4
|
-
s.version = '3.
|
4
|
+
s.version = '3.4.0'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Replaces field contents based on a hash or YAML file"
|
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"
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency 'logstash-mixin-ecs_compatibility_support', '~> 1.2'
|
25
25
|
s.add_runtime_dependency 'logstash-mixin-validator_support', '~> 1.0'
|
26
26
|
s.add_runtime_dependency 'logstash-mixin-deprecation_logger_support', '~> 1.0'
|
27
|
-
s.add_runtime_dependency
|
27
|
+
s.add_runtime_dependency "logstash-mixin-scheduler", '~> 1.0'
|
28
28
|
|
29
29
|
s.add_development_dependency 'logstash-devutils'
|
30
30
|
s.add_development_dependency 'rspec-sequencing'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-translate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
@@ -75,17 +75,17 @@ dependencies:
|
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
|
-
- - "
|
78
|
+
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version: '0'
|
81
|
-
name:
|
80
|
+
version: '1.0'
|
81
|
+
name: logstash-mixin-scheduler
|
82
82
|
prerelease: false
|
83
83
|
type: :runtime
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
88
|
+
version: '1.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|