2016-08-20 6 views
0

내 배포판 geode 시스템은 이전에 잘 돌아 갔지만 최근에는 그렇지 않았습니다. 지난 밤 회사의 전원 차단과 관련이 있는지 여부는 알 수 없습니다. 이전에 유지 된 모든 지오 데이터는 이제 역 직렬화 할 수 없습니다. 여기 알 수없는 pdx 유형 = 4

오류 정보입니다 :

Caused by: java.lang.IllegalStateException: Unknown pdx type=4 
    at com.gemstone.gemfire.internal.InternalDataSerializer.readPdxSerializable(InternalDataSerializer.java:3162) 
    at com.gemstone.gemfire.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2979) 
    at com.gemstone.gemfire.DataSerializer.readObject(DataSerializer.java:3210) 
    at com.gemstone.gemfire.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:101) 
    at com.gemstone.gemfire.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1554) 
    at com.gemstone.gemfire.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1546) 
    at com.gemstone.gemfire.internal.cache.PreferBytesCachedDeserializable.getDeserializedValue(PreferBytesCachedDeserializable.java:67) 
    at com.gemstone.gemfire.internal.cache.EntryEventImpl.getOldValue(EntryEventImpl.java:723) 
    at com.gemstone.gemfire.internal.cache.LocalRegion.validatedDestroy(LocalRegion.java:1146) 
    at com.gemstone.gemfire.internal.cache.LocalRegion.destroy(LocalRegion.java:1130) 
    at com.gemstone.gemfire.internal.cache.AbstractRegion.destroy(AbstractRegion.java:315) 
    at com.gemstone.gemfire.internal.cache.LocalRegion.remove(LocalRegion.java:9372) 
    at com.igola.datahub.wwl.geode.WWLResultsDAO.removeByKey(WWLResultsDAO.java:276) 

플레이 프레임 워크와 오드 캐시와 지역의 내 구성에 구축 된 내 프로젝트는 다음과 같이이다 :

cache.setIsServer(true); 

    diskStorage = configuration.getString("geode.storage.name"); 
    String fileStorage = configuration.getString("geode.storage.path"); 
    cache.createDiskStoreFactory() 
      .setDiskDirs(new File[]{new File(fileStorage)}) 
      .setDiskUsageWarningPercentage(0.8f) 
      .setAutoCompact(true) 
      .create(diskStorage); 

geodeCache.getCache() 
      .<DataKey, When2GoData>createRegionFactory(PARTITION_REDUNDANT_PERSISTENT_OVERFLOW) 
      .setStatisticsEnabled(true) 
      .setEntryIdleTimeout(new ExpirationAttributes(TIMEOUT_LONG, ExpirationAction.DESTROY)) 
      .setDiskStoreName(geodeCache.getDiskStorage()) 
      .setPartitionAttributes(new PartitionAttributesFactory<>() 
        .setRedundantCopies(REDUNDANT_COPIES) 
        .setPartitionResolver(new DataKey()) 
        .create()) 
      .create("xxx"); 

cache = new CacheFactory() 
      .set("locators", configuration.getString("geode.locator")) 
      .set("name", configuration.getString("geode.name")+ "-"+ uuid) 
      .set("mcast-port", "0") 
      .set("log-level", "error") 
      .setPdxPersistent(true) 
      .setPdxReadSerialized(true) 
      .create(); 
+0

내가해야 할 일 ... –

+0

UPS를 얻으십시오 :-) –

답변

0

여기 readPdxSerializable 방법에서 관련 코드입니다 :

PdxType pdxType = gfc.getPdxRegistry().getType(typeId); 
if (logger.isTraceEnabled(LogMarker.SERIALIZER)) { 
    logger.trace(LogMarker.SERIALIZER, "readPdxSerializable pdxType={}", pdxType); 
} 
if (pdxType == null) { 
    throw new IllegalStateException("Unknown pdx type=" + typeId); 
} 

캐시에서 더 이상 deserialize 할 수 없기 때문에 타입이 더 이상 타입 레지스트리에 등록되지 않았다는 사실로 인해 생각할 수 있습니다.