-
Notifications
You must be signed in to change notification settings - Fork 25.2k
ThreadPool
signature breaks Logstash elastic_integration
plugin build with 8.12.x version(s).
#104959
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
The option (1) doesn't seem to make sense to me. The new constructor is clearly the path that the ES team is preferring, so it doesn't makes sense to deprecate its use, or to re-factor it to route a portion of its functionality through another constructor For Option (2), we could restore the constructor with interface diff --git a/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java b/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java
index fef0d93ec86..5a7befdd40a 100644
--- a/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java
+++ b/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java
@@ -193,6 +193,11 @@ public class ThreadPool implements ReportingService<ThreadPoolInfo>, Scheduler {
Setting.Property.NodeScope
);
+ @Deprecated(since="8.13.0")
+ public ThreadPool(final Settings settings, final ExecutorBuilder<?>... customBuilders) {
+ this(settings, MeterRegistry.NOOP, customBuilders);
+ }
+
@SuppressWarnings({ "rawtypes", "unchecked" })
public ThreadPool(final Settings settings, MeterRegistry meterRegistry, final ExecutorBuilder<?>... customBuilders) {
assert Node.NODE_NAME_SETTING.exists(settings); For option (3), we would simply add a static method to the existing The down-side of this approach is that we would need to backport it to the 8.12 series so that the ElasticIntegration builds would work against both Elasticsearch 8.12 and 8.13:
|
Can you explain this a bit more clearly? From a quick read through the code, my understanding is that this is a Logstash plugin which imports and depends on a substantial fraction of the Elasticsearch codebase. If so, I think the problem is more fundamental than just the I don't think it's going to work to simply add things to the ES codebase that appear to ES developers to be dead code. I fully expect it will get spotted and refactored away at some point, especially if it ends up being in the way of some future change. If we want to be able to run ingest pipelines outside of ES, we're going to need to make some bigger changes to support that use case properly. I'm going to ask @elastic/es-core-infra for comment too, and also ping @elastic/es-data-management who would likely end up taking on the bulk of any such changes since they own the ingest pipeline subsystem. |
Pinging @elastic/es-core-infra (Team:Core/Infra) |
@DaveCTurner the logstash-filter-elastic_integration plugin arose from a growing request of users with large deployments wanting to avoid the execution of ingest pipelines in Elasticsearch for multiple reasons:
For this purpose we did an initial RFC for the feature back in Oct 2022 and included the Data Management team from the start, with the first - 0.0.1 - release in April 2023 and a few more since then. I hope the above brings some more context as to why and how we got here, happy to chat more through this or other medium. |
Pinging @elastic/es-data-management (Team:Data Management) |
Uh oh!
There was an error while loading. Please reload this page.
Description
Logstash recently developed
elastic_integration
plugin. When building the plugin, we internally use Elasticsearch sources. Source changes in Elasticsearch may affect the plugin if the plugin is using changed APIs/classes.Recently, ES changed its
ThreadPool
constructor signature andThreadPool
was referenced by theelastic_integration
plugin source. If we apply constructor changes, we no longer can build plugin against current stack release 8.12.x versions and validate its working state.We can still build plugin against ES main branch and use with 8.12.x versions. However, since the plugin is not a default plugin yet, manual installation always fetch the latest version, may introduce abnormal states.
Acceptance Criteria
We understand that it is not ES breaking change boundary and ES team may encourage to always sync with latest source. However, as much as possible, we would like to mitigate risks with the plugin and keep 🟢 building against ES current release, snapshot and main branches. So, we ask a collaboration!
Possible approaches
set it deprecatedand separate recent interfaceThe text was updated successfully, but these errors were encountered: