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

Documentation for LTS Upgradeability #1103

Merged
merged 5 commits into from
Jun 20, 2024

Conversation

rebekah-lawrence
Copy link
Contributor

Initial draft, based on PRD and TDD, and the resulting Documentation Plan

Initial draft, based on PRD and TDD, and the resulting Documentation Plan
Copy link

netlify bot commented May 1, 2024

Deploy Preview for hardcore-allen-f5257d ready!

Name Link
🔨 Latest commit 1fba733
🔍 Latest deploy log https://app.netlify.com/sites/hardcore-allen-f5257d/deploys/667175160721d90008afa221
😎 Deploy Preview https://deploy-preview-1103--hardcore-allen-f5257d.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

* Ensure that the <<hazelcast-members-compatibility-guarantees,Compatibility Guarantees>> cover your requirements
* If the minimum version of JDK has changed between releases, <<updated-jdk,upgrade the JDK version>> before starting a rolling upgrade
* If you used Hazelcast Operator to deploy your cluster, refer to the link:https://docs.hazelcast.com/operator/latest/scaling-upgrading#upgrading[Operator documentation, window=_blank]
* If using Hazelcast Management Center to trigger your rolling upgrade, upgrade Management Center before upgrading your members. For information on upgrading Management Center, refer to the link:https://docs.hazelcast.com/management-center/5.4/getting-started/install[Management Center documentation, window=_blank]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a specific upgrade page we can link to instead of the getting started?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the Installing and Starting page, under the Getting Started section; the Upgrading page only lists the changelog, so as far as I can see, this is the only relevant page....

I've also added a link to the Operator docs for K8s users

* If you used Hazelcast Operator to deploy your cluster, refer to the link:https://docs.hazelcast.com/operator/latest/scaling-upgrading#upgrading[Operator documentation, window=_blank]
* If using Hazelcast Management Center to trigger your rolling upgrade, upgrade Management Center before upgrading your members. For information on upgrading Management Center, refer to the link:https://docs.hazelcast.com/management-center/5.4/getting-started/install[Management Center documentation, window=_blank]
* If using the `hz-cluster-admin` script to update your cluster, enable the `CLUSTER_WRITE` endpoints in the REST API. For further information on the REST API, see xref:maintain-cluster:rest-api.adoc#using-the-rest-endpoint-groups[REST API]
* Plan sufficient time for the migration and upgrade to complete, and remember that members cannot join or leave during the upgrade
Copy link
Member

@srknzl srknzl May 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i wonder what you mean by join or leave during the upgrade. The restarts are also counted as joins & leaves technically

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reworded to "the members cannot change during the upgrade"

@@ -107,6 +134,12 @@ include::clients:partial$rest-deprecation.adoc[]

The cluster is now operating on the new codebase version: Both the codebase version and the cluster version have been upgraded.

=== Restart Members on Previous Version

If you experience any issues during the rolling upgrade, you can recover to the previous version by restarting the members.
Copy link
Member

@srknzl srknzl May 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are testing this 5.2-5.4 source versions to 5.5 target versio. So should we add a note about this is supported only for LTS upgrades? In the future (post 5.5) though, it'll be supported for one-minor upgrades as well as I know.

the point is, we don't test roll back in 5.2 -> 5.3 and similar upgrades

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved to LTS-specific page; we can worry about future changes to behaviour when we get there

You can upgrade directly to the latest release in the following circumstances:

* Your current version is no more than one minor version below the current release
* The latest release is an xref:migrate:lts.adoc[LTS release] and your current version is among those supported
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, and fyi the current supported version will be only the previous LTS and the previous minor in the future. For now it's 5.2-5.4 for 5.5.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggesting using source and target wherever possible. e.g. Your source version is no more than one minor version below the current release (target)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amended

docs/modules/migrate/pages/lts.adoc Show resolved Hide resolved

LTS releases have been introduced with 5.5. You can upgrade directly from 5.2 or later to 5.5 without the need to upgrade to each release between your current version and the LTS release.

