fluent-plugin-fork 0.1.0 → 0.1.1
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/.gitignore +1 -0
- data/.travis.yml +3 -0
- data/README.md +19 -3
- data/fluent-plugin-fork.gemspec +1 -1
- data/gemfiles/fluentd.0.10.42.gemfile +4 -0
- data/gemfiles/gemfile +3 -0
- data/lib/fluent/plugin/out_fork.rb +6 -3
- data/spec/plugin/out_fork_spec.rb +19 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc184ac71ede6fa2f8f6350c3f3a95b2eca661ec
|
4
|
+
data.tar.gz: 99a85b33ae597ef2e22ed94d4344970cb02b8118
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 880f9933eeac2a5b8e2ba7653ea06a933886b7ac433b4f61fe4a880ce0247003690b3c054846ac0a439c00188dde9ea9f8e285f7600fc3aa36ed6ec8708934aa
|
7
|
+
data.tar.gz: 2b1699aa72558bb271f44e7bbbdc31476259a777cd66fbadc6e7bed68189f7db5f8c9a385153fe5eb31937c64c3d8eac8cd48e70e6e44ca9bf4b08863c350e0e
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,24 @@
|
|
1
|
-
[](http://travis-ci.org/dtaniwaki/fluent-plugin-fork) [](https://coveralls.io/r/dtaniwaki/fluent-plugin-fork?branch=master)
|
2
|
-
|
3
1
|
# fluent-plugin-fork
|
4
2
|
|
5
|
-
|
3
|
+
[](https://rubygems.org/gems/fluent-plugin-fork) [](http://travis-ci.org/dtaniwaki/fluent-plugin-fork) [](https://coveralls.io/r/dtaniwaki/fluent-plugin-fork?branch=master)
|
4
|
+
|
5
|
+
Fork output by separating values for [fluentd](http://fluentd.org/).
|
6
|
+
|
7
|
+
### Example
|
8
|
+
|
9
|
+
You can fork the following data
|
10
|
+
|
11
|
+
```
|
12
|
+
{"id": "1", "key": "2", "segments": "1,2,3"}
|
13
|
+
```
|
14
|
+
|
15
|
+
to
|
16
|
+
|
17
|
+
```
|
18
|
+
{"id": "1", "key": "2", "segments": "1"}
|
19
|
+
{"id": "1", "key": "2", "segments": "2"}
|
20
|
+
{"id": "1", "key": "2", "segments": "3"}
|
21
|
+
```
|
6
22
|
|
7
23
|
# Installation
|
8
24
|
|
data/fluent-plugin-fork.gemspec
CHANGED
@@ -2,7 +2,7 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "fluent-plugin-fork"
|
5
|
-
gem.version = "0.1.
|
5
|
+
gem.version = "0.1.1"
|
6
6
|
gem.authors = ["Daisuke Taniwaki"]
|
7
7
|
gem.email = "daisuketaniwaki@gmail.com"
|
8
8
|
gem.homepage = "https://github.com/dtaniwaki/fluent-plugin-fork"
|
data/gemfiles/gemfile
ADDED
@@ -23,7 +23,7 @@ module Fluent
|
|
23
23
|
def configure(conf)
|
24
24
|
super
|
25
25
|
|
26
|
-
fallbacks = %w(drop log)
|
26
|
+
fallbacks = %w(skip drop log)
|
27
27
|
raise Fluent::ConfigError, "max_fallback must be one of #{fallbacks.inspect}" unless fallbacks.include?(@max_fallback)
|
28
28
|
end
|
29
29
|
|
@@ -42,6 +42,9 @@ module Fluent
|
|
42
42
|
|
43
43
|
if @max_size && @max_size < values.size
|
44
44
|
case @max_fallback
|
45
|
+
when 'skip'
|
46
|
+
log.warn "#{tag} - #{time}: Skip too many forked values (max=#{@max_size}) : #{org_value}"
|
47
|
+
next
|
45
48
|
when 'drop'
|
46
49
|
log.warn "#{tag} - #{time}: Drop too many forked values (max=#{@max_size}) : #{org_value}"
|
47
50
|
values = values.take(@max_size)
|
@@ -55,10 +58,10 @@ module Fluent
|
|
55
58
|
Engine.emit(@output_tag, time, record.reject{ |k, v| k == @fork_key }.merge(@output_key => value))
|
56
59
|
end
|
57
60
|
end
|
58
|
-
|
59
|
-
chain.next
|
60
61
|
rescue => e
|
61
62
|
log.error "#{e.message}: #{e.backtrace.join(', ')}"
|
63
|
+
ensure
|
64
|
+
chain.next
|
62
65
|
end
|
63
66
|
end
|
64
67
|
end
|
@@ -66,11 +66,21 @@ describe Fluent::ForkOutput do
|
|
66
66
|
expect(subject.emits).to include(["ot", time, {"ok" => "4"}])
|
67
67
|
end
|
68
68
|
it "forks with other params" do
|
69
|
-
subject.run { subject.emit({"sk" => "2,3,4,
|
70
|
-
expect(subject.emits.size).to eq(
|
69
|
+
subject.run { subject.emit({"sk" => "2,3,4,5", "o1" => 1, "o2" => 2}, time) }
|
70
|
+
expect(subject.emits.size).to eq(4)
|
71
71
|
expect(subject.emits).to include(["ot", time, {"ok" => "2", "o1" => 1, "o2" => 2}])
|
72
72
|
expect(subject.emits).to include(["ot", time, {"ok" => "3", "o1" => 1, "o2" => 2}])
|
73
73
|
expect(subject.emits).to include(["ot", time, {"ok" => "4", "o1" => 1, "o2" => 2}])
|
74
|
+
expect(subject.emits).to include(["ot", time, {"ok" => "5", "o1" => 1, "o2" => 2}])
|
75
|
+
end
|
76
|
+
it "does nothing for empty value" do
|
77
|
+
subject.run { subject.emit({"o1" => 1, "o2" => 2}, time) }
|
78
|
+
expect(subject.emits.size).to eq(0)
|
79
|
+
end
|
80
|
+
it "ignores exceptions and writes down the log" do
|
81
|
+
expect(subject.instance.log).to receive(:error).with(/^The error/)
|
82
|
+
allow_any_instance_of(String).to receive(:split).and_raise("The error")
|
83
|
+
subject.emit({"sk" => "2,3,4,5", "o1" => 1, "o2" => 2}, time)
|
74
84
|
end
|
75
85
|
context "with no_unique option" do
|
76
86
|
let(:params) { required_params.merge(no_unique: true) }
|
@@ -112,6 +122,13 @@ describe Fluent::ForkOutput do
|
|
112
122
|
expect(subject.emits).to include(["ot", time, {"ok" => "4"}])
|
113
123
|
end
|
114
124
|
end
|
125
|
+
describe "skip" do
|
126
|
+
let(:params) { required_params.merge(max_size: 3, max_fallback: 'skip') }
|
127
|
+
it "skip the values" do
|
128
|
+
subject.run { subject.emit({"sk" => "2,3,4,5"}, time) }
|
129
|
+
expect(subject.emits.size).to eq(0)
|
130
|
+
end
|
131
|
+
end
|
115
132
|
end
|
116
133
|
end
|
117
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-fork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daisuke Taniwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -79,6 +79,8 @@ files:
|
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
81
|
- fluent-plugin-fork.gemspec
|
82
|
+
- gemfiles/fluentd.0.10.42.gemfile
|
83
|
+
- gemfiles/gemfile
|
82
84
|
- lib/fluent/plugin/out_fork.rb
|
83
85
|
- spec/plugin/out_fork_spec.rb
|
84
86
|
- spec/spec_helper.rb
|