fluent/fluentd · error · ArgumentError

BUG: send_keepalive_packet is available for tcp/tls

Error message

BUG: send_keepalive_packet is available for tcp/tls

What it means

Error "BUG: send_keepalive_packet is available for tcp/tls" thrown in fluent/fluentd.

Source

Thrown at lib/fluent/plugin_helper/socket_option.rb:42

      # ref: https://docs.microsoft.com/en-us/windows/win32/api/winsock/ns-winsock-linger
      FORMAT_STRUCT_LINGER_WINDOWS  = 'S!S!' # { u_short l_onoff; u_short l_linger; }
      FORMAT_STRUCT_LINGER  = 'I!I!' # { int l_onoff; int l_linger; }
      FORMAT_STRUCT_TIMEVAL = 'L!L!' # { time_t tv_sec; suseconds_t tv_usec; }

      def socket_option_validate!(protocol, resolve_name: nil, linger_timeout: nil, recv_timeout: nil, send_timeout: nil, receive_buffer_size: nil, send_keepalive_packet: nil)
        unless resolve_name.nil?
          if protocol != :tcp && protocol != :udp && protocol != :tls
            raise ArgumentError, "BUG: resolve_name in available for tcp/udp/tls"
          end
        end
        if linger_timeout
          if protocol != :tcp && protocol != :tls
            raise ArgumentError, "BUG: linger_timeout is available for tcp/tls"
          end
        end
        if send_keepalive_packet
          if protocol != :tcp && protocol != :tls
            raise ArgumentError, "BUG: send_keepalive_packet is available for tcp/tls"
          end
        end
      end

      def socket_option_set(sock, resolve_name: nil, nonblock: false, linger_timeout: nil, recv_timeout: nil, send_timeout: nil, receive_buffer_size: nil, send_keepalive_packet: nil)
        unless resolve_name.nil?
          sock.do_not_reverse_lookup = !resolve_name
        end
        if nonblock
          sock.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
        end
        if Fluent.windows?
          # To prevent closing socket forcibly on Windows,
          # this options shouldn't be set up when linger_timeout equals to 0 (including nil).
          # This unintended behavior always occurs on Windows when linger_timeout.to_i == 0.
          # This unintended behavior causes "Errno::ECONNRESET: An existing connection was forcibly
          # closed by the remote host." on Windows.
          if linger_timeout.to_i > 0

View on GitHub (pinned to dd45c6e18d)

When it happens

Trigger: Thrown at lib/fluent/plugin_helper/socket_option.rb:42 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of fluent/fluentd@dd45c6e18d (2026-08-21). Data as JSON: /api/errors/0eab3195b5a41f02. Report an issue: GitHub.