Skip to content

CCOR-12529 Create dynamic lucene dependency selection based on index engine #527

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

Merged
merged 3 commits into from
Jun 22, 2025

Conversation

kgoeltner
Copy link
Contributor

@kgoeltner kgoeltner commented Jun 14, 2025

Calling api/.../search in the conductor-oss ui searching for workflows or task executions fails. The conductor-server throw a NoSuchFieldError: LUCENE_7_0_0 due to incompatible lucene versions on the classpath.

Server logs:
Screenshot 2025-06-13 at 8 10 06 PM

UI logs:
Screenshot 2025-06-13 at 7 35 15 PM

Pull Request type

  • Bugfix
  • Feature
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • WHOSUSING.md
  • Other (please describe):

NOTE: Please remember to run ./gradlew spotlessApply to fix any format violations.

Changes in this PR

History:

  • ISSUE-505: original incident issue from OSS user
  • PR-506: removed the lucene dependency entirely since OS provides its own. This fixed the api/../search issue failing for executions on docker-containers using OS. Issue was still present for ES setups.
  • PR-524: updated the lucene dependency from 8.11.1 to 10.2.1, but this is incompatible with ES 7.17.11

Cause:

  • ElasticSearch (ES 7.17.11) and OpenSearch (OS 2.18.0) which are used for indexing the db both internally depend on lucene
  • ES 7.17.11 uses lucene 8.11.1, while OS 2.18.0 uses lucene 9.12.0. Using one lucene version over the other causes runtime conflicts in the build
  • The lucene dependencies previously taken out from es-7-persistence and server are needed for build

Fix:

  • Primarily support ES with lucene 8.11.1, with instructions written to support OS with lucene 9.12.0

Alternatives considered

  • Upgrading ES to use the same lucene v9.12.0 as OS: would require going past ES v7 to v8 which would introduce breaking changes and deprecation i.e. elasticsearch-rest-high-level-client
  • Introducing a SEARCH_ENGINE build arg to conditionally resolve the correct lucene version based on the target indexing search engine would support both ES & OS but will produce a compile dependency leading to downstream issues

@kgoeltner kgoeltner changed the title CCOR-12528 Create dynamic lucene dependency selection based on index engine CCOR-12529 Create dynamic lucene dependency selection based on index engine Jun 14, 2025
@kgoeltner kgoeltner requested a review from v1r3n June 17, 2025 02:45
@kgoeltner kgoeltner merged commit acd6120 into main Jun 22, 2025
9 checks passed
@v1r3n v1r3n deleted the lucene-dependency-fix branch June 22, 2025 21:35
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.

2 participants