You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by "Roman Ovechkin (JIRA)" <ji...@apache.org> on 2017/05/02 15:46:04 UTC

[jira] [Commented] (GEODE-2846) IndexMaintenanceException while PDX ClientTypeRegistration.defineType if using 2 pools by client cache

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