[ https://issues.apache.org/jira/browse/GEODE-3580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16157815#comment-16157815 ]
Bruce Schuchardt commented on GEODE-3580: ----------------------------------------- It's easy to set up the test to fail when run stand-alone. Replace the calls to getSystem() in the test with the following: {code} // simulate cache initialization TypeRegistry.setPdxSerializer(mockSerializer); // simulate cache close TypeRegistry.close(); TypeRegistry.setPdxSerializer(null); getSystem(); {code} The test will fail with the same exception. > CI Failure: GemFireDeadlockDetectorDUnitTest > -------------------------------------------- > > Key: GEODE-3580 > URL: https://issues.apache.org/jira/browse/GEODE-3580 > Project: Geode > Issue Type: Bug > Components: serialization > Reporter: Bruce Schuchardt > > This test is failing because the PDX type registry doesn't have a PDX > serializer but thinks that it should. When the PDX TypeRegistry is closed it > leaves behind a static stating that it used to be open. This static isn't > reset until a new cache is created but this test doesn't use a cache - only a > DistributedSystem. When the deadlock detector executes its thread-state > gathering function, which is Serializable, it hits code in > InternalDataSerializer that looks for a PDXSerializer to handle the object > and encounters this problem. > I was going to just change the test to create a cache but I think it's > possible that this same problem could arise in the context of auto-reconnect. > Any attempt to serialize something during auto-reconnect that's not > PDXSerializable, Sendable, DataSerializable or of a well known class could > cause this same exception to be thrown. > {noformat} > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest > > testDistributedDeadlockWithFunction FAILED > java.lang.AssertionError: test is leaving behind an async invocation > thread > at org.junit.Assert.fail(Assert.java:88) > at > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest.waitForAsyncInvocation(GemFireDeadlockDetectorDUnitTest.java:213) > at > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest.testDistributedDeadlockWithFunction(GemFireDeadlockDetectorDUnitTest.java:144) > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest > > testDistributedDeadlockWithDLock FAILED > org.apache.geode.cache.CacheClosedException: Could not PDX serialize > because the cache was closed > at > org.apache.geode.pdx.internal.TypeRegistry.getPdxSerializer(TypeRegistry.java:331) > at > org.apache.geode.internal.InternalDataSerializer.writeUserObject(InternalDataSerializer.java:1536) > at > org.apache.geode.internal.InternalDataSerializer.writeWellKnownObject(InternalDataSerializer.java:1437) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2102) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2936) > at > org.apache.geode.internal.cache.MemberFunctionStreamingMessage.toData(MemberFunctionStreamingMessage.java:308) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2299) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1406) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:232) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:377) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:237) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:603) > at > org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.directChannelSend(GMSMembershipManager.java:1710) > at > org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.send(GMSMembershipManager.java:1900) > at > org.apache.geode.distributed.internal.DistributionChannel.send(DistributionChannel.java:82) > at > org.apache.geode.distributed.internal.DistributionManager.sendOutgoing(DistributionManager.java:3463) > at > org.apache.geode.distributed.internal.DistributionManager.sendMessage(DistributionManager.java:3500) > at > org.apache.geode.distributed.internal.DistributionManager.putOutgoing(DistributionManager.java:1876) > at > org.apache.geode.internal.cache.execute.StreamingFunctionOperation.getFunctionResultFrom(StreamingFunctionOperation.java:108) > at > org.apache.geode.internal.cache.execute.MemberFunctionExecutor.executeFunction(MemberFunctionExecutor.java:155) > at > org.apache.geode.internal.cache.execute.MemberFunctionExecutor.executeFunction(MemberFunctionExecutor.java:201) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:395) > at > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetector.find(GemFireDeadlockDetector.java:99) > at > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest.testDistributedDeadlockWithDLock(GemFireDeadlockDetectorDUnitTest.java:192) > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest > > testNoDeadlock FAILED > org.apache.geode.cache.CacheClosedException: Could not PDX serialize > because the cache was closed > at > org.apache.geode.pdx.internal.TypeRegistry.getPdxSerializer(TypeRegistry.java:331) > at > org.apache.geode.internal.InternalDataSerializer.writeUserObject(InternalDataSerializer.java:1536) > at > org.apache.geode.internal.InternalDataSerializer.writeWellKnownObject(InternalDataSerializer.java:1437) > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2102) > at > org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2936) > at > org.apache.geode.internal.cache.MemberFunctionStreamingMessage.toData(MemberFunctionStreamingMessage.java:308) > at > org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2299) > at > org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1406) > at > org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:232) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:377) > at > org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:237) > at > org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:603) > at > org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.directChannelSend(GMSMembershipManager.java:1710) > at > org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.send(GMSMembershipManager.java:1900) > at > org.apache.geode.distributed.internal.DistributionChannel.send(DistributionChannel.java:82) > at > org.apache.geode.distributed.internal.DistributionManager.sendOutgoing(DistributionManager.java:3463) > at > org.apache.geode.distributed.internal.DistributionManager.sendMessage(DistributionManager.java:3500) > at > org.apache.geode.distributed.internal.DistributionManager.putOutgoing(DistributionManager.java:1876) > at > org.apache.geode.internal.cache.execute.StreamingFunctionOperation.getFunctionResultFrom(StreamingFunctionOperation.java:108) > at > org.apache.geode.internal.cache.execute.MemberFunctionExecutor.executeFunction(MemberFunctionExecutor.java:155) > at > org.apache.geode.internal.cache.execute.MemberFunctionExecutor.executeFunction(MemberFunctionExecutor.java:201) > at > org.apache.geode.internal.cache.execute.AbstractExecution.execute(AbstractExecution.java:395) > at > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetector.find(GemFireDeadlockDetector.java:99) > at > org.apache.geode.distributed.internal.deadlock.GemFireDeadlockDetectorDUnitTest.testNoDeadlock(GemFireDeadlockDetectorDUnitTest.java:99) > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029)