Skip to content
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

Monkey-patching NodeRole class to avoid role parsing bug. #18648

Merged
merged 10 commits into from
Mar 18, 2024

Conversation

dennisoelkers
Copy link
Member

@dennisoelkers dennisoelkers commented Mar 15, 2024

Description

Motivation and Context

This PR is doing some monkey-patching to fix parsing of the search role for OpenSearch nodes. This is required due to a lack of support for this in the OpenSearch Java client (bug filed here) and should be removed after the bug was fixed upstream.

Refs #14788.

/nocl

/jpd https://github.com/Graylog2/graylog-plugin-enterprise/pull/6803

How Has This Been Tested?

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Refactoring (non-breaking change)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.

@dennisoelkers dennisoelkers requested a review from mpfz0r March 15, 2024 08:38
@mpfz0r
Copy link
Contributor

mpfz0r commented Mar 15, 2024

It doesn't stumble over the search role anymore, but..

org.graylog.shaded.opensearch2.org.opensearch.OpenSearchException: Could not read nodes list from indexer!
	at org.graylog.storage.opensearch2.OpenSearchClient.exceptionFrom(OpenSearchClient.java:254) ~[classes/:?]
	at org.graylog.storage.opensearch2.OpenSearchClient.execute(OpenSearchClient.java:177) ~[classes/:?]
	at org.graylog.storage.opensearch2.ClusterAdapterOS2.nodesInfo(ClusterAdapterOS2.java:305) ~[classes/:?]
	at org.graylog.plugins.archive.job.ArchiveParallelizationAdvisor.getParallelismFactor(ArchiveParallelizationAdvisor.java:41) ~[classes/:?]
	at org.graylog.plugins.archive.job.ArchiveCreateJob.archiveIndex(ArchiveCreateJob.java:261) [classes/:?]
	at org.graylog.plugins.archive.job.ArchiveCreateJob.archiveIndices(ArchiveCreateJob.java:212) [classes/:?]
	at org.graylog.plugins.archive.job.ArchiveCreateJob.run(ArchiveCreateJob.java:169) [classes/:?]
	at org.graylog.plugins.archive.job.ArchiveCreateSystemJob.execute(ArchiveCreateSystemJob.java:35) [classes/:?]
	at org.graylog2.system.jobs.SystemJobManager.executeJob(SystemJobManager.java:116) [classes/:?]
	at org.graylog2.system.jobs.SystemJobManager$1.run(SystemJobManager.java:93) [classes/:?]
	at com.codahale.metrics.InstrumentedScheduledExecutorService$InstrumentedRunnable.run(InstrumentedScheduledExecutorService.java:241) [metrics-core-4.2.25.jar:4.2.25]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) [?:?]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) [?:?]
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
Caused by: org.opensearch.client.util.MissingRequiredPropertyException: Missing required property 'NodeInfoAction.destructiveRequiresName'
	at org.opensearch.client.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:89) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.opensearch.nodes.info.NodeInfoAction.<init>(NodeInfoAction.java:57) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.opensearch.nodes.info.NodeInfoAction.<init>(NodeInfoAction.java:50) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.opensearch.nodes.info.NodeInfoAction$Builder.build(NodeInfoAction.java:114) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.opensearch.nodes.info.NodeInfoAction$Builder.build(NodeInfoAction.java:94) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:92) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:55) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:81) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:185) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:146) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:87) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:91) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:55) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:81) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:185) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:146) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:87) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:91) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:55) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:369) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:355) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:87) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:81) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:185) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:146) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:87) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:91) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:55) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:317) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:283) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:143) ~[opensearch-java-2.9.1.jar:?]
	at org.opensearch.client.opensearch.nodes.OpenSearchNodesClient.info(OpenSearchNodesClient.java:145) ~[opensearch-java-2.9.1.jar:?]
	at org.graylog.storage.opensearch2.ClusterAdapterOS2.lambda$nodesInfo$19(ClusterAdapterOS2.java:305) ~[classes/:?]
	at org.graylog.storage.opensearch2.OpenSearchClient.execute(OpenSearchClient.java:175) ~[classes/:?]

@thll
Copy link
Contributor

thll commented Mar 15, 2024

It doesn't stumble over the search role anymore, but..

looks like this is a different bug that is already being worked on: #18647

@moesterheld
Copy link
Contributor

yes, that error is fixed with #18658

@janheise janheise marked this pull request as ready for review March 18, 2024 11:01
@janheise janheise force-pushed the fix/issue-18585-monkey-patch branch from 34e1e5a to 8540690 Compare March 18, 2024 13:34
@janheise janheise merged commit 0bf99aa into master Mar 18, 2024
6 checks passed
@janheise janheise deleted the fix/issue-18585-monkey-patch branch March 18, 2024 17:31
janheise added a commit that referenced this pull request Mar 19, 2024
janheise added a commit that referenced this pull request Mar 19, 2024
* Revert "Monkey-patching `NodeRole` class to avoid role parsing bug. (#18648)"

This reverts commit 0bf99aa.

* Revert "Fix parsing of missing watermark settings. (#18624)"

This reverts commit e9783e4.

* Revert "Migrating `IndexToolsAdapter` to new Opensearch client. (#18505)"

This reverts commit 64921ab.

* Revert "Migrating query suggestions to new OpenSearch client. (#17998)"

This reverts commit 27f55ec.

* Revert "Setting up injection/usage of new OpenSearch Java Client. (#17760)"

This reverts commit aacaa0c.

* needed changes to revert part1

* Fix opensearch rest client providers

* fix OpenSearchInstance

* Add license

---------

Co-authored-by: Tomas Dvorak <tomas.dvorak@graylog.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants