You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geode.apache.org by Paul Perez <pa...@pymma.com> on 2017/12/12 18:23:44 UTC

ServerRefusedConnectionException

Hello all, 

I hope you are well after this wonderful SpringOne. 

 

In our project, we use Geode to transfer a message from a client A to a
client B. But before sending the message, A checks if B is alive. 

To do it, we defined a region where each client put an entry in a region
named AliveSigns to declare it is alive. When a B entry expires, we consider
that the client is unavailable. 

 

To test this feature, we unplug and re-plug the network cable of the client
B. 

When we re-plug, Geode auto reconnects the client B to the server. But
regularly we get the exception below: 

 

[warn 2017/12/12 16:55:08.336 GMT <queueTimer-DEFAULT> tid=235] Cache Client
Updater Thread  on 192.168.102.11(server1:16260)<v1>:1025 port 40404
(DESKTOP-EKI1601:40404): Caught following exception while attempting to
create a server-to-client communication socket and will exit:
org.apache.geode.cache.client.ServerRefusedConnectionException: <null
inet_addr hostname><ec>:40404 refused connection: A previous connection
attempt from this client is still being processed:
identity(192.168.102.12(distributedESBCache:6304:loner):60248:b034a24b:distr
ibutedESBCache,connection=1

 

And when the reconnected client wants to put an entry to notify its
availability, we get that exception

 

org.apache.geode.cache.client.ServerConnectivityException: Pool unexpected
socket timed out on client connection=Pooled Connection to
DESKTOP-EKI1601:40404: Connection[DESKTOP-EKI1601:40404]@362441860). Server
unreachable: could not connect after 1 attempts

        at
org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExec
utorImpl.java:798)

        at
org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExec
utorImpl.java:623)

        at
org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl
.java:174)

        at
org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl
.java:115)

        at
org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:774)

        at
org.apache.geode.cache.client.internal.PutOp.execute(PutOp.java:91)

        at
org.apache.geode.cache.client.internal.ServerRegionProxy.put(ServerRegionPro
xy.java:159)

        at
org.apache.geode.internal.cache.LocalRegion.serverPut(LocalRegion.java:2987)

        at
org.apache.geode.internal.cache.LocalRegion.cacheWriteBeforePut(LocalRegion.
java:3096)

        at
org.apache.geode.internal.cache.ProxyRegionMap.basicPut(ProxyRegionMap.java:
222)

        at
org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5598
)

        at
org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionData
View.java:151)

        at
org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5027)

        at
org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:15
80)

        at
org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1567)

        at
org.apache.geode.internal.cache.AbstractRegion.put(AbstractRegion.java:325)

        at
com.pymma.jbi.messaging.distributed.GeodeClient.sendAliveSign(GeodeClient.ja
va:206)

        at
com.sun.jbi.messaging.MessageService$1.run(MessageService.java:372)

        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)

        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$
301(ScheduledThreadPoolExecutor.java:180)

        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Sch
eduledThreadPoolExecutor.java:294)

        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
42)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
17)

        at java.lang.Thread.run(Thread.java:748)

 

This fault only occurs when AliveSigns is a PARTITIONED REGION.

Strangely, we can put entries in any other REPLICATED REGIONS located on the
same server.

 

We reconfigured the region AliveSigns as a REPLICATED REGION and it worked
well. 

 

Did someone face the same issue?

 

Please feel free to ask more details if needed. 

 

Thank you for your help

 

Best regards

 

Paul Perez Chief Architect

Pymma Consulting

--------------------------

Tel: +44 79 44 36 04 65 

Skype ID : polperez

 


Re: ServerRefusedConnectionException

Posted by Dan Smith <ds...@pivotal.io>.
Does the error go away after a period of time from the client? I think the
client has some functionality to blacklist servers that it can't connect to
for one ping interval (10 seconds).

-Dan

On Wed, Dec 13, 2017 at 1:21 AM, Rupert St John Webster <
rupert@impress-solutions.com> wrote:

