Roman Ovechkin created GEODE-2846: ------------------------------------- Summary: 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)