logstash-plugins / logstash-input-s3

Apache License 2.0
57 stars 150 forks source link

logstash-input-s3 3.6.0 restarting due to unrecoverable error with CipherSuites array issue #225

Open PadaKwaak opened 3 years ago

PadaKwaak commented 3 years ago

When upgrading from the 3.5.0 to 3.6.0 version of the logstash-input-s3 plugin, my pipeline crashes.

I have tried multiple versions of official logstash docker images, and they all do the same:

Using the below Dockerfile, which updates logstash-input-s3 from 3.5.0 to 3.6.0:

FROM logstash:7.12.0

RUN /opt/logstash/bin/logstash-plugin update logstash-input-s3

Input filter config:

input {

    s3 {
        id => "my-pipeline-id"
        aws_credentials_file => "/usr/share/logstash/.aws/custom-credentials"
        sincedb_path => "/opt/logstash/data/plugins/inputs/s3/sincedb_file1"

        region => "us-east-1"
        bucket => "my-bucket"
        prefix => "myprefix/2021/04/12/"

        interval => 30
        additional_settings => {
          force_path_style => true
          follow_redirects => false
        }

        codec => json
    }
}

The stack trace starts with:

Error: The specified CipherSuites array contains invalid null or empty string elements
  Exception: Java::JavaLang::IllegalArgumentException
  Stack: java.base/sun.security.ssl.CipherSuite.validValuesOf(CipherSuite.java:895)
java.base/sun.security.ssl.SSLEngineImpl.setEnabledCipherSuites(SSLEngineImpl.java:776)
org.jruby.ext.openssl.SSLContext.createSSLEngine(SSLContext.java:687)
org.jruby.ext.openssl.SSLSocket.ossl_ssl_setup(SSLSocket.java:220)
org.jruby.ext.openssl.SSLSocket.connectImpl(SSLSocket.java:286)
org.jruby.ext.openssl.SSLSocket.connect_nonblock(SSLSocket.java:275)
org.jruby.ext.openssl.SSLSocket$INVOKER$i$connect_nonblock.call(SSLSocket$INVOKER$i$connect_nonblock.gen)
org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:833)
org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:207)
uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.net.protocol.RUBY$method$ssl_socket_connect$0(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/protocol.rb:44)

See logstash-input-s3.log for the full log output.

kaisecheng commented 3 years ago

It is likely an issue caused by jruby-openssl 0.10.6. When you update the plugin, the dependency is updated from 0.10.5 to 0.10.6. The workaround is to pin the Gemfile.lock to jruby-openssl (0.10.5-java)