Describe the bug
In YAML syntax, a single int value for an array option causes a config error.
Found in the following fix.
Note: This PR doesn't address the issue where setting an Int directly to an Array option causes ConfigError: retryable_response_codes: 503 (The C case in #5126 (comment))
It could be a different issue.
The current behavior is inconsistent and somewhat unnatural.
Unnatural current behavior:
- An error occurs only when a single int value is specified for an array option.
- It can be avoided by setting it as a String.
- There’s no such issue with options that are initially String arrays.
- There’s no such issue with the normal config syntax.
To Reproduce
NG(Causes config error file="..." error_class=Fluent::ConfigError error="array required but got 503"):
config:
- match:
$type: http
$tag: test
endpoint: http://localhost:9880/tag
retryable_response_codes: 503
OK as YAML syntax:
config:
- match:
$type: http
$tag: test
endpoint: http://localhost:9880/tag
retryable_response_codes: "503"
config:
- match:
$type: http
$tag: test
endpoint: http://localhost:9880/tag
retryable_response_codes: 503,
OK as normal syntax:
<match test>
@type http
endpoint "http://localhost:9880/tag"
retryable_response_codes 503
</match>
OK as YAML syntax since v1.19.1 (after #5126):
config:
- match:
$type: http
$tag: test
endpoint: http://localhost:9880/tag
retryable_response_codes: [503]
config:
- match:
$type: http
$tag: test
endpoint: http://localhost:9880/tag
retryable_response_codes:
- 503
Please also refer to the C case in #5126 (comment).
Expected behavior
Fluentd can parse a single int value for an array option, such as the following:
config:
- match:
$type: http
$tag: test
endpoint: http://localhost:9880/tag
retryable_response_codes: 503
Your Environment
- Fluentd version: v1.19.1
- Package version: None
- Operating system: Ubuntu 22.04.5 LTS
- Kernel version: 6.8.0-85-generic
Your Configuration
Your Error Log
2025-11-11 14:27:25 +0900 [info]: init supervisor logger path=nil rotate_age=nil rotate_size=nil
2025-11-11 14:27:25 +0900 [info]: parsing config file is succeeded path="/test/fluentd/config/yaml/tmp.yaml"
2025-11-11 14:27:25 +0900 [info]: inaccessible include directory was specified path="/etc/fluent/conf.d"
2025-11-11 14:27:25 +0900 [info]: gem 'fluentd' version '1.19.1'
2025-11-11 14:27:25 +0900 [error]: config error in:
<match test>
@type http
endpoint "http://localhost:9880/tag"
retryable_response_codes 503
</match>
2025-11-11 14:27:25 +0900 [error]: config error file="/test/fluentd/config/yaml/tmp.yaml" error_class=Fluent::ConfigError error="array required but got 503"
Additional context
No response
Describe the bug
In YAML syntax, a single int value for an array option causes a config error.
Found in the following fix.
The current behavior is inconsistent and somewhat unnatural.
Unnatural current behavior:
To Reproduce
NG(Causes
config error file="..." error_class=Fluent::ConfigError error="array required but got 503"):OK as YAML syntax:
OK as normal syntax:
OK as YAML syntax since v1.19.1 (after #5126):
Please also refer to the
Ccase in #5126 (comment).Expected behavior
Fluentd can parse a single int value for an array option, such as the following:
Your Environment
Your Configuration
Your Error Log
Additional context
No response