fluent-plugin-keep-forward 0.1.3 → 0.1.4
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 +6 -0
- data/fluent-plugin-keep-forward.gemspec +1 -1
- data/lib/fluent/plugin/out_keep_forward.rb +26 -28
- data/spec/out_keep_forward_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04dd9735323e7d372ac1de93fb8e68388adcb829
|
4
|
+
data.tar.gz: f5d686d0988c06a1872779d52942a87ac7e3c7dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 328e26c80f20cfbb506a6b777e7bdac47a927ae3280d24ccd351295941a91c67d48a20c4f5da5cd697ba05027a88723d8ef1ab41018fa7a9d974d5ef7e23ffc8
|
7
|
+
data.tar.gz: d732e0a855fd81d8b5536c2a7aaa9edf9b038e33f5234b0e0af8ccfd38e732c9f2f947b2f8ec205cc07db73f9f537c967a8a8711b3375b2102e5e91dca399845
|
data/CHANGELOG.md
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "fluent-plugin-keep-forward"
|
6
|
-
s.version = "0.1.
|
6
|
+
s.version = "0.1.4"
|
7
7
|
s.authors = ["Naotoshi Seo"]
|
8
8
|
s.email = ["sonots@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/sonots/fluent-plugin-keep-forward"
|
@@ -81,22 +81,16 @@ class Fluent::KeepForwardOutput < Fluent::ForwardOutput
|
|
81
81
|
send_data(node, tag, chunk)
|
82
82
|
return
|
83
83
|
rescue
|
84
|
-
|
85
|
-
cache_node(tag, node)
|
84
|
+
weight_send_data(tag, chunk)
|
86
85
|
end
|
87
86
|
else
|
88
|
-
|
89
|
-
cache_node(tag, node)
|
87
|
+
weight_send_data(tag, chunk)
|
90
88
|
end
|
91
89
|
end
|
92
90
|
|
93
|
-
def weight_send_data(tag, chunk
|
91
|
+
def weight_send_data(tag, chunk)
|
94
92
|
error = nil
|
95
93
|
|
96
|
-
if error_node
|
97
|
-
sock_close(error_node) if @keepalive and @keepforward == :one
|
98
|
-
end
|
99
|
-
|
100
94
|
wlen = @weight_array.length
|
101
95
|
wlen.times do
|
102
96
|
@rr = (@rr + 1) % wlen
|
@@ -105,7 +99,8 @@ class Fluent::KeepForwardOutput < Fluent::ForwardOutput
|
|
105
99
|
if node.available?
|
106
100
|
begin
|
107
101
|
send_data(node, tag, chunk)
|
108
|
-
|
102
|
+
cache_node(tag, node)
|
103
|
+
return
|
109
104
|
rescue
|
110
105
|
# for load balancing during detecting crashed servers
|
111
106
|
error = $! # use the latest error
|
@@ -123,8 +118,9 @@ class Fluent::KeepForwardOutput < Fluent::ForwardOutput
|
|
123
118
|
|
124
119
|
# Override for keepalive
|
125
120
|
def send_data(node, tag, chunk)
|
121
|
+
sock = nil
|
126
122
|
get_mutex(node).synchronize do
|
127
|
-
sock = get_sock[node]
|
123
|
+
sock = get_sock[node] if @keepalive
|
128
124
|
unless sock
|
129
125
|
sock = reconnect(node)
|
130
126
|
cache_sock(node, sock) if @keepalive
|
@@ -133,14 +129,18 @@ class Fluent::KeepForwardOutput < Fluent::ForwardOutput
|
|
133
129
|
begin
|
134
130
|
sock_write(sock, tag, chunk)
|
135
131
|
node.heartbeat(false)
|
132
|
+
log.debug "out_keep_forward: write to", :host=>node.host, :port=>node.port
|
136
133
|
rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNABORTED, Errno::ETIMEDOUT => e
|
137
|
-
log.warn "out_keep_forward: send_data failed #{e.class} #{e.message}
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
134
|
+
log.warn "out_keep_forward: send_data failed #{e.class} #{e.message}", :host=>node.host, :port=>node.port
|
135
|
+
if @keepalive
|
136
|
+
sock.close rescue IOError
|
137
|
+
cache_sock(node, nil)
|
138
|
+
end
|
139
|
+
raise e
|
142
140
|
ensure
|
143
|
-
|
141
|
+
unless @keepalive
|
142
|
+
sock.close if sock
|
143
|
+
end
|
144
144
|
end
|
145
145
|
end
|
146
146
|
end
|
@@ -193,21 +193,13 @@ class Fluent::KeepForwardOutput < Fluent::ForwardOutput
|
|
193
193
|
sock.close rescue IOError if sock
|
194
194
|
@sock[thread_id][node] = nil
|
195
195
|
@sock_expired_at[thread_id][node] = nil
|
196
|
+
log.debug "out_keep_forward: keepalive connection closed", :host=>node.host, :port=>node.port, :thread_id=>thread_id
|
196
197
|
end
|
197
198
|
end
|
198
199
|
end
|
199
200
|
end
|
200
201
|
end
|
201
202
|
|
202
|
-
def sock_close(node)
|
203
|
-
get_mutex(node).synchronize do
|
204
|
-
sock = get_sock[node]
|
205
|
-
sock.close rescue IOError if sock
|
206
|
-
get_sock[node] = nil
|
207
|
-
get_sock_expired_at[node] = nil
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
203
|
def get_mutex(node)
|
212
204
|
thread_id = Thread.current.object_id
|
213
205
|
@mutex[thread_id] ||= {}
|
@@ -215,8 +207,14 @@ class Fluent::KeepForwardOutput < Fluent::ForwardOutput
|
|
215
207
|
end
|
216
208
|
|
217
209
|
def cache_sock(node, sock)
|
218
|
-
|
219
|
-
|
210
|
+
if sock
|
211
|
+
get_sock[node] = sock
|
212
|
+
get_sock_expired_at[node] = Time.now + @keepalive_time if @keepalive_time
|
213
|
+
log.info "out_keep_forward: keepalive connection opened", :host=>node.host, :port=>node.port
|
214
|
+
else
|
215
|
+
get_sock[node] = nil
|
216
|
+
get_sock_expired_at[node] = nil
|
217
|
+
end
|
220
218
|
end
|
221
219
|
|
222
220
|
def get_sock
|
@@ -86,7 +86,7 @@ describe Fluent::KeepForwardOutput do
|
|
86
86
|
before { driver.should_receive(:send_data).with(keep_node, tag, chunk) }
|
87
87
|
end
|
88
88
|
it_should_behave_like 'error_occurs' do
|
89
|
-
before { driver.stub(:weight_send_data).with(tag, chunk
|
89
|
+
before { driver.stub(:weight_send_data).with(tag, chunk) } # re-call weight_send_data
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-keep-forward
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|