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)

Reply via email to