Logstash fails to run: ES_TEMPDIR does not get translated properly?

logstash7-7.10.0

openjdk15-15.0.1

Attempt to run logstash fails with

    # su -m logstash -c 'sh -c "env JAVA_HOME=/usr/local/openjdk15 /usr/local/logstash/bin/logstash --path.settings /usr/local/etc/logstash  -l /var/log/logstash "'
    Using JAVA_HOME defined java: /usr/local/openjdk15
    /usr/local/logstash/logstash-core-plugin-api/lib/logstash-core-plugin-api/version.rb:22: warning: The Psych YAML extension failed to load.
    Check your env for conflicting versions of SnakeYAML
    See https://github.com/jruby/jruby/wiki/FAQs#why-does-the-psych-yaml-extension-fail-to-load-in-my-environment
    [ERROR] 2021-01-07 16:07:10.855 [main] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (GemspecError)
    [!] There was an error while loading `logstash-core-plugin-api.gemspec`: load error: psych -- java.lang.RuntimeException: BUG: we can not copy embedded jar to temp directory
    Does it try to require a relative path? That's been removed in Ruby 1.9. Bundler cannot continue.
 #  from /usr/local/logstash/logstash-core-plugin-api/logstash-core-plugin-api.gemspec:23
 #  -------------------------------------------
 #
 >  require "logstash-core-plugin-api/version"
 #
 #  -------------------------------------------

SnakeYAML is 1.26. Attempt to remove extra space from pipelines.yml did not help.

Using truss, I've found some suspicious lines like

    17064: pathconf("${ES_TMPDIR}",_PC_NAME_MAX)     ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"${ES_TMPDIR}/jffi4638725274615882586.so",0x7fffdfffa290,0x0) ERR#2 'No such file or directory'
    17064: openat(AT_FDCWD,"${ES_TMPDIR}/jffi4638725274615882586.so",O_RDWR|O_CREAT|O_EXCL,0666) ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"/usr/local/logstash/${ES_TMPDIR}",0x7fffdfff8120,0x0) ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"${ES_TMPDIR}/jruby-17064",0x7fffdffec3d0,0x0) ERR#2 'No such file or directory'
    17064: mkdir("${ES_TMPDIR}/jruby-17064",0777)    ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"/usr/local/logstash/${ES_TMPDIR}",0x7fffdffeba70,AT_SYMLINK_NOFOLLOW) ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"/usr/local/logstash/${ES_TMPDIR}",0x7fffdffeba70,AT_SYMLINK_NOFOLLOW) ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"/usr/local/logstash/${ES_TMPDIR}",0x7fffdffec360,0x0) ERR#2 'No such file or directory'
    17064: mkdir("/usr/local/logstash/${ES_TMPDIR}",0777) ERR#13 'Permission denied'
    17064: fstatat(AT_FDCWD,"/usr/local/logstash/${ES_TMPDIR}",0x7fffdffeba00,AT_SYMLINK_NOFOLLOW) ERR#2 'No such file or directory'
    17064: mkdir("/usr/local/logstash/${ES_TMPDIR}",0777) ERR#13 'Permission denied'
    17064: fstatat(AT_FDCWD,"/usr/local/logstash/${ES_TMPDIR}",0x7fffdffec3d0,0x0) ERR#2 'No such file or directory'
    17064: pathconf("${ES_TMPDIR}/jruby-17064",_PC_NAME_MAX) ERR#2 'No such file or directory'
    17064: fstatat(AT_FDCWD,"${ES_TMPDIR}/jruby-17064/jruby13431870033481296246psych.jar",0x7fffdffec400,0x0) ERR#2 'No such file or directory'
    17064: openat(AT_FDCWD,"${ES_TMPDIR}/jruby-17064/jruby13431870033481296246psych.jar",O_RDWR|O_CREAT|O_EXCL,0666) ERR#2 'No such file or directory'

Looks like somewhere ES_TEMPDIR does not get translated properly?

logstash does not support Java 15.

Same error on openjdk11 - looks like it fires long before any compatibility issues

#  su -m logstash -c 'sh -c "env JAVA_HOME=/usr/local/openjdk11 /usr/local/logstash/bin/logstash --path.settings /usr/local/etc/logstash  -l /var/log/logstash "'      Using JAVA_HOME defined java: /usr/local/openjdk11
/usr/local/logstash/logstash-core-plugin-api/lib/logstash-core-plugin-api/version.rb:22: warning: The Psych YAML extension failed to load.
Check your env for conflicting versions of SnakeYAML
See https://github.com/jruby/jruby/wiki/FAQs#why-does-the-psych-yaml-extension-fail-to-load-in-my-environment
[ERROR] 2021-01-07 19:14:35.946 [main] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (GemspecError)
[!] There was an error while loading `logstash-core-plugin-api.gemspec`: load error: psych -- java.lang.RuntimeException: BUG: we can not copy embedded jar to temp directory
Does it try to require a relative path? That's been removed in Ruby 1.9. Bundler cannot continue.

 #  from /usr/local/logstash/logstash-core-plugin-api/logstash-core-plugin-api.gemspec:23
 #  -------------------------------------------
 #
 >  require "logstash-core-plugin-api/version"
 #
 #  -------------------------------------------

Whoops! It seems to be a problem in my jvm.options. Sorry. The grep almighty really helps

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.