[
https://issues.apache.org/jira/browse/GEODE-7880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anilkumar Gingade updated GEODE-7880:
-------------------------------------
Description:
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}
was:
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 two kinds of issues observed:
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}
> 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
> Time Spent: 10m
> 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)