2016-08-20 2 views
0

Mon système distribué geode est allé bien avant, mais pas récemment, et je ne sais pas si c'est pertinent à la coupure de courant de l'entreprise la nuit dernière. Il semble que toutes les données de geode ont persisté avant de pouvoir être désérialisées maintenant.Inconnu pdx type = 4

est ici les informations d'erreur:

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) 

mon projet a été construit sur le cadre de jeu et ma configuration du cache géode et la région est comme ceci:

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

que devrais-je faire ... –

+0

Obtenez un UPS ..... :-) –

Répondre

0

Voici le code correspondant de la méthode 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); 
} 

Ainsi, il semble que vous ayez quelque chose dans votre cache que vous ne pouvez plus désérialiser ... en raison (je pense) du fait que le type n'est plus inscrit dans le registre type.