[ https://issues.apache.org/jira/browse/GEODE-9121?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Juan Ramos updated GEODE-9121: ------------------------------ Attachment: workspace.zip > Regression Introduced Through GEODE-8905 > ---------------------------------------- > > Key: GEODE-9121 > URL: https://issues.apache.org/jira/browse/GEODE-9121 > Project: Geode > Issue Type: Bug > Components: client/server > Affects Versions: 1.15.0 > Reporter: Juan Ramos > Priority: Major > Attachments: workspace.zip > > > The new implementation of the {{JarDeploymentService}} seems to be deleting > resources when a member is gracefully shutdown, which in turns generates a > race condition if there are functions being executed on the member during > that time. > In previous versions, a client application would simply retry the operation > and no exception or loss of availability would be seen, right now the > following exception is thrown on the client instead: > {noformat} > Exception in thread "main" org.apache.geode.cache.execute.FunctionException: > org.apache.geode.cache.client.ServerOperationException: remote server on > 192.168.0.73(3985:loner):49836:c9f57ea7: The function, XXXXXXXX, has not been > registered > at > org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeOnServer(ServerRegionFunctionExecutor.java:237) > at > org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeFunction(ServerRegionFunctionExecutor.java:184) > at > org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.execute(ServerRegionFunctionExecutor.java:388) > at > org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.execute(ServerRegionFunctionExecutor.java:351) > at test.TestClient.main(TestClient.java:20) > Caused by: org.apache.geode.cache.client.ServerOperationException: remote > server on 192.168.0.73(3985:loner):49836:c9f57ea7: The function, XXXXXXXX, > has not been registered > at > org.apache.geode.cache.client.internal.ExecuteRegionFunctionSingleHopOp$ExecuteRegionFunctionSingleHopOpImpl.processResponse(ExecuteRegionFunctionSingleHopOp.java:370) > at > org.apache.geode.cache.client.internal.AbstractOp.processResponse(AbstractOp.java:224) > at > org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:197) > at > org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:384) > at > org.apache.geode.cache.client.internal.AbstractOpWithTimeout.attempt(AbstractOpWithTimeout.java:45) > at > org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:284) > at > org.apache.geode.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:355) > at > org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:756) > at > org.apache.geode.cache.client.internal.OpExecutorImpl.executeOnServer(OpExecutorImpl.java:335) > at > org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:304) > at > org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:840) > at > org.apache.geode.cache.client.internal.SingleHopOperationCallable.call(SingleHopOperationCallable.java:49) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > {noformat} > This seems to be a regression introduced through GEODE-8905. I've tested the > same scenario with version {{1.13.2}} (released), branch {{support/1.14}} and > commit [b80094ec5e|https://github.com/apache/geode/commit/b80094ec5e] with no > problems at all. When testing using commit > [6f764a7046|https://github.com/apache/geode/commit/6f764a7046], on the other > hand, the problem is easily reproducible. > — > How to reproduce the issue: > 1. Download and extract {{workspace.zip}}. > 2. Execute the {{reproduce.sh}} script and follow the instructions on screen. > The version of {{Geode}} to use on server side can be changed through the > {{GEMFIRE}} variable within the {{reproduce.sh}} script. > The version of {{Geode}} to use on client side can be changed through the > {{GEODE_VERSION}} variable within the {{launch_client.sh}} script. > The client application simply executes the {{TestFunction}} forever. When > running the scenario using a version of {{Geode}} that doesn't include commit > [6f764a7046|https://github.com/apache/geode/commit/6f764a7046], the client > simply retries under the hood and no exception is thrown. When using the > current {{develop}} branch, however, an exception is thrown and the client > application terminates as soon as a server is restarted. > [~ukohlmeyer], [~pjohnson]: I'm tagging you both as you were both working on > this feature, feel free to assign the ticket to however you consider > necessary. -- This message was sent by Atlassian Jira (v8.3.4#803005)