NOTE: Any features that are marked as Beta in your current version, or any intermediate version, are not upgraded. This is due to changes that can occur between the Beta and general availability releases. If a Beta feature has been updated or made generally available in the LTS releae, that feature is included in the LTS release. For further information on rolling upgrade compatibilities, see xref:maintain-cluster:rolling-upgrades.adoc#hazelcast-members-compatibility-guarantees[Compatibility Guarantees].
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: if you upgrade the beta question part in the rolling-upgrades page, you should also change here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

amended

|Released every two years
|Released at least twice each year

|Upgrade directly from the previous LTS, or from the last available STS release
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|Upgrade directly from the previous LTS, or from the last available STS release
|Upgrade directly from the previous LTS, or from the last available STS before the LTS release

If we don't add this, is this ambiguous? for example, last STS is 5.7 and last LTS is 5.5, then is "upgrade" (well actually downgrade :D) from 5.7 -> 5.5 possible? Probably, I am overthinking it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you are overthinking, but I have reworded to be more explicit (I hope)

|LTS member identifies that two different minor versions are already in the cluster and rejects joining the cluster
|===

The following scenario is not supported:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we say it's not supported but we also say "Member joins the cluster" for the 5.3 member below?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It comes from the TDD: https://hazelcast.atlassian.net/wiki/spaces/PM/pages/4903993364/TDD+LTS+Upgradability#Mixed-version-clusters

It is a difficult once to cover in a positive way, I have amended, but any suggestions are more than welcome!


As newer JDK releases contain improvements, we recommend that you upgrade to a newer JDK version where xref:deploy:versioning-compatibility.adoc#supported-java-virtual-machines[supported].

Upgrade the JDK version before upgrading your members if support for the JDK version has changed between your current and planned cluster versions. For example, in 5.2 JDK 8 was supported, but 5.5 supports only JDK 17 or later.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Upgrade the JDK version before upgrading your members if support for the JDK version has changed between your current and planned cluster versions. For example, in 5.2 JDK 8 was supported, but 5.5 supports only JDK 17 or later.
Upgrade the JDK version before upgrading your members if support for the JDK version has changed between your current and planned cluster versions. For example, in 5.2 JDK 8 or later was supported, but 5.5 supports only JDK 17 or later.

To make it cleare that there is an overlap of supported JDK versions.


{description}

LTS releases have been introduced with 5.5. You can upgrade directly from 5.2 or later to 5.5 without the need to upgrade to each release between your current version and the LTS release.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we specify that they should upgrade from the latest patch of each release line? We only test latest patch (at the time of the release).


=== Restart Members on Previous Version

If you experience any issues during the rolling upgrade, you can recover to the previous version by restarting the members.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be done only if the version hasn't been upgraded (either automaticaly or via API/script).


a|* IMap data structure. This includes the API, configuration options, and persistence
* CP subsystem. This inclues the API and peristence
* WAN replication. Ongoing replication is supported during the upgrade. This includes both source and target; however, the source and the target cannot be upgraded simultaneously
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We tested replication to clusters 5.2+ during the RU, not to earlier clusters. So we should specify we support only that.

Including Avtar's responses in the Slack thread
Copy link
Contributor

@oliverhowell oliverhowell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coupla minor typos and a few minor suggestions and comments but pre-approving

@@ -5,6 +5,18 @@

{description}

== Best Practices

Before starting a rolling upgrade, consider the following best practises:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Before starting a rolling upgrade, consider the following best practises:
Before starting a rolling upgrade, consider the following best practices:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dagnamit! When will those US English practitioners learn how to use words properly ;-)


* Ensure that the <<hazelcast-members-compatibility-guarantees,Compatibility Guarantees>> cover your requirements
* If the minimum version of JDK has changed between releases, <<updated-jdk,upgrade the JDK version>> before starting a rolling upgrade
* If you used Hazelcast Operator to deploy your cluster, refer to the link:https://docs.hazelcast.com/operator/latest/scaling-upgrading#upgrading[Operator documentation, window=_blank]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trying to avoid a big naming thread but should 1st ref be Hazelcast Platform Operator? I might be out of date on this...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The (last) rename that I saw dropped Platform to make it just Hazelcast Operator - and this also matches the [current] naming in the side nav of the docs.

