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)