> Are you using SSL by any chance? We have the same error from native
> clients if we enable SSL: *A previous connection attempt from this client
> is still being processed*
>
>
>
> https://stackoverflow.com/questions/46569723/geode-
> authentication-produces-handshake-rejected-by-server
>
>
>
> *From:* Swapnil Bawaskar [mailto:sbawaskar@pivotal.io]
> *Sent:* 13 December 2017 00:43
> *To:* user@geode.apache.org; paul.perez@pymma.com
> *Cc:* david.dumoulin@telecom-sudparis.eu
> *Subject:* Re: ServerRefusedConnectionException
>
>
>
> Hi Paul,
>
> I cannot think of any reason why replicate region would work but the
> partition region would not, because the connection pooling is completely
> orthogonal to the region types.
>
>
>
> How quickly after disconnecting the client do you connect it back? The
> server monitors the clients connected to it and if they do not receive a
> ping from a client in 60 seconds the server will disconnect the client. You
> can change the timeout using maximum-time-between-pings
> <http://geode.apache.org/docs/guide/13/reference/topics/cache_xml.html#cache_xml_cache>
> property in cache.xml.
>
>
>
>
>
> On Tue, Dec 12, 2017 at 10:24 AM Paul Perez <pa...@pymma.com> wrote:
>
> Hello all,
>
> I hope you are well after this wonderful SpringOne.
>
>
>
> In our project, we use Geode to transfer a message from a client A to a
> client B. But before sending the message, A checks if B is alive.
>
> To do it, we defined a region where each client put an entry in a region
> named *AliveSigns* to declare it is alive. When a B entry expires, we
> consider that the client is unavailable.
>
>
>
> To test this feature, we unplug and re-plug the network cable of the
> client B.
>
> When we re-plug, Geode auto reconnects the client B to the server. But
> regularly we get the exception below:
>
>
>
> *[warn 2017/12/12 16:55:08.336 GMT <queueTimer-DEFAULT> tid=235] Cache
> Client Updater Thread  on 192.168.102.11(server1:16260)<v1>:1025 port 40404
> (DESKTOP-EKI1601:40404): Caught following exception while attempting to
> create a server-to-client communication socket and will exit:
> org.apache.geode.cache.client.ServerRefusedConnectionException: <null
> inet_addr hostname><ec>:40404 refused connection: A previous connection
> attempt from this client is still being processed:
> identity(192.168.102.12(distributedESBCache:6304:loner):60248:b034a24b:distributedESBCache,connection=1*
>
>
>
> And when the reconnected client wants to put an entry to notify its
> availability, we get that exception
>
>
>
> *org.apache.geode.cache.client.ServerConnectivityException: Pool
> unexpected socket timed out on client connection=Pooled Connection to
> DESKTOP-EKI1601:40404: Connection[DESKTOP-EKI1601:40404]@362441860). Server
> unreachable: could not connect after 1 attempts*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:798)*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:623)*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:174)*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:115)*
>
> *        at
> org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:774)*
>
> *        at
> org.apache.geode.cache.client.internal.PutOp.execute(PutOp.java:91)*
>
> *        at
> org.apache.geode.cache.client.internal.ServerRegionProxy.put(ServerRegionProxy.java:159)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.serverPut(LocalRegion.java:2987)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.cacheWriteBeforePut(LocalRegion.java:3096)*
>
> *        at
> org.apache.geode.internal.cache.ProxyRegionMap.basicPut(ProxyRegionMap.java:222)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5598)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:151)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5027)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1580)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1567)*
>
> *        at
> org.apache.geode.internal.cache.AbstractRegion.put(AbstractRegion.java:325)*
>
> *        at
> com.pymma.jbi.messaging.distributed.GeodeClient.sendAliveSign(GeodeClient.java:206)*
>
> *        at
> com.sun.jbi.messaging.MessageService$1.run(MessageService.java:372)*
>
> *        at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)*
>
> *        at
> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)*
>
> *        at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)*
>
> *        at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)*
>
> *        at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)*
>
> *        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)*
>
> *        at java.lang.Thread.run(Thread.java:748)*
>
>
>
> This fault only occurs when AliveSigns is a PARTITIONED REGION.
>
> Strangely, we can put entries in any other REPLICATED REGIONS located on
> the same server.
>
>
>
> We reconfigured the region AliveSigns as a REPLICATED REGION and it worked
> well.
>
>
>
> Did someone face the same issue?
>
>
>
> Please feel free to ask more details if needed.
>
>
>
> Thank you for your help
>
>
>
> Best regards
>
>
>
> Paul Perez Chief Architect
>
> Pymma Consulting
>
> --------------------------
>
> Tel: +44 79 44 36 04 65
>
> Skype ID : polperez
>
>
>
>

