[
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)