[ https://issues.apache.org/jira/browse/GEODE-4822?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16396347#comment-16396347 ]
Vlad Ermolaev commented on GEODE-4822: -------------------------------------- I have just tested it with ReflectionBasedAutoSerializer - everything works fine. Another option is to not configure any serializer and make region entities PdxSerializable. > The second server instance startup error: Could not create an instance of > PartitionRegionConfig > ----------------------------------------------------------------------------------------------- > > Key: GEODE-4822 > URL: https://issues.apache.org/jira/browse/GEODE-4822 > Project: Geode > Issue Type: Bug > Components: serialization > Reporter: Vlad Ermolaev > Priority: Major > > I have a simple configuration containing a partitioned persistent region and > an async queue: > {code:xml} > <async-event-queue id="userQueue" persistent="true" parallel="true" > dispatcher-threads="1" enable-batch-conflation="true" batch-size="10" > batch-time-interval="10"> > <async-event-listener> > <class-name>test.geode.UserQueueListener</class-name> > </async-event-listener> > </async-event-queue> > <pdx persistent="true" read-serialized="true"> > <pdx-serializer> > <class-name>test.geode.util.PdxSerializerWrapper</class-name> > </pdx-serializer> > </pdx> > <region name="Users" refid="PARTITION_REDUNDANT_PERSISTENT"> > <region-attributes initial-capacity="101" load-factor="0.85" > async-event-queue-ids="userQueue"> > <key-constraint>java.lang.Long</key-constraint> > <value-constraint>test.geode.domain.User</value-constraint> > </region-attributes> > </region> > {code} > > The first server instance successfully started. > But the second one in always failing on startup. The problem disappears if I > remove the <async-event-queue> config or disable PDX serialization. > Here is the stacktrace of the failed instance: > {code} > [info 2018/03/12 11:01:43.880 CET server2 <main> tid=0x1] Initializing region > PdxTypes > [info 2018/03/12 11:01:43.893 CET server2 <main> tid=0x1] Region PdxTypes > requesting initial image from 192.168.178.159(server1:23330)<v1>:1025 > [info 2018/03/12 11:01:43.897 CET server2 <main> tid=0x1] PdxTypes is done > getting image from 192.168.178.159(server1:23330)<v1>:1025. isDeltaGII is true > [info 2018/03/12 11:01:43.897 CET server2 <main> tid=0x1] Region PdxTypes > initialized persistent id: > /192.168.178.159:/u01/home/chet/projects/geode/server2/store/pdx created at > timestamp 1520848903878 version 0 diskStoreId > 9d7c3e96b525418d-ae5b85e1966f3a51 name server2 with data from > 192.168.178.159(server1:23330)<v1>:1025. > [info 2018/03/12 11:01:43.897 CET server2 <main> tid=0x1] Initialization of > region PdxTypes completed > [info 2018/03/12 11:01:43.901 CET server2 <main> tid=0x1] Recovered disk > store mainStore with unique id 11c1012c13d04a3e-9309c26560d9fd33 > [info 2018/03/12 11:01:43.902 CET server2 <main> tid=0x1] recovery region > initialization took 0 ms > [info 2018/03/12 11:01:43.907 CET server2 <main> tid=0x1] Created disk store > queueStore with unique id 308f63b00ee045f9-a6cfaea88f894c7a > [info 2018/03/12 11:01:43.908 CET server2 <main> tid=0x1] recovery region > initialization took 0 ms > [info 2018/03/12 11:01:43.929 CET server2 <main> tid=0x1] Initializing region > gatewayEventIdIndexMetaData > [info 2018/03/12 11:01:43.933 CET server2 <main> tid=0x1] Region > gatewayEventIdIndexMetaData requesting initial image from > 192.168.178.159(server1:23330)<v1>:1025 > [info 2018/03/12 11:01:43.935 CET server2 <main> tid=0x1] > gatewayEventIdIndexMetaData is done getting image from > 192.168.178.159(server1:23330)<v1>:1025. isDeltaGII is false > [info 2018/03/12 11:01:43.935 CET server2 <main> tid=0x1] Initialization of > region gatewayEventIdIndexMetaData completed > [info 2018/03/12 11:01:43.944 CET server2 <main> tid=0x1] > ConcurrentParallelGatewaySenderEventProcessor: dispatcher threads 1 > [info 2018/03/12 11:01:43.953 CET server2 <main> tid=0x1] Started > ParallelGatewaySender{id=AsyncEventQueue_userQueue,remoteDsId=-1,isRunning > =true} > [info 2018/03/12 11:01:43.985 CET server2 <main> tid=0x1] Initializing region > __PR > [info 2018/03/12 11:01:43.989 CET server2 <main> tid=0x1] Region __PR > requesting initial image from 192.168.178.159(server1:23330)<v1>:1025 > [info 2018/03/12 11:01:44.001 CET server2 <Pooled High Priority Message > Processor 2> tid=0x32] Adding: PdxType[dsid=0, typenum=2161953 > name=java.util.Collections$UnmodifiableSet > fields=[ > c:Object:0:idx0(relativeOffset)=0:idx1(vlfOffsetIndex)=-1 > empty:boolean:1:idx0(relativeOffset)=-1:idx1(vlfOffsetIndex)=-1]] > [info 2018/03/12 11:01:44.005 CET server2 <main> tid=0x1] __PR failed to get > image from 192.168.178.159(server1:23330)<v1>:1025 > [warning 2018/03/12 11:01:44.006 CET server2 <main> tid=0x1] Initialization > failed for Region /__PR > org.apache.geode.SerializationException: Could not create an instance of > org.apache.geode.internal.cache.PartitionRegionConfig . > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2474) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.DSFIDFactory.create(DSFIDFactory.java:990) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2784) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.DataSerializer.readObject(DataSerializer.java:2961) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:99) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1951) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1944) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.VMCachedDeserializable.getDeserializedValue(VMCachedDeserializable.java:134) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.entries.AbstractRegionEntry.initialImageInit(AbstractRegionEntry.java:693) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:977) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.InitialImageOperation.processChunk(InitialImageOperation.java:935) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.InitialImageOperation$ImageProcessor.process(InitialImageOperation.java:1265) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:213) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.InitialImageOperation$ImageReplyMessage.process(InitialImageOperation.java:2741) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.ReplyMessage.dmProcess(ReplyMessage.java:193) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:186) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:382) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:448) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:1099) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionManager.access$000(DistributionManager.java:108) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionManager$5$1.run(DistributionManager.java:820) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > java.lang.Thread.run(Thread.java:748) > at > org.apache.geode.distributed.internal.ReplyException.handleAsUnexpected(ReplyException.java:85) > at > org.apache.geode.internal.cache.InitialImageOperation.getFromOne(InitialImageOperation.java:501) > at > org.apache.geode.internal.cache.DistributedRegion.getInitialImageAndRecovery(DistributedRegion.java:1217) > at > org.apache.geode.internal.cache.DistributedRegion.initialize(DistributedRegion.java:1059) > at > org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3089) > at > org.apache.geode.internal.cache.PartitionedRegionHelper.getPRRoot(PartitionedRegionHelper.java:271) > at > org.apache.geode.internal.cache.PartitionedRegionHelper.getPRRoot(PartitionedRegionHelper.java:190) > at > org.apache.geode.internal.cache.PartitionedRegion.initializePartitionedRegion(PartitionedRegion.java:1267) > at > org.apache.geode.internal.cache.PartitionedRegion.initPRInternals(PartitionedRegion.java:985) > at > org.apache.geode.internal.cache.PartitionedRegion.initialize(PartitionedRegion.java:1166) > at > org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3089) > at > org.apache.geode.internal.cache.GemFireCacheImpl.basicCreateRegion(GemFireCacheImpl.java:2989) > at > org.apache.geode.internal.cache.xmlcache.RegionCreation.createRoot(RegionCreation.java:243) > at > org.apache.geode.internal.cache.xmlcache.CacheCreation.initializeRegions(CacheCreation.java:563) > at > org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:517) > at > org.apache.geode.internal.cache.xmlcache.CacheXmlParser.create(CacheXmlParser.java:338) > at > org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4313) > at > org.apache.geode.internal.cache.GemFireCacheImpl.initializeDeclarativeCache(GemFireCacheImpl.java:1403) > at > org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1203) > at > org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:778) > at > org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:764) > at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:175) > at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:222) > at > org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:52) > at > org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:844) > at > org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:762) > at > org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:692) > at > org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:226) > Caused by: java.lang.ClassCastException: > org.apache.geode.pdx.internal.PdxInstanceImpl cannot be cast to java.util.Set > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.PartitionRegionConfig.fromData(PartitionRegionConfig.java:320) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2463) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.DSFIDFactory.create(DSFIDFactory.java:990) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2784) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.DataSerializer.readObject(DataSerializer.java:2961) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:99) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1951) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1944) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.VMCachedDeserializable.getDeserializedValue(VMCachedDeserializable.java:134) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.entries.AbstractRegionEntry.initialImageInit(AbstractRegionEntry.java:693) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:977) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.InitialImageOperation.processChunk(InitialImageOperation.java:935) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.InitialImageOperation$ImageProcessor.process(InitialImageOperation.java:1265) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:213) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.internal.cache.InitialImageOperation$ImageReplyMessage.process(InitialImageOperation.java:2741) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.ReplyMessage.dmProcess(ReplyMessage.java:193) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:186) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:382) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:448) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:1099) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionManager.access$000(DistributionManager.java:108) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > org.apache.geode.distributed.internal.DistributionManager$5$1.run(DistributionManager.java:820) > at Remote Member '192.168.178.159(server2:24615)<v4>:1026' in > java.lang.Thread.run(Thread.java:748) > {code} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)