[ 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)