[ 
https://issues.apache.org/jira/browse/GEODE-7880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Barnes closed GEODE-7880.
------------------------------

> Null exception message causes NPE when calculating pool retries
> ---------------------------------------------------------------
>
>                 Key: GEODE-7880
>                 URL: https://issues.apache.org/jira/browse/GEODE-7880
>             Project: Geode
>          Issue Type: Bug
>          Components: client/server
>            Reporter: Dale Emery
>            Assignee: Dale Emery
>            Priority: Major
>             Fix For: 1.13.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> NPEs observed in testing, caused by:
> * {{ConnectionManagerImpl}} throws a {{NoAvailableServersException}} with no 
> exception message.
> * {{PoolImpl.calculateRetryAttempts()}} attempts to examine the content of 
> the exception message without first checking for {{null}}.
> This is caused by the checkin relating to: GEODE-6536 which added/modified 
> the borrowConnection.
> commit sha: 86defd40c6ba558b53753c51176e05f009bb32c3
> There are several variations of stack trace observed, in relation to 
> borrowConnection:
> 1. NPE
> Stack trace:
> {noformat}
> org.apache.geode.cache.execute.FunctionException: 
> java.lang.NullPointerExceptionorg.apache.geode.cache.execute.FunctionException:
>  java.lang.NullPointerException
>   at 
> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeOnServer(ServerRegionFunctionExecutor.java:215)
>   at 
> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeFunction(ServerRegionFunctionExecutor.java:156)
>   at 
> org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:397)
>   at 
> org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:402)
>   at resumeTx.ResumeTxTest.begin(ResumeTxTest.java:455)
>   at resumeTx.ResumeTxTest.doTransactions(ResumeTxTest.java:285)
>   at resumeTx.ResumeTxTest.concTxWithFE(ResumeTxTest.java:146)
>   at resumeTx.ResumeTxTest.HydraTask_concTxWithFE(ResumeTxTest.java:131)
>   at hydra.TestTask.execute(TestTask.java:197)
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.geode.cache.client.internal.PoolImpl.calculateRetryAttempts(PoolImpl.java:1610)
>   at 
> org.apache.geode.cache.client.internal.SingleHopClientExecutor.submitAllHA(SingleHopClientExecutor.java:124)
>   at 
> org.apache.geode.cache.client.internal.ExecuteRegionFunctionSingleHopOp.execute(ExecuteRegionFunctionSingleHopOp.java:88)
>   at 
> org.apache.geode.cache.client.internal.ServerRegionProxy.executeFunction(ServerRegionProxy.java:727)
>   at 
> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeOnServer(ServerRegionFunctionExecutor.java:206)
> org.apache.geode.cache.execute.FunctionException: 
> java.lang.NullPointerExceptionorg.apache.geode.cache.execute.FunctionException:
>  java.lang.NullPointerException
> Caused by: java.lang.NullPointerException
> {noformat}
> 2. NoAvailableServersException
> {noformat}
> Caused by: org.apache.geode.cache.execute.FunctionException: 
> org.apache.geode.cache.client.NoAvailableServersException
>   at 
> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeOnServer(ServerRegionFunctionExecutor.java:215)
>   at 
> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeFunction(ServerRegionFunctionExecutor.java:158)
>   at 
> org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:397)
>   at 
> org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:402)
>   at 
> parReg.execute.HAExceptionHandlingTest.doRandomFunctionExecutions(HAExceptionHandlingTest.java:268)
>   ... 9 more
> Caused by: org.apache.geode.cache.client.NoAvailableServersException
>   at 
> org.apache.geode.cache.client.internal.pooling.ConnectionManagerImpl.borrowConnection(ConnectionManagerImpl.java:332)
>   at 
> org.apache.geode.cache.client.internal.pooling.ConnectionManagerImpl.borrowConnection(ConnectionManagerImpl.java:70)
>   at 
> org.apache.geode.cache.client.internal.OpExecutorImpl.executeOnServer(OpExecutorImpl.java:329)
>   at 
> org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:303)
>   at 
> org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:834)
>   at 
> org.apache.geode.cache.client.internal.SingleHopOperationCallable.call(SingleHopOperationCallable.java:52)
>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at java.base/java.lang.Thread.run(Thread.java:834)
> {noformat}
> 3. Another variation
> {noformat}
> [warn 2020/03/12 22:39:09.807 PDT <Function Execution Thread-2> tid=0x5c] 
> Could not connect to: rs-FullRegression13040523a0i3large-hydra-client-11:25391
> java.net.ConnectException: Connection refused (Connection refused)
>         at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
>         at 
> java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
>         at 
> java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
>         at 
> java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
>         at 
> java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
>         at java.base/java.net.Socket.connect(Socket.java:609)
>         at 
> org.apache.geode.distributed.internal.tcpserver.AdvancedSocketCreatorImpl.connect(AdvancedSocketCreatorImpl.java:94)
>         at 
> org.apache.geode.internal.net.SCAdvancedSocketCreator.connect(SCAdvancedSocketCreator.java:51)
>         at 
> org.apache.geode.distributed.internal.tcpserver.TcpSocketCreatorImpl.connect(TcpSocketCreatorImpl.java:51)
>         at 
> org.apache.geode.distributed.internal.tcpserver.ClientSocketCreatorImpl.connect(ClientSocketCreatorImpl.java:55)
>         at 
> org.apache.geode.cache.client.internal.ConnectionImpl.connect(ConnectionImpl.java:92)
>         at 
> org.apache.geode.cache.client.internal.ConnectionConnector.connectClientToServer(ConnectionConnector.java:71)
>         at 
> org.apache.geode.cache.client.internal.ConnectionFactoryImpl.createClientToServerConnection(ConnectionFactoryImpl.java:117)
>         at 
> org.apache.geode.cache.client.internal.pooling.ConnectionManagerImpl.createPooledConnection(ConnectionManagerImpl.java:206)
>         at 
> org.apache.geode.cache.client.internal.pooling.ConnectionManagerImpl.borrowConnection(ConnectionManagerImpl.java:327)
>         at 
> org.apache.geode.cache.client.internal.pooling.ConnectionManagerImpl.borrowConnection(ConnectionManagerImpl.java:70)
>         at 
> org.apache.geode.cache.client.internal.OpExecutorImpl.executeOnServer(OpExecutorImpl.java:329)
>         at 
> org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:303)
>         at 
> org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:834)
>         at 
> org.apache.geode.cache.client.internal.SingleHopOperationCallable.call(SingleHopOperationCallable.java:52)
>         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>         at java.base/java.lang.Thread.run(Thread.java:834)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to