2016-12-05 1 views
0

J'exécute 2 instances du serveur Jboss Datagrid dans RHEL en mode distribué. J'utilise le stockage de cache leveldb comme cache de niveau 2. Ces deux instances doivent utiliser le même chemin de stockage de cache leveldb et doivent écrire la clé/valeur dans ce chemin.Jboss Datagrid serveur leveldb cache lock - Ressource temporairement indisponible

/shared/usr/local/leveldb.

ici est ma configuration

(Il y a un lien symbolique créé dans le répertoire de données afin que le chemin de LevelDB est pointée dans le même répertoire partagé dans les deux serveurs).

Je reçois l'erreur suivante sur la deuxième instance (la première instance se compacte sans problème). J'utilise shared = "true" dans la configuration qui devrait permettre aux deux serveurs DataGrid d'accéder au même cache store.

2016-12-05 13: 15: 19,077 ERREUR [org.jboss.msc.service.fail] (thread de service MSC 1-5) MSC000001: Impossible de démarrer le service jboss.datagrid-infinispan.clustered.mycache: org.jboss.msc.service.StartException en service jboss.datagrid-infinispan.clustered.mycache: Impossible de démarrer le service sur org.jboss.msc.service.ServiceControllerImpl $ StartTask.run (ServiceControllerImpl.java:1904) at java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) à java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) à java.lang.Thread.run (Thread.java:745 Causé par: org.infinispan.commons.CacheException: impossible d'invoquer la méthode public void org.infinispan.persistence.manager.Persist enceManagerImpl.start() sur l'objet de type PersistenceManagerImpl à org.infinispan.commons.util.ReflectionUtil.invokeAccessibly (ReflectionUtil.java:172) à org.infinispan.factories.AbstractComponentRegistry $ PrioritizedMethod.invoke (AbstractComponentRegistry.java:864) à org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods (AbstractComponentRegistry.java:633) à org.infinispan.factories.AbstractComponentRegistry.internalStart (AbstractComponentRegistry.java:622) à org.infinispan.factories.AbstractComponentRegistry.start (AbstractComponentRegistry. java: 547) à org.infinispan.factories.ComponentRegistry.start (ComponentRegistry.java:238) à org.infinispan.cache.impl.CacheImpl.start (CacheImpl.java:877) à org .infinispan.manager.DefaultCacheManager.wireAndStartCache (DefaultCacheManager.java:637) à org.infinispan.manager.DefaultCacheManager.createCache (DefaultCacheManager.java:587) à org.infinispan.manager.DefaultCacheManager.getCache (DefaultCacheManager.java:452) à org.infinispan.manager.impl.AbstractDelegatingEmbeddedCacheManager.getCache (AbstractDelegatingEmbeddedCacheManager.java:133) à org.infinispan.server.infinispan.SecurityActions 5.run $ (SecurityActions.java:130) à org.infinispan.server. infinispan.SecurityActions $ 5.run (SecurityActions.java:127) à org.infinispan.security.Security.doPrivileged (Security.java:76) à org.infinispan.server.infinispan.SecurityActions.doPrivileged (SecurityActions.java:63) chez org.infinis pan.server.infinispan.SecurityActions.startCache (SecurityActions.java:135) à org.jboss.as.clustering.infinispan.subsystem.CacheService.start (CacheService.java:86) à org.jboss.msc.service. ServiceControllerImpl $ StartTask.startService (ServiceControllerImpl.java:1948) sur org.jboss.msc.service.ServiceControllerImpl $ StartTask.run (ServiceControllerImpl.java:1881) ... 3 more Causé par: org.infinispan.commons.CacheException: Impossible de commencer chargeurs de cache à org.infinispan.persistence.manager.PersistenceManagerImpl.start (PersistenceManagerImpl.java:174) à sun.reflect.NativeMethodAccessorImpl.invoke0 (native Method) à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 62) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) à java.lang.reflect.Method.invoke (Method.java:498) à org.infinispan.commons.util.ReflectionUtil.invokeAccessibly (ReflectionUtil.ja va: 168) ... 21 plus Causée par: org.infinispan.commons.CacheConfigurationException: Impossible d'ouvrir la base de données à org.infinispan.persistence.leveldb.LevelDBStore.start (LevelDBStore.java:108) org. infinispan.persistence.manager.PersistenceManagerImpl.start (PersistenceManagerImpl.java:141) ... 26 plus Causé par: org.fusesource.leveldbjni.internal.NativeDB $ DBException: erreur d'E/S: lock/shared/usr/local/leveldb/data/mycache/LOCK: Ressource temporairement indisponible at org.fusesource.leveldbjni.internal.NativeDB.checkStatus (NativeDB.java:200) at org.fusesource.leveldbjni.internal.NativeDB.open (NativeDB.java:218) sur org.fusesource.leveldbjni.JniDBFactory.open (JniDBFactory.java:168) à org.infinispan.persistence.leveldb.LevelDBStore.openDatabase (LevelDBStore.java:153) à org.infinispan.persistence.leveldb.LevelDBStore.start (LevelDBStore.java:104) ... 27 plus

+0

Un seul processus peut accéder à leveldb à la fois – ren

+0

Donc en mode distribué comment deux nœuds peuvent-ils accéder aux données de leveldb? En d'autres termes, comment puis-je partager les données dans le magasin leveldb sur plusieurs serveurs de grille de données? – San

+0

vous devez écrire le serveur wrapper simple autour de leveldb et l'utiliser pour l'accès au lieu d'accéder directement – ren

Répondre

2

La banque de cache LevelDB ne peut pas être partagée, car LevelDB lui-même n'est pas destiné à être partagé. J'ai créé un problème pour m'assurer que de telles erreurs puissent être évitées pendant la validation de la configuration: https://issues.jboss.org/browse/ISPN-7286