Why does my HAClient appear to hang when my server is down or the URI is incorrect?
In most cases, the client isn't actually hung, but the ServerChooser
is continuing to try to connect to the list of URIs without success. The client appears to be hung because none of the servers are responding.
This behavior is actually dependent on the ServerChooser
implementation that you are using with your HAClient
. Inside the HAClient
, the connectAndLogon
function will run continuously until it succeeds in connecting. The only other way it will stop is if either the ServerChooser
throws an exception from its getCurrentURI
function, or if the ServerChooser
returns an empty string for the URI. The AMPS Client DefaultServerChooser
does not ever do either of those things. It simply returns the next URI from self and will loop through its internal list repeatedly.
There are two ways to prevent this behavior in recent AMPS client releases. First, you can set a maximum timeout in the DelayStrategy
that you use.
Second, you can also implement your own ServerChooser
class if you need a different behavior. Once implemented, use it in the same way you are currently using the DefaultServerChooser
and you will see the client no longer appear to hang. Here is a simple example in Java.
Last updated