out_forward: do not use SO_LINGER on Windows#2398
Conversation
There is an obscure bug in out_forward that prevents events from being sent to a remote node. It occures only on Windows, and is reproducable only when SSL/TLS is enabled. The root cause is not fully investigated yet, but disabling SO_LINGER is confirmed to fix the issue. So this implements it. Signed-off-by: Fujimoto Seiji <fujimoto@clear-code.com>
|
Thanks! |
|
This fix is included in Fluentd 1.5.0 according to https://github.com/fluent/fluentd/blob/master/CHANGELOG.md. => When will an .msi package for Windows be available that includes this fix? (Say, newer than td-agent-3.4.1-0-x64.msi that is currently available on https://td-agent-package-browser.herokuapp.com/3/windows ) |
|
Next td-agent, 3.5.0, will be released late july or early august. |
Thanks a lot for your fast response. The following update worked for me: Download https://rubygems.org/downloads/fluentd-1.5.2-x64-mingw32.gem and install it with |
[The previous commit](7d16531) solved linger_timeout member types glitch. In the previous linger_timeout behavior is always occurring dropping data. But the fixing member type glitches, Fluentd can handle linger_timeout on Windows. This type glitch causes overflow and then linger_timeout should be 0. So, this is why specifying linger_timeout causes data loss on Windows. LIBC: { int l_onoff; int l_linger; } # I!I! Winsock: { u_short l_onoff; u_short l_linger; } #S!S! Really fixes for #1968. Reverted #2398 Signed-off-by: Hiroshi Hatake <hatake@clear-code.com>
Which issue(s) this PR fixes:
Fixes #1968
What this PR does / why we need it:
There is an obscure bug in out_forward that prevents events from
being sent to a remote node. It occures only on Windows, and is
reproducable only when SSL/TLS is enabled.
The root cause is not fully investigated yet, but disabling
SO_LINGER is confirmed to fix the issue. So this implements it.
Docs Changes:
Not required
Release Note:
"out_forward: fix data loss when SSL/TLS is enabled on Windows "