[ERROR] [12/13/2013 11:23:17.927] [gekkoRemoting-akka.actor.default-dispatcher-7] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A52321-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:20000/]] arriving at [akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:20000] inbound addresses are [akka.tcp://gekkoR...@10.210.51.121:20000]
For our applications which export remote APIs, we tend to follow this mechanism:
- Server discovers free port on localhost
- Server binds address into a naming service (JNDI, Zookeeper etc) - under a name - like "cool-thing/address/Live"
- Client uses name to lookup a service. Client can "listen" to name to discover service changes (for example, migration to a new host)
The primary driver for this is that no modification should be required for me to migrate a service between hosts
In Akka, there seem to be a few issues with this:1. In my application.conf, I have to *explicitly* state what host my server is running onWhy is this?
It means that, in order to move my server to startup on a new host I need to either redeploy (because my application.conf is sitting in my source dir) or at the very least edit a config file. I don't even understand the requirement as being something typically required: when I'm running the system, it's implicit that the hostname is *this host*! Using "localhost" doesn't work, however - and neither does ommitting hostname entirely, where you get this error when a client tries to connect:[ERROR] [12/13/2013 11:23:17.927] [gekkoRemoting-akka.actor.default-dispatcher-7] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A52321-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:20000/]] arriving at [akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:20000] inbound addresses are [akka.tcp://gekkoR...@10.210.51.121:20000]2. If I let Akka discover a remoting port for me, I can't find out what was chosen (or, if I can, I can't figure out how via the API). This means I cannot bind my location into our naming system - so I have to choose the port myself (not a disaster, of course, but unnecessary)
I'm not necessarily talking about clusters here - but simple client/server applications. Apologies if I'm complaining about things which are already possible!
--Chris
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://akka.io/faq/
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/groups/opt_out.
1) You can override configuration with System.properties (command line/startup) so you do not have to put the address or the port in the config file.
[INFO] [12/13/2013 13:00:17.610] [system-akka.actor.default-dispatcher-3] [Remoting] Remoting started; listening on addresses :[akka.tcp://gekkoRemoting@LOOWCMARSHA2:57111]
[DEBUG] [12/13/2013 13:01:03.420] [gekkoRemoting-akka.actor.default-dispatcher-6] [Remoting] Associated [akka.tcp://gekkoRemoting@LOOWCMARSHA2:57111] <- [akka.tcp://pap...@10.210.51.121:58471][ERROR] [12/13/2013 13:01:03.493] [gekkoRemoting-akka.actor.default-dispatcher-14] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A58471-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:57111/]] arriving at [akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:57111] inbound addresses are [akka.tcp://gekkoRemoting@LOOWCMARSHA2:57111]
Hi Chris,
On Fri, Dec 13, 2013 at 12:50 PM, oxbow_lakes <oxbow...@gmail.com> wrote:
For our applications which export remote APIs, we tend to follow this mechanism:
- Server discovers free port on localhost
- Server binds address into a naming service (JNDI, Zookeeper etc) - under a name - like "cool-thing/address/Live"
- Client uses name to lookup a service. Client can "listen" to name to discover service changes (for example, migration to a new host)
The primary driver for this is that no modification should be required for me to migrate a service between hostsSounds entirely reasonable.In Akka, there seem to be a few issues with this:1. In my application.conf, I have to *explicitly* state what host my server is running onWhy is this?The actor system’s address must be clearly defined, without any magic in it (because that would make things difficult to understand). Therefore the hostname part must be chosen by the user. This does not mean in any way that you need to edit or even use a config file, you can as well set or override this property when creating the Config which you pass to the ActorSystem upon creation. We do that all the time in our tests:val config = ConfigFactory.parseString("akka.remote.netty.tcp { hostname=ZAPHOD\n port=42 }").withFallback(ConfigFactor.load())val system = ActorSystem("Beeblebrox", config)How you obtain the right hostname string (which can either contain an IP or a resolvable name) depends on the environment you deploy into, therefore Akka cannot help you with that part. Whether a hostname is right is defined to answer the question of whether other hosts can connect to this actor system using that piece of information.
It means that, in order to move my server to startup on a new host I need to either redeploy (because my application.conf is sitting in my source dir) or at the very least edit a config file. I don't even understand the requirement as being something typically required: when I'm running the system, it's implicit that the hostname is *this host*! Using "localhost" doesn't work, however - and neither does ommitting hostname entirely, where you get this error when a client tries to connect:
[ERROR] [12/13/2013 11:23:17.927] [gekkoRemoting-akka.actor.default-dispatcher-7] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A52321-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoRemoting...@LOOWCMARSHA2.intra.gsacapital.com:20000/]] arriving at [akka.tcp://gekkoRemoting@LOOWCMARSHA2.intra.gsacapital.com:20000] inbound addresses are [akka.tcp://gekkoRemoting@10.210.51.121:20000]
2. If I let Akka discover a remoting port for me, I can't find out what was chosen (or, if I can, I can't figure out how via the API). This means I cannot bind my location into our naming system - so I have to choose the port myself (not a disaster, of course, but unnecessary)
The default address is available on the ActorRefProvider interface, and extensions can access that on the ExtendedActorSystem. Direct drilling looks likeval addr = system.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddressI'm not necessarily talking about clusters here - but simple client/server applications. Apologies if I'm complaining about things which are already possible!
Since you normally don’t need to know (and should not care) about transport details—assuming clustering ;-) —the docs contain more info under the topic “how to serialize an ActorRef”.Regards,Roland--Chris
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://akka.io/faq/
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/groups/opt_out.
[ERROR] [12/13/2013 13:01:03.493] [gekkoRemoting-akka.actor.default-dispatcher-14] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A58471-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:57111/]] arriving at [akka.tcp://gekkoR...@LOOWCMARSHA2.intra.gsacapital.com:57111] inbound addresses are [akka.tcp://gekkoRemoting@LOOWCMARSHA2:57111]Why is my message getting dropped? Is it to do with the fact that ".intra.gsacapital.com" is missing on the server side? If so - why? It's part of the hostname I send
Hi![ERROR] [12/13/2013 13:01:03.493] [gekkoRemoting-akka.actor.default-dispatcher-14] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A58471-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoRemoting...@LOOWCMARSHA2.intra.gsacapital.com:57111/]] arriving at [akka.tcp://gekkoRemoting@LOOWCMARSHA2.intra.gsacapital.com:57111] inbound addresses are [akka.tcp://gekkoRemoting@LOOWCMARSHA2:57111]
Why is my message getting dropped? Is it to do with the fact that ".intra.gsacapital.com" is missing on the server side? If so - why? It's part of the hostname I send
Yes, the server thinks he has the address [akka.tcp://gekkoRemoting@LOOWCMARSHA2:57111] but the inbound message says it is destined to a machine with address [akka.tcp://gekkoRemoting@LOOWCMARSHA2.intra.gsacapital.com:57111]. Since the two do not match, it thinks it was not sent to him.-Endre
The client connect code is looking up this actor:
Hi Chris,
On Fri, Dec 13, 2013 at 12:50 PM, oxbow_lakes <oxbow...@gmail.com> wrote:
For our applications which export remote APIs, we tend to follow this mechanism:
- Server discovers free port on localhost
- Server binds address into a naming service (JNDI, Zookeeper etc) - under a name - like "cool-thing/address/Live"
- Client uses name to lookup a service. Client can "listen" to name to discover service changes (for example, migration to a new host)
The primary driver for this is that no modification should be required for me to migrate a service between hostsSounds entirely reasonable.In Akka, there seem to be a few issues with this:1. In my application.conf, I have to *explicitly* state what host my server is running onWhy is this?The actor system’s address must be clearly defined, without any magic in it (because that would make things difficult to understand). Therefore the hostname part must be chosen by the user. This does not mean in any way that you need to edit or even use a config file, you can as well set or override this property when creating the Config which you pass to the ActorSystem upon creation. We do that all the time in our tests:val config = ConfigFactory.parseString("akka.remote.netty.tcp { hostname=ZAPHOD\n port=42 }").withFallback(ConfigFactor.load())val system = ActorSystem("Beeblebrox", config)How you obtain the right hostname string (which can either contain an IP or a resolvable name) depends on the environment you deploy into, therefore Akka cannot help you with that part. Whether a hostname is right is defined to answer the question of whether other hosts can connect to this actor system using that piece of information.
It means that, in order to move my server to startup on a new host I need to either redeploy (because my application.conf is sitting in my source dir) or at the very least edit a config file. I don't even understand the requirement as being something typically required: when I'm running the system, it's implicit that the hostname is *this host*! Using "localhost" doesn't work, however - and neither does ommitting hostname entirely, where you get this error when a client tries to connect:
[ERROR] [12/13/2013 11:23:17.927] [gekkoRemoting-akka.actor.default-dispatcher-7] [akka://gekkoRemoting/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fpapagui%4010.210.51.121%3A52321-0/endpointWriter] dropping message [class akka.actor.SelectChildName] for non-local recipient [Actor[akka.tcp://gekkoRemoting...@LOOWCMARSHA2.intra.gsacapital.com:20000/]] arriving at [akka.tcp://gekkoRemoting@LOOWCMARSHA2.intra.gsacapital.com:20000] inbound addresses are [akka.tcp://gekkoRemoting@10.210.51.121:20000]
2. If I let Akka discover a remoting port for me, I can't find out what was chosen (or, if I can, I can't figure out how via the API). This means I cannot bind my location into our naming system - so I have to choose the port myself (not a disaster, of course, but unnecessary)
The default address is available on the ActorRefProvider interface, and extensions can access that on the ExtendedActorSystem. Direct drilling looks likeval addr = system.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddressI'm not necessarily talking about clusters here - but simple client/server applications. Apologies if I'm complaining about things which are already possible!
Since you normally don’t need to know (and should not care) about transport details—assuming clustering ;-) —the docs contain more info under the topic “how to serialize an ActorRef”.Regards,Roland--Chris
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://akka.io/faq/
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to a topic in the Google Groups "Akka User List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/akka-user/kUP6bDTzmNM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to akka-user+...@googlegroups.com.