Fluentd v1.14.6 has been released

Hi users!

We have released v1.14.6. ChangeLog is here.

This release is a maintenance release of v1.14 series.

Enhancement

Enable server plugins to specify socket-option SO_LINGER

In this release, we add a new option linger_timeout to server plugin-helper so that we can specify SO_LINGER socket-option when using TCP or TLS server function of the helper.

The helper has used 0 for linger_timeout internally before. This made the connection closing immediate, and especially on non-Windows, this made the server send RST rather than FIN on the closing.

The main use of this option is to make the server send FIN on closing on non-Windows, by setting a positive value such as 1.

This new option is in transport section, and we can specify this for plugins using TCP or TLS server function of the helper, such as in_tcp, in_http, in_syslog, and in_forward.

<source>
  @type tcp
  ...
  <parse>
    ...
  </parse>
  <transport tcp>
    linger_timeout 1
  </transport>
</source>

Note: in_forward plugin had linger_timeout option before, but the option is now deprecated and unified to transport section.

See #3644 for more information.

Add --umask to fluentd command line parameter

When we launch Fluentd with --no-supervisor, the umask value of the environment is not applied because Fluentd overwrites the value.

In this release, We can use --umask option as a fluentd command line parameter to specify the umask value in the case of launching Fluentd with --no-supervisor.

$ fluentd -c {config_path} --no-supervisor --umask 002

See #3671, #3679 for more information.

Bug Fixes

Fix wrong calculation of retry count and interval

There were mistakes in the calculation about exponential_backoff retry_type.

In this release, the calculation is fixed, and the count and the interval change as following.

Count

  • Before: At most retry_max_times + 1 retries were triggered.
  • This Release: At most retry_max_times retries are triggered.

Interval

  • Before: By default, n-th retry was triggered after 2^(n-1) seconds elapsed since the first time.
  • This Release: By default, n-th retry is triggered after 2^(n-1) seconds elapsed since the last time.

When to switch to secondary

  • Before: The total time calculation was wrong. Although retry_max_times + 1 retries were mistakenly triggered, retry_secondary_threshold was applied to the total time to the (retry_max_times)-th retry. So switching to secondary occurred earlier than the correct time.
  • This Release: retry_secondary_threshold is correctly applied to the total retry time.

The examples of retry_max_times: 10 are as follows. (Set retry_randomize: false for testing.)

Only primary output

N-th retry   Elapsed (Before)   Elapsed (This Release)
1th 1s 1s
2th 2s 3s
3th 4s 7s
4th 8s 15s
5th 16s 31s
6th 32s 63s
7th 64s 127s
8th 128s 255s
9th 256s 511s
10th 512s 1023s
11th 1024s None


With secondary output

N-th retry   Elapsed (Before)   Elapsed (This Release)
1th 1s 1s
2th 2s 3s
3th 4s 7s
4th 8s 15s
5th 16s 31s
6th 32s 63s
7th 64s 127s
8th 128s 255s
9th 256s 511s
10th (SEC) 409s (SEC) 818s
11th (SEC) 410s None


See #3649 for more information.

Apply modifications to the records being passed to @ERROR label

Filter plugins such as filter_record_transformer can modify the contents of records before the output.

If an error occurred in Output plugin such that records were passed to @ERROR label, those modifications were not applied to those records being passed.

In this release, records reflecting those modifications are now passed to @ERROR label.

See #3631 for more information.

Miscellaneous fixes

  • Support IPv6 address for rpc_endpoint in system config. #3641.
  • Fix some typo of metric names. #3630, #3673.
  • Declare null_value_pattern as regexp. #3650.
  • CI: Support Ruby 3.1 except Windows. #3619.
  • Fix CHANGELOG.md heading styles. #3648.
  • Switch to GitHub Discussions. #3654.

Enjoy logging!

Subscribed to the RSS feed here.

Written by ClearCode, Inc.

ClearCode, Inc. is a software company specializing in the development of Free Software. We maintain Fluentd and its plugin ecosystem, and provide commercial support for them.