Actually, I think the last one I saw was Hazelcast Enterprise Operator, but Platform was definitely not part of the name.

I suggest leaving as is - if it needs to be changed, we can do that anytime.

* If the minimum version of JDK has changed between releases, <<updated-jdk,upgrade the JDK version>> before starting a rolling upgrade
* If you used Hazelcast Operator to deploy your cluster, refer to the link:https://docs.hazelcast.com/operator/latest/scaling-upgrading#upgrading[Operator documentation, window=_blank]
* If using Hazelcast Management Center to trigger your rolling upgrade, upgrade Management Center before upgrading your members. For information on upgrading Management Center, refer to the link:https://docs.hazelcast.com/management-center/5.4/getting-started/install[Management Center documentation, window=_blank], or if you deployed Management Center using the Hazelcast Operator, refer to the link:https://docs.hazelcast.com/operator/latest/deploy-management-center.adoc[Operator documentation, window=_blank]
* If using the `hz-cluster-admin` script to update your cluster, enable the `CLUSTER_WRITE` endpoints in the REST API. For further information on the REST API, see xref:maintain-cluster:rest-api.adoc#using-the-rest-endpoint-groups[REST API]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which REST API page should this be? The new enterprise-rest-api or the old legacy one (you've linked here)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@frant-hartm @srknzl can you guide me on this one? Ta!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new REST API supports changing the version, so it should be the new one. However, I don't see the change version endpoint in the docs yet.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added a link to the Enterprise REST API topic, and added Community to the existing link; if the new REST API adds a better place to link to, we can adjust it later.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @rebekah-lawrence I'm informed that old REST api is deprecated in the upcoming 5.5 release, so we should start referring to the new documentaiton instead.

There's a swagger API documentation page with all endpoints. The new REST API's reference manual may be a bit missing right now @frant-hartm

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@srknzl yes, I added a link to the new REST API as well as the existing in the final updates. The swagger docs are going to be embedded in the docs, I believe. If the link needs to be updated before 5.5 goes live I will take care of it.

Thanks for mentioning it, though, just to keep it fresh in my mind - I've added a note to the docs Jira to double-check the link destinations once the REST API doc updates are merged.

@@ -48,8 +60,23 @@ As a result, you can use rolling upgrades to upgrade clusters to the following m
+
This also includes the ability of rolling upgrade from Hazelcast IMDG 4.2 to Platform 5.0, since IMDG is part of the Platform and 5.0 is considered to be the next minor version after IMDG 4.2.

- Releases from 5.2 to 5.4, directly to the 5.5 Long-term Support (LTS) release. For further information on additional compatibilities for direct-to-LTS rolling upgrades, see xref:migrate:lts.adoc[].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Releases from 5.2 to 5.4, directly to the 5.5 Long-term Support (LTS) release. For further information on additional compatibilities for direct-to-LTS rolling upgrades, see xref:migrate:lts.adoc[].
- Directly to the 5.5 Long-term Support (LTS) release from releases 5.2 through 5.4. For further information on additional compatibilities for direct-to-LTS rolling upgrades, see xref:migrate:lts.adoc[].

Reads a little awkwardly with the source releases at front, just a suggestion...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to: The 5.5 Long-term Support (LTS) release direct from 5.2.x to 5.4.x.

Which is actually better for list parallelism as well as readability! Good catch.


{description}

LTS releases have been introduced with 5.5. You can upgrade directly from 5.2.x or later to 5.5 without the need to upgrade to each release between your current version and the LTS release. We recommend that you upgrade to 5.5 from the latest available patch for your current release.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know the context is already Platform but with the various product/version combinations in this section, is it worth being explicit with?

