You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@pekko.apache.org by GitBox <gi...@apache.org> on 2023/01/17 09:22:48 UTC

[GitHub] [incubator-pekko] mdedetrich opened a new issue, #108: Provide a way to handle upcoming remote wire incompatibility

mdedetrich opened a new issue, #108:
URL: https://github.com/apache/incubator-pekko/issues/108

   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 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
   ```
   
   This means that when doing a rolling upgrade from akka to pekko 1.0.x you would temporarily change `sendPrefix` to `"akka"` (so that currently existing Akka clusters don't refuse connections) 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 without any problems. Making this configurable with typesafe config means that if users have bespoke update requirements its relatively easy for them to handle it.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "mdedetrich (via GitHub)" <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1828531793

   Thanks, ill have a look at it in a few days


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


[GitHub] [incubator-pekko] mdedetrich commented on issue #108: Provide a way to handle upcoming remote wire incompatibility

Posted by "mdedetrich (via GitHub)" <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1702400242

   > I suppose this would be needed by every large scale live application that uses akka and can not afford a downtime. Most of the large gaming firms use akka .. and they can not afford a downtime. so remote wire compatibility looks like a must have
   
   To be clear we are not against this change and it is something that we planned for originally in Pekko 1.0.0, its just that we didn't have the capacity to do such a change especially considering that it needs to have extensive testing. Our priority was to get the Pekko modules out so the community would at least have something to use.
   
   If the issue is really that critical then it makes for someone to own up to it and contribute it and we will do our best to support such an endevour


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "mdedetrich (via GitHub)" <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1862425999

   @pjfanning  I haven't really been ontop if this lately (I am focusing on other stuff) but feel free to add commits onto the #765 branch (it should be open for maintainers) to close it off


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


[GitHub] [incubator-pekko] mdedetrich commented on issue #108: Provide a way to handle upcoming remote wire incompatibility

Posted by GitBox <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1385144248

   > Can we deserialize protobuf messages sent by an Akka node with Pekko? I'm not too familiar with Protobuf, but akka-kryo-serialization defaults to FQCN for message serialization for example.
   
   From my first impression this should work because the only thing that got changed in the https://github.com/apache/incubator-pekko/pull/58 PR is the `option java_package` in the `*.proto` which isn't used by the wire protocol but rather in generating the typed sources from the `.*proto` files. This needs to be tested to be verified.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


[GitHub] [incubator-pekko] jrudolph commented on issue #108: Provide a way to handle upcoming remote wire incompatibility

Posted by "jrudolph (via GitHub)" <gi...@apache.org>.
jrudolph commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1400078644

   > Can we deserialize protobuf messages sent by an Akka node with Pekko? I'm not too familiar with Protobuf, but akka-kryo-serialization defaults to FQCN for message serialization for example.
   
   Most (all?) of the internal serialization formats use short custom strings as manifests instead of FQCN, so many serializers should just keep working:
   
   https://github.com/apache/incubator-pekko/blob/4ac0f00a477873965ee7d52e16faefb1de91fe3a/remote/src/main/scala/org/apache/pekko/remote/serialization/MiscMessageSerializer.scala#L313-L320


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


[GitHub] [incubator-pekko] codeGuru775 commented on issue #108: Provide a way to handle upcoming remote wire incompatibility

Posted by "codeGuru775 (via GitHub)" <gi...@apache.org>.
codeGuru775 commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1702372980

   I suppose this would be needed by every large scale live application that uses akka and can not afford a downtime. Most of the large gaming firms use akka .. and they can not afford a downtime. so remote wire compatibility looks like a must have


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "raboof (via GitHub)" <gi...@apache.org>.
raboof commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1829910649

   > ThisActorSystemQuarantinedEvent is in package org.apache.pekko.remote.artery. There is also a similar Akka class but the Pekko SplitBrainResolver will not be listening for Akka ThisActorSystemQuarantinedEvent events - only Pekko ones.
   
   How are these events serialized between nodes? If they are serialized using protobuf, it may be transparent: the protobuf binary doesn't contain class names, only numeric id's - so as long as the object structure and the numeric ids are consistent a serialized Akka ThisActorSystemQuarantinedEvent might be deserialized into a Pekko one and vice-versa.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


[GitHub] [incubator-pekko] nvollmar commented on issue #108: Provide a way to handle upcoming remote wire incompatibility

Posted by GitBox <gi...@apache.org>.
nvollmar commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1385130723

   Can we deserialize protobuf messages sent by an Akka node with Pekko? I'm not too familiar with Protobuf, but akka-kryo-serialization defaults to FQCN for message serialization for example.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "pjfanning (via GitHub)" <gi...@apache.org>.
pjfanning commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1830827822

   I have a branch where I have the #765 changes and also an extra change to pekko-cluster jar that hacks the config data that is sent by a cluster node when trying to join the cluster (to make it look like akka node data) - https://github.com/pjfanning/incubator-pekko/commits/remote-release
   
   https://github.com/pjfanning/pekko-akka-compat (PekkoAkkaAeronCluster) gets a bit further when the pekko node tries to join an akka cluster. The latest issue now seems to be the 'version' - Pekko 1.0.1 vs Akka 2.6.21. It looks like I might need to add a new config that let's Pekko pretend that it is running a particular Akka version.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


[GitHub] [incubator-pekko] mdedetrich commented on issue #108: Provide a way to handle upcoming remote wire incompatibility

Posted by "mdedetrich (via GitHub)" <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1434861188

   Just relaying what was stated in the mailing list at https://lists.apache.org/thread/nr7q9orzffolwo9tj753cvkrohr9875o, it appears that this issue is not as high priority as I originally anticipated so that means we don't have to worry about this for 1.0.x (or even at all)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "mdedetrich (via GitHub)" <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1774152143

   I created a draft PR at https://github.com/apache/incubator-pekko/pull/765 which contains a skeleton of the desired implementation, still more to do


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "pjfanning (via GitHub)" <gi...@apache.org>.
pjfanning commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1830863929

   I added a further change to get the pekko node to include akka.version in its init-join message - a valid akka.version (not a pekko version). This seems to get the pekko cluster member to join the akka cluster. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "mdedetrich (via GitHub)" <gi...@apache.org>.
mdedetrich commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1773767239

   Assigning this to myself as per https://github.com/apache/incubator-pekko/issues/146#issuecomment-1773766845


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "pjfanning (via GitHub)" <gi...@apache.org>.
pjfanning commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1828498037

   @mdedetrich @kerr I've added a cluster test to https://github.com/pjfanning/pekko-akka-compat (PekkoAkkaAeronCluster)
   
   The simple remote examples work but the clustering code is more complicated.
   
   The 1st issue that PekkoAkkaAeronCluster runs into is that akka.cluster.JoinConfigCompatCheckCluster checks the compatibility. I am no expect on akka/pekko cluster code but it looks like when akka/pekko nodes try to join a cluster they send a message with HOCON data. Our pekko nodes wrap this data with a `pekko` wrapper while akka nodes use an `akka` wrapper.
   
   It seems like there could be 2 solutions.
   * We add a further Pekko change so that the message it sends has an `akka` wrapper instead of a `pekko` wrapper.
       * we would also need to change the pekko.cluster.JoinConfigCompatCheckCluster to accept akka wrappers
   * We create a new JoinConfigCompatChecker class that can be used in Pekko and we could release one for Akka
   
   The HOCON message seems to contain at least these 2 configs (or their Akka equivalents).
   
   ```
     private val DowningProviderPath = "pekko.cluster.downing-provider-class"
     private val SbrStrategyPath = "pekko.cluster.split-brain-resolver.active-strategy"
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "pjfanning (via GitHub)" <gi...@apache.org>.
pjfanning commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1829893561

   I had a slightly closer look and am becoming more pessimistic about whether we can support mixed akka/pekko clusters.
   
   Look at this line from the SplitBrainResolver.
   
   context.system.eventStream.subscribe(self, classOf[ThisActorSystemQuarantinedEvent])
   
   ThisActorSystemQuarantinedEvent is in package org.apache.pekko.remote.artery. There is also a similar Akka class but the Pekko SplitBrainResolver will not be listening for Akka ThisActorSystemQuarantinedEvent events - only Pekko ones.
   
   I think if we look around, we'll find this subscribing to the eventStream is common in the cluster code with separate Akka and Pekko classes, I think nodes of different Akka/Pekko type will ignore event stream events of the other type.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "pjfanning (via GitHub)" <gi...@apache.org>.
pjfanning commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1827822181

   I wrote a demo app that shows the #765 do allow Pekko actors to send messages to Akka remote actor instances.
   
   https://github.com/pjfanning/pekko-akka-compat


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org


Re: [I] Provide a way to handle upcoming remote wire incompatibility [incubator-pekko]

Posted by "pjfanning (via GitHub)" <gi...@apache.org>.
pjfanning commented on issue #108:
URL: https://github.com/apache/incubator-pekko/issues/108#issuecomment-1861736319

   @mdedetrich what do you think we need to do this move this on? With your #765 and the extra changes in https://github.com/pjfanning/incubator-pekko/commits/remote-release, it appears that we have some support. See note about PekkoAkkaAeronCluster above.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@pekko.apache.org
For additional commands, e-mail: notifications-help@pekko.apache.org