RE: ServerRefusedConnectionException

Posted by Rupert St John Webster <ru...@impress-solutions.com>.
Are you using SSL by any chance? We have the same error from native clients if we enable SSL: A previous connection attempt from this client is still being processed

https://stackoverflow.com/questions/46569723/geode-authentication-produces-handshake-rejected-by-server

From: Swapnil Bawaskar [mailto:sbawaskar@pivotal.io]
Sent: 13 December 2017 00:43
To: user@geode.apache.org; paul.perez@pymma.com
Cc: david.dumoulin@telecom-sudparis.eu
Subject: Re: ServerRefusedConnectionException

Hi Paul,
I cannot think of any reason why replicate region would work but the partition region would not, because the connection pooling is completely orthogonal to the region types.

How quickly after disconnecting the client do you connect it back? The server monitors the clients connected to it and if they do not receive a ping from a client in 60 seconds the server will disconnect the client. You can change the timeout using maximum-time-between-pings<http://geode.apache.org/docs/guide/13/reference/topics/cache_xml.html#cache_xml_cache> property in cache.xml.


On Tue, Dec 12, 2017 at 10:24 AM Paul Perez <pa...@pymma.com>> wrote:
Hello all,
I hope you are well after this wonderful SpringOne.

In our project, we use Geode to transfer a message from a client A to a client B. But before sending the message, A checks if B is alive.
To do it, we defined a region where each client put an entry in a region named AliveSigns to declare it is alive. When a B entry expires, we consider that the client is unavailable.

To test this feature, we unplug and re-plug the network cable of the client B.
When we re-plug, Geode auto reconnects the client B to the server. But regularly we get the exception below:

[warn 2017/12/12 16:55:08.336 GMT <queueTimer-DEFAULT> tid=235] Cache Client Updater Thread  on 192.168.102.11(server1:16260)<v1>:1025 port 40404 (DESKTOP-EKI1601:40404): Caught following exception while attempting to create a server-to-client communication socket and will exit: org.apache.geode.cache.client.ServerRefusedConnectionException: <null inet_addr hostname><ec>:40404 refused connection: A previous connection attempt from this client is still being processed: identity(192.168.102.12(distributedESBCache:6304:loner):60248:b034a24b:distributedESBCache,connection=1

And when the reconnected client wants to put an entry to notify its availability, we get that exception

org.apache.geode.cache.client.ServerConnectivityException: Pool unexpected socket timed out on client connection=Pooled Connection to DESKTOP-EKI1601:40404: Connection[DESKTOP-EKI1601:40404]@362441860). Server unreachable: could not connect after 1 attempts
        at org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:798)
        at org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:623)
        at org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:174)
        at org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:115)
        at org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:774)
        at org.apache.geode.cache.client.internal.PutOp.execute(PutOp.java:91)
        at org.apache.geode.cache.client.internal.ServerRegionProxy.put(ServerRegionProxy.java:159)
        at org.apache.geode.internal.cache.LocalRegion.serverPut(LocalRegion.java:2987)
        at org.apache.geode.internal.cache.LocalRegion.cacheWriteBeforePut(LocalRegion.java:3096)
        at org.apache.geode.internal.cache.ProxyRegionMap.basicPut(ProxyRegionMap.java:222)
        at org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5598)
        at org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:151)
        at org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5027)
        at org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1580)
        at org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1567)
        at org.apache.geode.internal.cache.AbstractRegion.put(AbstractRegion.java:325)
        at com.pymma.jbi.messaging.distributed.GeodeClient.sendAliveSign(GeodeClient.java:206)
        at com.sun.jbi.messaging.MessageService$1.run(MessageService.java:372)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)

This fault only occurs when AliveSigns is a PARTITIONED REGION.
Strangely, we can put entries in any other REPLICATED REGIONS located on the same server.

We reconfigured the region AliveSigns as a REPLICATED REGION and it worked well.

Did someone face the same issue?

Please feel free to ask more details if needed.

Thank you for your help

Best regards

Paul Perez Chief Architect
Pymma Consulting
--------------------------
Tel: +44 79 44 36 04 65
Skype ID : polperez


