-
Notifications
You must be signed in to change notification settings - Fork 10
Description
What kind of business use case are you trying to solve? What are your requirements?
Coming from #12, clients are being upgraded to support OpenSearch 2.0 while breaking compatibility with 1.0. For example, opensearch-java 1.0 works against OpenSearch 1.x, opensearch-java 2.0 works against OpenSearch 2.x, but there's no version of client that works against both OpenSearch 1.x and 2.x. Thus, in order to upgrade from OpenSearch 1.x to 2.x one needs to either run a cluster in mixed mode for a long time, or take downtime.
With rolling upgrades:
- Upgrade some nodes to 2.0, cluster is now in mixed state.
- Upgrade all clients to 2.0 and direct trafic from these clients to 2.0 nodes.
- Finish upgrading the cluster to 2.0.
What is the problem? What is preventing you from meeting the requirements?
Users have to upgrade both clients and server at the same time and/or run in mixed cluster mode for a very long time. This is a lot of work, hard to coordinate, risky, etc. Most users will choose not to upgrade across major versions.
What are you proposing? What do you suggest we do to solve the problem or improve the existing situation?
Ensure that there's at least 1 version of a client that works against two major versions. For example, opensearch-java 2.0 would work against 1.x and 2.0 and deprecate all 1.x methods, and remove them in 3.0.
Describe alternatives you've considered
REST API versioning so users can specify their desired API version to ensure client compatibility is independent of server upgrades.
Other
This is tangentially related to opensearch-project/OpenSearch#3023.