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

Upgrade Lucene/Solr/Elastic to latest version #4441

Open
erikgb opened this issue Feb 21, 2023 · 6 comments
Open

Upgrade Lucene/Solr/Elastic to latest version #4441

erikgb opened this issue Feb 21, 2023 · 6 comments
Assignees
Labels
dependencies Pull requests that update a dependency file 📶 enhancement issue is a new feature or improvement
Milestone

Comments

@erikgb
Copy link
Contributor

erikgb commented Feb 21, 2023

Problem description

While working on #3559, I realize we have to upgrade Solr to version 9 - since Solr version 8 is based on Jetty 9, and we are forced to upgrade to Jetty version 10 to migrate to Java/Jakarta EE 8. Draft PR: #4397.

Before performing a major upgrade of Solr, I suggest upgrading to the latest minor version and fixing deprecation warnings. This will ease the major version upgrade.

Preferred solution

Solr dependencies are bumped to the latest minor update and usage of deprecated APIs is fixed.

Are you interested in contributing a solution yourself?

Perhaps?

Alternatives you've considered

No response

Anything else?

No response

@erikgb erikgb added the 📶 enhancement issue is a new feature or improvement label Feb 21, 2023
@github-project-automation github-project-automation bot moved this to 🆕 Triage in RDF4J Planning Feb 21, 2023
erikgb added a commit to erikgb/rdf4j that referenced this issue Feb 21, 2023
@barthanssens
Copy link
Contributor

This is related to #3396

Unfortunately there is also ElasticSearch, which is using - like Solr - Lucene libraries...

I'd prefer to keep both ES and Solr on the same version of Lucene... but no hard feelings if the more practical approach would be to include different versions depending on the search-solution being selected...

@erikgb
Copy link
Contributor Author

erikgb commented Feb 21, 2023

Thanks @barthanssens! I was about to write a comment after discovering #3396. Somehow we need to sort out the issues related to the javax-jakarta migration. Maybe I should open a new discussion, or continue under #4433? WDYT? After fixing the immediate issues with WireMock in #4439 this is now the blocker for a migration to Java/Jakarta EE 8,

@barthanssens
Copy link
Contributor

Sure, I do remember that upgrading is not as straightforward as I thought it would be (see also the changes in 3396), but perhaps I've missed some obvious fixes/work-arounds...

@abrokenjester abrokenjester moved this from 🆕 Triage to 📋 Backlog in RDF4J Planning Feb 25, 2023
barthanssens added a commit to Fedict/rdf4j that referenced this issue Aug 8, 2023
@barthanssens barthanssens self-assigned this Aug 9, 2023
@barthanssens barthanssens added the dependencies Pull requests that update a dependency file label Aug 9, 2023
@barthanssens barthanssens added this to the 5.0.0 milestone Aug 9, 2023
@barthanssens barthanssens changed the title Upgrade Solr to latest 8.x version Upgrade Lucene/Solr/Elastic to latest version Aug 9, 2023
@barthanssens
Copy link
Contributor

Changes on ES include migrating to a new client library (again, see https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/migrate-hlrc.html, appears to be Apache licensed https://mvnrepository.com/artifact/co.elastic.clients/elasticsearch-java/8.9.0), using Jetty 10 for Solr, and some changes in geo (some deprecated / moved methods or classes) in Lucene and/or ES

And the usual IP verification, especially for ES

@hmottestad
Copy link
Contributor

The Java client for Elasticsearch provides strongly typed requests and responses for all Elasticsearch APIs. It delegates protocol handling to an http client such as the Elasticsearch Low Level REST client that takes care of all transport-level concerns (http connection establishment and pooling, retries, etc).

The Elasticsearch Low Level REST client is simply the elasticsearch-rest-client, and it's also Apache 2.0 :)

https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-client

So if we use the Java API Client together with the low level test client then we could be fully Apache 2.0 for all our production code. Which would make upgrading to never versions that much easier in the future :)

@barthanssens
Copy link
Contributor

The Elasticsearch Low Level REST client is simply the elasticsearch-rest-client, and it's also Apache 2.0 :)

Well, sort of, there are 3 client APIs, at least that's how I read the dos: the new java client library indeed uses the existing low-level client, but replaces the less-new rest-high-level client)

Let's hope for a clean separation (e.g no dependencies on say a common server package)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file 📶 enhancement issue is a new feature or improvement
Projects
None yet
Development

No branches or pull requests

3 participants