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

Reply via email to