Suggested change
LTS releases have been introduced with 5.5. You can upgrade directly from 5.2.x or later to 5.5 without the need to upgrade to each release between your current version and the LTS release. We recommend that you upgrade to 5.5 from the latest available patch for your current release.
LTS releases have been introduced with Hazelcast Platform 5.5. You can upgrade directly from 5.2.x or later to 5.5 without the need to upgrade to each release between your current version and the LTS release. We recommend that you upgrade to 5.5 from the latest available patch for your current release.

|Choose if you value new features over stability, you are willing to upgrade several times a year, and you are happy with maintenance support for the life of the STS
|===

== Hazelcast 5.5 LTS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it just Hazelcast 5.5 in this context?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This time, yes, as it is being introduced in 5.5 - however, my thought process was that in the future people might upgrade first to the 5.5 LTS, then to the [6.5] LTS, so sections would be required going forward for each usable LTS release........

docs/modules/migrate/pages/lts.adoc Outdated Show resolved Hide resolved
* CP subsystem. This inclues the API and peristence
* WAN replication. Ongoing replication is supported during the upgrade. This includes both source and target; however, the source and the target cannot be upgraded simultaneously

NOTE: Replication has been tested for 5.2 or later clusters only.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But context for this line is only versions 5.2 and 5.3 anyway - does this add anything?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added from a comment from @frant-hartm - but a fair point.

What do you think, @frant-hartm, or did I miss the point of your original comment?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When there is WAN replication you have 2 clusters and 3 different versions.

from version of cluster A (any of 5.2, 5.3, 5.4),
to version of cluster A

version of cluster B - this could be any Hazelcast version 4.0-5.4.

We tested only 5.2, 5.3 and 5.4 for cluster B.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expanded to "NOTE: Hazelcast has tested WAN Replication to validate the upgrade solution. The test covered two clusters of different versions; for scenarios where WAN Replication is used from a cluster with a version or 5.2, 5.3, or 5.4 to another cluster with a version between 4.0 and 5.4, only the replication to clusters of version 5.2 or later have been tested."

docs/modules/migrate/pages/lts.adoc Outdated Show resolved Hide resolved

=== Restart Members on Previous Version

If an automatic upgrade, an upgrade using the API, or using a script has not successfully upgraded the version, you can recover to the previous version by restarting the members.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If an automatic upgrade, an upgrade using the API, or using a script has not successfully upgraded the version, you can recover to the previous version by restarting the members.
If an automatic upgrade, or an upgrade using the API or script, has not successfully upgraded the version, you can recover to the previous version by restarting the members.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I wrote and rewrote this sentence! Your version is how I had it originally, but I felt the commas spoiled the flow.

I'm going to rejig this as follows:

If the version has not successfully upgraded following an upgrade, you can recover to the previous version by restarting the members. This is the case whether the upgrade was done automatically, using the API, or using a script.

|Released every two years
|Released at least twice each year

|Upgrade directly from the previous LTS, or from the STS release that precedes the latest LTS release
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upgrade directly from the previous LTS, or from the STS release that precedes the latest LTS release

@frant-hartm should this be "Upgrade directly from the previous LTS" only? I think for 5.5 we are making an exception and make it work for "Upgrade directly from the previous LTS, or from the STS release that precedes the latest LTS release"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But surely there is no previous STS or LTS for 5.5 - and we have covered this in the remaining text?

This table covers the logic/behaviour for LTS/STS releases as they will be - it was difficult to convey the idea without getting bogged down in the initial implementation where there are no other LTS or STS releases avaialbe.

We could be specific for this release and say something like:

For the initial LTS release with 5.5, you can upgrade directly from 5.2.x or later.

In future LTS releases, you can

Of course, this then raises the question of whether we need to add something like (when available) or (available from release ????) in the STS header.

Then this additional wording can be stripped as we progress through the availability of STS releases and further LTS releases.

Copy link
Member

@srknzl srknzl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm from my perspective

@rebekah-lawrence rebekah-lawrence merged commit 69fe7c3 into main Jun 20, 2024
6 checks passed
@rebekah-lawrence rebekah-lawrence deleted the DOCS-880-Document-LTS-Upgradeability branch June 20, 2024 08:51
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.

5 participants