Re: ServerRefusedConnectionException

Posted by Swapnil Bawaskar <sb...@pivotal.io>.
Hi Paul,
I cannot think of any reason why replicate region would work but the
partition region would not, because the connection pooling is completely
orthogonal to the region types.

How quickly after disconnecting the client do you connect it back? The
server monitors the clients connected to it and if they do not receive a
ping from a client in 60 seconds the server will disconnect the client. You
can change the timeout using maximum-time-between-pings
<http://geode.apache.org/docs/guide/13/reference/topics/cache_xml.html#cache_xml_cache>
property in cache.xml.


On Tue, Dec 12, 2017 at 10:24 AM Paul Perez <pa...@pymma.com> wrote:

> Hello all,
>
> I hope you are well after this wonderful SpringOne.
>
>
>
> In our project, we use Geode to transfer a message from a client A to a
> client B. But before sending the message, A checks if B is alive.
>
> To do it, we defined a region where each client put an entry in a region
> named *AliveSigns* to declare it is alive. When a B entry expires, we
> consider that the client is unavailable.
>
>
>
> To test this feature, we unplug and re-plug the network cable of the
> client B.
>
> When we re-plug, Geode auto reconnects the client B to the server. But
> regularly we get the exception below:
>
>
>
> *[warn 2017/12/12 16:55:08.336 GMT <queueTimer-DEFAULT> tid=235] Cache
> Client Updater Thread  on 192.168.102.11(server1:16260)<v1>:1025 port 40404
> (DESKTOP-EKI1601:40404): Caught following exception while attempting to
> create a server-to-client communication socket and will exit:
> org.apache.geode.cache.client.ServerRefusedConnectionException: <null
> inet_addr hostname><ec>:40404 refused connection: A previous connection
> attempt from this client is still being processed:
> identity(192.168.102.12(distributedESBCache:6304:loner):60248:b034a24b:distributedESBCache,connection=1*
>
>
>
> And when the reconnected client wants to put an entry to notify its
> availability, we get that exception
>
>
>
> *org.apache.geode.cache.client.ServerConnectivityException: Pool
> unexpected socket timed out on client connection=Pooled Connection to
> DESKTOP-EKI1601:40404: Connection[DESKTOP-EKI1601:40404]@362441860). Server
> unreachable: could not connect after 1 attempts*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:798)*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:623)*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:174)*
>
> *        at
> org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:115)*
>
> *        at
> org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:774)*
>
> *        at
> org.apache.geode.cache.client.internal.PutOp.execute(PutOp.java:91)*
>
> *        at
> org.apache.geode.cache.client.internal.ServerRegionProxy.put(ServerRegionProxy.java:159)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.serverPut(LocalRegion.java:2987)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.cacheWriteBeforePut(LocalRegion.java:3096)*
>
> *        at
> org.apache.geode.internal.cache.ProxyRegionMap.basicPut(ProxyRegionMap.java:222)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5598)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:151)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5027)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1580)*
>
> *        at
> org.apache.geode.internal.cache.LocalRegion.put(LocalRegion.java:1567)*
>
> *        at
> org.apache.geode.internal.cache.AbstractRegion.put(AbstractRegion.java:325)*
>
> *        at
> com.pymma.jbi.messaging.distributed.GeodeClient.sendAliveSign(GeodeClient.java:206)*
>
> *        at
> com.sun.jbi.messaging.MessageService$1.run(MessageService.java:372)*
>
> *        at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)*
>
> *        at
> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)*
>
> *        at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)*
>
> *        at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)*
>
> *        at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)*
>
> *        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)*
>
> *        at java.lang.Thread.run(Thread.java:748)*
>
>
>
> This fault only occurs when AliveSigns is a PARTITIONED REGION.
>
> Strangely, we can put entries in any other REPLICATED REGIONS located on
> the same server.
>
>
>
> We reconfigured the region AliveSigns as a REPLICATED REGION and it worked
> well.
>
>
>
> Did someone face the same issue?
>
>
>
> Please feel free to ask more details if needed.
>
>
>
> Thank you for your help
>
>
>
> Best regards
>
>
>
> Paul Perez Chief Architect
>
> Pymma Consulting
>
> --------------------------
>
> Tel: +44 79 44 36 04 65
>
> Skype ID : polperez
>
>
>