geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roman Ovechkin (JIRA)" <j...@apache.org>
Subject [jira] [Created] (GEODE-2846) IndexMaintenanceException while PDX ClientTypeRegistration.defineType if using 2 pools by client cache
Date Fri, 28 Apr 2017 20:05:04 GMT
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)

Mime
View raw message