[ https://issues.apache.org/jira/browse/GEODE-2846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15993132#comment-15993132 ]
Roman Ovechkin commented on GEODE-2846: --------------------------------------- The main question is Why newly defined type is sent to only ONE pool and not to ALL in here: ClientTypeRegistration.defineType(PdxType) line: 61 > IndexMaintenanceException while PDX ClientTypeRegistration.defineType if > using 2 pools by client cache > ------------------------------------------------------------------------------------------------------ > > Key: GEODE-2846 > URL: https://issues.apache.org/jira/browse/GEODE-2846 > Project: Geode > Issue Type: Bug > Components: serialization > Reporter: Roman Ovechkin > > Client has configuration with 2 regions and 2 Pools - /region1 in pool1, > /region2 in pool2 (two different distributed systems), using > PdxAutoSerializer, Want to put Object1 to /region1 and Object2 to /region2. > During put operation at first, AutoSerialiser generates new PDX type for > Object1, and sending this type to ONLY one pool (and wrong one) it sends type > to arbitrary first available pool which in my case is pool2, > after that it's trying to put value to /region1 which is in pool 1 and > because /region1 has indexes it cause IndexMaintenanceException: unknown pdx > type. > I guess pdx types must be sent to all pools while defining. > Here is full stack trace where issue happening: > ClientTypeRegistration.defineType(PdxType) line: 61 > TypeRegistry.defineType(PdxType) line: 195 > TypeRegistry.defineLocalType(Object, PdxType) line: 234 > PdxWriterImpl.completeByteStreamGeneration() line: 481 > PdxWriterImpl.getAutoPdxType() line: 510 > AutoSerializableManager.writeData(PdxWriter, Object, > AutoSerializableManager$AutoClassInfo) line: 1891 > AutoSerializableManager.writeData(PdxWriter, Object) line: 1829 > ReflectionBasedAutoSerializer.toData(Object, PdxWriter) line: 316 > InternalDataSerializer.writePdx(DataOutput, GemFireCacheImpl, Object, > PdxSerializer) line: 3106 > InternalDataSerializer.writeUserObject(Object, DataOutput, boolean) > line: 1587 > InternalDataSerializer.writeWellKnownObject(Object, DataOutput, > boolean) line: 1482 > InternalDataSerializer.basicWriteObject(Object, DataOutput, boolean) > line: 2188 > DataSerializer.writeObject(Object, DataOutput) line: 2871 > BlobHelper.serializeTo(Object, HeapDataOutputStream) line: 66 > Message.serializeAndAddPart(Object, boolean) line: 395 > Message.addObjPart(Object, boolean) line: 344 > Message.addObjPart(Object) line: 324 > PutOp$PutOpImpl.<init>(Region, Object, Object, byte[], EntryEventImpl, > Operation, boolean, Object, Object, boolean, boolean) line: 304 > PutOp.execute(ExecutablePool, LocalRegion, Object, Object, byte[], > EntryEventImpl, Operation, boolean, Object, Object, boolean) line: 73 > ServerRegionProxy.put(Object, Object, byte[], EntryEventImpl, > Operation, boolean, Object, Object, boolean) line: 175 > LocalRegion.serverPut(EntryEventImpl, boolean, Object) line: 3173 > LocalRegion.cacheWriteBeforePut(EntryEventImpl, Set, CacheWriter, > boolean, Object) line: 3300 > ProxyRegionMap.basicPut(EntryEventImpl, long, boolean, boolean, Object, > boolean, boolean) line: 231 > LocalRegion.virtualPut(EntryEventImpl, boolean, boolean, Object, > boolean, long, boolean) line: 5955 > LocalRegionDataView.putEntry(EntryEventImpl, boolean, boolean, Object, > boolean, long, boolean) line: 132 > LocalRegion.basicPut(EntryEventImpl, boolean, boolean, Object, boolean) > line: 5350 > LocalRegion.validatedPut(EntryEventImpl, long) line: 1668 > LocalRegion.put(Object, Object, Object) line: 1655 > LocalRegion(AbstractRegion).put(Object, Object) line: 288 > ... -- This message was sent by Atlassian JIRA (v6.3.15#6346)