Bump jruby 10.0 logstash 8.19 - #19291
Conversation
🤖 GitHub commentsJust comment with:
|
|
💚 CLA has been signed |
|
This pull request does not have a backport label. Could you fix it @andsel? 🙏
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
run exhaustive tests |
TL;DRAll 10 jobs in exhaustive build 4100 fail before acceptance tests at Remediation
Investigation detailsRoot CauseInconclusive from the captured logs. Every OS variant reaches Evidence
VerificationNo repository tests were run because compilation fails before tests start and the retained artifacts do not contain enough diagnostic detail to reproduce or attribute the failure. No matching open issue labeled What is this? | From workflow: PR Buildkite Detective Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not. |
1078e7f to
a305de1
Compare
|
run exhaustive tests |
a305de1 to
620edad
Compare
|
The vulnerability check failure https://github.com/elastic/logstash/actions/runs/29907347910/job/88881842211?pr=19291 due to GHSA-574f-3g2m-x479 which is critical . It's related to Bouncy Castle and GOST 28147 which, to my knowledge Logstash doesn't use. However, this PR includes 2 bcprov-jdk18on : ./vendor/bundle/jruby/3.4.0/gems/jruby-openssl-0.16.1-java/lib/org/bouncycastle/bcprov-jdk18on/1.84/bcprov-jdk18on-1.84.jar
./vendor/jruby/lib/ruby/stdlib/org/bouncycastle/bcprov-jdk18on/1.81/bcprov-jdk18on-1.81.jarSo Logstash override the one bundled with JRuby forcing With subsequent update to JRuby 10.0.6 (which bundled |
Move Logstash from JRuby 9.4 / Ruby 3.1 to JRuby 10.0.3.0 / Ruby 3.4. Adjust the runtime integration for the new JRuby APIs: - update Java/Ruby bridge code for events, timestamps, codecs, metrics, queues, and pipeline execution - align logging and monitoring behavior with the new runtime - update packaged runtime paths and Ruby 3.4 stdlib gem dependencies Fix bootstrap and plugin-management flows affected by the upgrade: - patch Bundler self-manager behavior in the embedded environment - ensure QA and plugin install paths apply the same Bundler patching - keep offline pack and packaged install workflows working Refresh tests for the changed integration points so startup, plugin management, and operational APIs continue to work after the runtime upgrade.
… else Bundler would select 0.12.5
* Update jruby to 10.0.6.0 * Update array instantiation to new pattern
5ac1cff to
5e6bbc9
Compare
There was a problem hiding this comment.
Pull request overview
This PR upgrades Logstash 8.19’s bundled JRuby to 10.0.6.0 and updates the surrounding Java/Ruby integration code, gem/bundler packaging, licensing artifacts, and CI configuration to stay compatible with JRuby 10 / Ruby 3.4 semantics.
Changes:
- Bump bundled JRuby and shift vendored Ruby ABI paths from
jruby/3.1.0tojruby/3.4.0, including updated lockfiles and gem dependencies. - Update JRuby-extension Java code and tests to use JRuby 10 APIs (
ThreadContext-aware calls,Create/Convert/Define/Accesshelpers, numeric conversions, etc.). - Refresh NOTICE/licensing resources and adjust CI/build scripts (notably defaulting CI Java tooling to JDK 21 in several places).
Reviewed changes
Copilot reviewed 100 out of 104 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| x-pack/lib/filters/geoip/database_manager.rb | Replace deprecated exists? call |
| versions.yml | Bump JRuby version + sha256 |
| tools/release/bump_plugin_versions.rb | Use Gemfile.jruby-3.4.lock.release |
| tools/dependencies-report/src/main/resources/notices/tempfile-NOTICE.txt | Add license notice |
| tools/dependencies-report/src/main/resources/notices/syslog-NOTICE.txt | Add license notice |
| tools/dependencies-report/src/main/resources/notices/syntax_suggest-NOTICE.txt | Add license notice |
| tools/dependencies-report/src/main/resources/notices/resolv-NOTICE.txt | Add license notice |
| tools/dependencies-report/src/main/resources/licenseMapping.csv | Map new gem licenses |
| spec/unit/bootstrap/bundler_spec.rb | Add bundler self-manager test; update fetcher error type |
| rubyUtils.gradle | QA bundling uses LogStash bundler patch; update gem dir |
| qa/integration/specs/plugin_name_log_spec.rb | Relax log regex for spacing changes |
| qa/integration/specs/pipeline_log_spec.rb | Make log regex whitespace/format tolerant |
| qa/integration/specs/monitoring_api_spec.rb | Adjust logger expectations; skip license reader |
| qa/integration/specs/mixed_codec_spec.rb | Adjust timing/log assertions for fast exit |
| qa/integration/specs/fatal_error_spec.rb | Escape dots and allow whitespace in log regex |
| qa/integration/specs/direct_heap_allocator_flag_spec.rb | Relax parsing regex for memory dump logs |
| qa/integration/specs/deprecation_log_spec.rb | Escape dots and allow whitespace in deprecation logs |
| qa/integration/rspec.rb | Update GEM_HOME path to jruby/3.4.0 |
| qa/integration/integration_tests.gemspec | Add bigdecimal dev dependency |
| qa/integration/fixtures/plugins/generate-gems.sh | Prefer vendored JRuby; clear GEM_* env |
| qa/Gemfile | Add base64 gem |
| qa/docker/shared_examples/xpack.rb | Update expected log output format |
| NOTICE.TXT | Regenerated NOTICE to match new deps |
| logstash-core/src/test/java/org/logstash/ValuefierTest.java | Update Java proxy class API usage |
| logstash-core/src/test/java/org/logstash/RubyfierTest.java | ThreadContext-aware conversions; BigDecimal changes |
| logstash-core/src/test/java/org/logstash/plugins/MetricTestCase.java | Use Create + context-aware intern/asLong |
| logstash-core/src/test/java/org/logstash/plugins/factory/PluginFactoryExtTest.java | Use Create.newEmptyArray |
| logstash-core/src/test/java/org/logstash/log/RubyBasicObjectSerializerTest.java | Context-aware RubyArray operations |
| logstash-core/src/test/java/org/logstash/instrument/metrics/MetricExtFactory.java | Context-aware intern |
| logstash-core/src/test/java/org/logstash/instrument/metrics/gauge/ListGaugeTest.java | Update expected JRuby 10 hash formatting |
| logstash-core/src/test/java/org/logstash/ext/JrubyTimestampExtLibraryTest.java | Context-aware numeric conversions; time ctor |
| logstash-core/src/test/java/org/logstash/execution/ObservedExecutionTest.java | Use Create.newArray for namespace array |
| logstash-core/src/test/java/org/logstash/EventTest.java | Context-aware substr call |
| logstash-core/src/test/java/org/logstash/config/ir/RubyEnvTestCase.java | Update jruby bundle path to 3.4.0 |
| logstash-core/src/test/java/org/logstash/config/ir/PluginConfigNameMethodDouble.java | Use Define and context-aware defineMethods |
| logstash-core/src/test/java/org/logstash/config/ir/PipelineConfigTest.java | Use Access/Create and context-aware intern |
| logstash-core/src/test/java/org/logstash/config/ir/IRHelpers.java | Use Create.newArray for SWM arrays |
| logstash-core/src/test/java/org/logstash/config/ir/EventConditionTest.java | Use Create.newArray for batches |
| logstash-core/src/test/java/org/logstash/config/ir/compiler/PluginDelegatorTestCase.java | Context-aware intern/asLong; Create.allocArray |
| logstash-core/src/test/java/org/logstash/config/ir/compiler/OutputDelegatorTest.java | Define/Create updates for JRuby 10 |
| logstash-core/src/test/java/org/logstash/config/ir/compiler/DatasetCompilerTest.java | Use Create.newArray for batches |
| logstash-core/src/test/java/org/logstash/config/ir/CompiledPipelineTest.java | Use Create and shared ThreadContext |
| logstash-core/src/main/java/org/logstash/util/UtilExt.java | RaiseException-based type errors (JRuby 10) |
| logstash-core/src/main/java/org/logstash/RubyUtil.java | Switch to JRuby 10 Define/context-aware defineMethods |
| logstash-core/src/main/java/org/logstash/RubyJavaIntegration.java | Context-aware defineMethods and proxy lookups |
| logstash-core/src/main/java/org/logstash/Rubyfier.java | Use Create.allocArray when building Ruby arrays |
| logstash-core/src/main/java/org/logstash/plugins/RootMetricImpl.java | Context-aware intern for metric keys |
| logstash-core/src/main/java/org/logstash/plugins/NamespacedMetricImpl.java | Context-aware intern/to_s calls |
| logstash-core/src/main/java/org/logstash/plugins/factory/RubyCodecDelegator.java | Context-aware class lookup + block invocation |
| logstash-core/src/main/java/org/logstash/plugins/factory/PluginMetricsFactoryExt.java | Context-aware intern usage |
| logstash-core/src/main/java/org/logstash/plugins/factory/PluginFactoryExt.java | Context-aware intern for plugin ids |
| logstash-core/src/main/java/org/logstash/plugins/CounterMetricImpl.java | Context-aware intern for metric key |
| logstash-core/src/main/java/org/logstash/ObjectMappers.java | JRuby 10-safe numeric conversions/serializers |
| logstash-core/src/main/java/org/logstash/Logstash.java | Handle JRuby SystemExit in uncaught handler; update production error detection |
| logstash-core/src/main/java/org/logstash/log/SlowLoggerExt.java | RaiseException-based type errors; numeric conversions |
| logstash-core/src/main/java/org/logstash/log/RubyBasicObjectSerializer.java | Context-aware to_s and inspect-method lookup |
| logstash-core/src/main/java/org/logstash/log/LoggableExt.java | Use defineMethods; update logger name derivation |
| logstash-core/src/main/java/org/logstash/Javafier.java | JRuby 10-safe numeric conversions |
| logstash-core/src/main/java/org/logstash/instrument/metrics/NullNamespacedMetricExt.java | Context-aware op_plus |
| logstash-core/src/main/java/org/logstash/instrument/metrics/NamespacedMetricExt.java | Context-aware op_plus |
| logstash-core/src/main/java/org/logstash/instrument/metrics/MetricExt.java | JRuby 10-safe numeric conversion |
| logstash-core/src/main/java/org/logstash/ext/JRubyWrappedWriteClientExt.java | Use Create for arrays; context-aware intern |
| logstash-core/src/main/java/org/logstash/ext/JrubyWrappedSynchronousQueueExt.java | Convert size via Convert.toInt |
| logstash-core/src/main/java/org/logstash/ext/JrubyTimestampExtLibrary.java | Remove Arity.scanArgs dependency; Convert boolean/int; RaiseException |
| logstash-core/src/main/java/org/logstash/ext/JrubyEventExtLibrary.java | RaiseException type errors; Convert booleans; Create arrays |
| logstash-core/src/main/java/org/logstash/execution/ShutdownWatcherExt.java | Convert ints via Convert; num2long |
| logstash-core/src/main/java/org/logstash/execution/QueueReadClientBase.java | Convert batch dimensions/metrics via Convert |
| logstash-core/src/main/java/org/logstash/execution/PipelineReporterExt.java | Create arrays via Create; Convert ints; context-aware intern/append |
| logstash-core/src/main/java/org/logstash/execution/MemoryReadBatch.java | Use Create.allocArray and context-aware append |
| logstash-core/src/main/java/org/logstash/execution/AbstractPipelineExt.java | Context-aware pipeline id, arrays, and numeric conversions |
| logstash-core/src/main/java/org/logstash/ackedqueue/QueueFactoryExt.java | Compute memory queue size with Convert.toInt |
| logstash-core/src/main/java/org/logstash/ackedqueue/ext/JRubyWrappedAckedQueueExt.java | Arity scan with context; Convert booleans/ints |
| logstash-core/src/main/java/org/logstash/ackedqueue/ext/JRubyAckedQueueExt.java | Convert ints; Convert booleans |
| logstash-core/src/main/java/org/logstash/ackedqueue/AckedReadBatch.java | Use Create.allocArray and context-aware append |
| logstash-core/spec/logstash/util/plugin_version_spec.rb | Stub gemspec lookup for JRuby 10 changes |
| logstash-core/spec/logstash/plugin_spec.rb | Avoid expect_any_instance_of; adjust milestone test |
| logstash-core/spec/logstash/java_pipeline_spec.rb | Update expected error text for JRuby 10 |
| logstash-core/spec/logstash/event_spec.rb | Update NoMethodError quoting format |
| logstash-core/spec/logstash/config/mixin_spec.rb | Adjust formatting expectations around => |
| logstash-core/spec/logstash/api/modules/logging_spec.rb | Add coverage for live loggers in API |
| logstash-core/logstash-core.gemspec | Add runtime deps (observer/csv); pin multi_json |
| logstash-core/lib/logstash/api/modules/logging.rb | Expand logger listing logic |
| lib/pluginmanager/gem_installer.rb | Update GEM_HOME path to jruby/3.4.0 |
| lib/bootstrap/bundler.rb | Update lockfile name; patch bundler self-manager; platform filtering change |
| Gemfile.template | Update uri pin; comment out some default gem pins |
| Gemfile.jruby-3.4.lock.release | New lockfile for JRuby/Ruby 3.4; bundler 2.7.2 |
| ci/observabilitySREsmoke_tests.sh | Whitespace/format-only change |
| build.gradle | Update GEM_HOME/GEM_PATH to jruby/3.4.0 |
| bin/logstash.lib.sh | Update GEM_HOME default to jruby/3.4.0 |
| .ruby-version | Update local JRuby version selector |
| .github/workflows/critical_vulnerability_scan.yml | Update checkout action; set up JDK 21 |
| .ci/updatecli/bump-logstash-version.yml | Track new lockfile name |
| .buildkite/windows_jdk_matrix_pipeline.yml | Narrow JDK matrix to 21 variants |
| .buildkite/scripts/setup_java.sh | Install OpenJDK 21 on CI images |
| .buildkite/linux_jdk_matrix_pipeline.yml | Narrow JDK matrix to 21 variants |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| // Fallback to getBaseName for compatibility | ||
| return (metaClass.getBaseName() != null && metaClass.getBaseName().equals("Bundler::ProductionError")); | ||
| } |
| # Generator process may exit before log file is fully flushed; check if file exists before reading | ||
| if File.exist?(plainlog_file) | ||
| logs = IO.read(plainlog_file) | ||
| expect(logs).to_not include("ERROR") | ||
| else |
💚 Build Succeeded
History
cc @andsel |
|
run exhaustive tests |
Release notes
Update the bundled JRuby to version 10.0.6 including all the necessary updates that were applied on the 9.4 to make it work.
What does this PR do?
This PR backports ecadb4a to 8.19 with some adaptations, that make it non clean:
Description of commits:
:deprecatedlogs to deprecation logger #16833.Why is it important/What is the impact to the user?
Checklist
Author's Checklist
logstash-exhaustive-tests-pipelinehas at least the same errors as inmainmainbranch https://buildkite.com/elastic/logstash-supported-plugins-test-pipeline/builds/65How to test this PR locally
Related issues
10.x. #19303