Upgrading EventStore, server vs client versions

We are planning to upgrade our Event Store (4.0.3) to latest (5.0.8)

The plan is in 2 steps, first to 4.1.4 and then to 5.0.8

My question is how in sync is the C# client and the server supposed to be?
Do they have to be on same version or can they differ and in that case by how much?
As in can we upgrade the client independently of the server?

I don’t recall us having any problems updating the clients initially.

You can upgrade them separately but I’d recommend going server first unless there is a specific reason not to

Can you explain why and does that also cover the jump from version 4 to version 5?

I believe it was mentioned in the change log. V4 client uses int for the event version and V5 uses long. Essentially, if you have a lot of events, you’d get a version overflow with V4.

Also, the V5 client library can be used with v20 server if TCP is enabled on the server. You will have to use the next gen client library with v20 if you want gRPC (obvviously).

So how does this translate to an upgrade strategy?

It’s seamless without downtime. You can start using the v5 client and it will work with v4 servers. You can also upgrade v4 servers to v5 one by one in the cluster and they will be able to talk to each other.

I am not sure if it will be the same with v20 because nodes use gRPC to talk to each other. I will clarify with the dev team and write here. We will also include migration tips in the new docs too.

1 Like

I have the information about v5 -> v20 migration. Unlike v4 -> v5, you’d need to take the whole cluster down and upgrade all the nodes at once.