2016-12-05 53 views
0

我在分布式模式下运行RHEL中的2个Jboss Datagrid服务器实例。我使用leveldb缓存存储作为我的二级缓存。这两个实例都应使用相同的leveldb缓存存储路径,并应将键/值写入此路径。Jboss Datagrid服务器leveldb缓存锁定 - 资源暂时不可用

/shared/usr/local/leveldb。

这里是我的配置

(有数据目录中创建,这样的性LevelDB路径指向同一个共享目录中的两个服务器的软链接)。

我在第二个实例上收到以下错误(第一个实例没有任何问题)。我在配置中使用shared =“true”,这应该允许两个数据网格服务器访问相同的缓存存储。

2016-12-05 13:15:19,077错误[org.jboss.msc.service.fail](MSC服务线程1-5)MSC000001:无法启动服务jboss.datagrid-infinispan.clustered.mycache: org.jboss.msc.service.StartException in service jboss.datagrid-infinispan.clustered.mycache:无法启动服务 at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1904) at java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745 ) 原因:org.infinispan.commons.CacheException:无法调用方法public void org.infinispan.persistence.manager.Persist enceManagerImpl.start()在PersistenceManagerImpl类型的对象上org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:172) at 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) at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:238) at org.infinispan.cache.impl.CacheImpl.start(CacheImpl.java:877) at org .infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:637) at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:587) at 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) at org.infinispan.security.Security.doPrivileged(Security.java:76) at org.infinispan.server.infinispan.SecurityActions.doPrivileged(SecurityActions.java:63 ) at org.infinis pan.server.infinispan.SecurityActions.startCache(SecurityActions.java:135) at org.jboss.as.clustering.infinispan.subsystem.CacheService.start(CacheService.java:86) at org.jboss.msc.service。 ServiceControllerImpl $ StartTask。startService(ServiceControllerImpl.java:1948) at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1881) ... 3更多 引起人:org.infinispan.commons.CacheException:无法启动缓存加载器 在org.infinispan.persistence.manager.PersistenceManagerImpl.start(PersistenceManagerImpl.java:174) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly( ReflectionUtil.ja va:168) ... 21更多 引起人:org.infinispan.commons.CacheConfigurationException:无法在org处打开数据库 ,位于org.infinispan.persistence.leveldb.LevelDBStore.start(LevelDBStore.java:108) 。 infinispan.persistence.manager.PersistenceManagerImpl.start(PersistenceManagerImpl.java:141) ... 26更多 导致:org.fusesource.leveldbjni.internal.NativeDB $ DBException:IO错误:lock/shared/usr/local/leveldb/data/mycache/LOCK:资源暂时不可用 at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:200) at org.fusesource.leveldbjni.internal.NativeDB.open(NativeDB.java:218) at 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多个

+0

一次只能有一个进程访问leveldb – ren

+0

因此,在分布式模式下,两个节点如何访问leveldb中的数据?换句话说,我怎样才能在多个数据网格服务器上共享leveldb商店中的数据? – San

+0

你必须围绕leveldb编写简单的包装服务器,并使用它来访问而不是直接访问 – ren

回答

2

LevelDB缓存存储不能共享,因为LevelDB本身并不是共享的。我已经创建了一个问题,以确保在配置验证期间可以防止出现此类错误:https://issues.jboss.org/browse/ISPN-7286

相关问题