Provide a way to handle upcoming remote wire incompatibility
- Dominant language
- Scala
- Stars
- 1.6k
- Forks
- 211
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 89
Description
As discussed in https://github.com/mdedetrich/akka-apache-project/discussions/28, pekko core will need to handle wire incompatibility issues arising from the change in the `akka://` address prefix to `pekko://`. There may also be other wire incompatibility changes, for example if we decide to change the default `2552` port and anything else that we may have missed.
The solution will also need to play with the release strategy that we decide for pekko. Since the previous discussion I have done some thinking about it and at least to me the most amicable solution would be to make these fields configurable with typesafe config with different default values depend on the pekko release branch, i.e.
For pekko 1.0.x we would have
```
acceptPrefix = ["akka", "pekko"] // The prefix's to use when checking against incoming requests
sendPrefix = "pekko" // The prefix to use when making send requests
```
And for pekko 1.1.x (on the assumption that we don't want to accept migrating current Akka clusters to this Pekko branch by default)
```
acceptPrefix = ["pekko"] // The prefix's to use when checking against incoming requests
sendPrefix = "pekko" // The prefix to use when making send requests
```
(Note that the same strategy can also be applied to the port 2552`.
This means that when doing a rolling upgrade from an existing akka cluster to pekko 1.0.x you would temporarily change `sendPrefix` to `"akka"` (so that currently existing Akka clusters don't refuse connections from new pekko nodes) and once the rolling upgrade is complete then you would change `sendPrefix` to `"pekko"`. After that point you are then free to upgrade to pekko 1.1.x with `acceptPrefix` as `["pekko"]` without any problems and making this configurable with typesafe config means that if users have bespoke update requirements its relatively easy for them to handle it.
This also leaves the door open to first deprecating the `acceptPrefix`/`sendPrefix` settings later down the Pekko 1.1.x release cycle and then at some point in the future hardcoding it as `pekko`.
Contributor guide
Assessment
This issue has not been assessed yet.