How to upgrade a causal cluster with no downtime?

Hi,

Is there a way to upgrade a causal cluster with a few commands without downtime?

The instructions here seems extremely manual still which also still forces you to have downtime and getting the cluster to sync after the upgrade.

https://neo4j.com/docs/migration-guide/4.0/upgrade-causal-cluster/

Hi Pierrick,

4.0 is a major release, the first one we've had in several years. As such, much is changing, including cluster configuration and behavior, and even the discovery service (from Hazelcast to Akka).

The intent for rolling upgrades is to be able to easily handle patch changes within the same major.minor version, and to do our best to cover changes between minor versions as well (such as 3.4 to 3.5). However with major version changes, so much is changing, and in comparatively the most drastic ways, that we can't support a rolling upgrade between 3.5 and 4.0 with no downtime here.

However after that upgrade, once you're on 4.0, the intent once again is to fully support rolling upgrades between patch releases, and to do our best to support it between minor versions whenever possible.

Thanks Andrew.

Makes complete sense for major versions.

For minor versions I would love to get to a point where we do neo4j upgrade and the cluster just updates with almost no downtime.

In the docs I can't find anything that makes this process simple (change to single, unbind etc...) even for minor versions. Am I missing something?

Well, on review there is something missing. The current (4.0) docs don't have a section on rolling upgrades (we don't yet have a 4.0.1 release or later to upgrade to). I believe that will be corrected with a later update.

If you take a look at the 3.5 docs, the 3.5 upgrade section does split between whether it's a rolling upgrade vs an offline upgrade, the steps are different (no need to change to single instance, no need to unbind).

Still, the upgrade process is very manual at this point. While this may be something we look at later, it would require several changes, as currently the commands needed to perform an upgrade and restart aren't commands that are supported through communication among Neo4j instances, that would require OS commands issued over the network, and as we support a variety of OSes that's not currently feasible.