2016-05-05 19 views
0

私のアプリケーションでは、分散キャッシュとしてinfinispanを使用しています。並行処理でInfinispan RemoveCacheエラー

私は3つのアプリケーションサーバーwildfly 9.2を使用して動作します。それぞれの仕事では、ジョブが実行され、キャッシュの項目を検証するだけです。検証が失敗した場合、ジョブはそれ以上有効ではないのでキャッシュを削除します。

は削除コードは非常に簡単です:

19:43:00,005 WARN [org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher] (OOB-20,ws-7-aor-57542) ISPN000220: Problems un-marshalling remote command from byte buffer 
a.lang.NullPointerException 
    at org.infinispan.commands.RemoteCommandsFactory.fromStream(RemoteCommandsFactory.java:219) 
    at org.infinispan.marshall.exts.ReplicableCommandExternalizer.fromStream(ReplicableCommandExternalizer.java:107) 
    at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.readObject(CacheRpcCommandExternalizer.java:155) 
    at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.readObject(CacheRpcCommandExternalizer.java:65) 
    at org.infinispan.marshall.core.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:436) 
    at org.infinispan.marshall.core.ExternalizerTable.readObject(ExternalizerTable.java:227) 
    at org.infinispan.marshall.core.JBossMarshaller$ExternalizerTableProxy.readObject(JBossMarshaller.java:153) 
    at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:354) 
    at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209) 
    at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41) 
    at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.objectFromObjectStream(AbstractJBossMarshaller.java:134) 
    at org.infinispan.marshall.core.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:101) 
    at org.infinispan.commons.marshall.AbstractDelegatingMarshaller.objectFromByteBuffer(AbstractDelegatingMarshaller.java:80) 
    at org.infinispan.remoting.transport.jgroups.MarshallerAdapter.objectFromBuffer(MarshallerAdapter.java:28) 
    at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:298) 
    at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:460) 
    at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:377) 
    at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:250) 
    at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:675) 
    at org.jgroups.JChannel.up(JChannel.java:739) 
    at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1029) 
    at org.jgroups.protocols.FRAG2.up(FRAG2.java:165) 
    at org.jgroups.protocols.FlowControl.up(FlowControl.java:383) 
    at org.jgroups.protocols.FlowControl.up(FlowControl.java:394) 
    at org.jgroups.protocols.pbcast.GMS.up(GMS.java:1042) 
    at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:234) 
    at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:435) 
    at org.jgroups.protocols.pbcast.NAKACK2.deliver(NAKACK2.java:961) 
    at org.jgroups.protocols.pbcast.NAKACK2.handleMessage(NAKACK2.java:843) 
    at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:618) 
    at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:155) 
    at org.jgroups.protocols.FD_ALL.up(FD_ALL.java:200) 
    at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:297) 
    at org.jgroups.protocols.MERGE3.up(MERGE3.java:288) 
    at org.jgroups.protocols.Discovery.up(Discovery.java:291) 
    at org.jgroups.protocols.TP.passMessageUp(TP.java:1577) 
    at org.jgroups.protocols.TP$MyHandler.run(TP.java:1796) 
    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) 

if (somecondition){ 
    cacheManager.removeCache(sessionCacheName); 
} 

は、私はすべての3台のサーバが実行されている(ので、同時にromove操作を実行する3つのジョブがある)ときに私は体系的にこの例外を取得することを実現しました1台のサーバー上

この1中:他の

19:44:00,199 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) Caused by: org.infinispan.remoting.RemoteException: ISPN000217: Received exception from ws-7-aor-36158, see cause for remote stack trace 
19:44:00,200 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at org.infinispan.remoting.transport.AbstractTransport.checkResponse(AbstractTransport.java:46) 
19:44:00,211 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at org.infinispan.remoting.transport.AbstractTransport.parseResponseAndAddToResponseList(AbstractTransport.java:71) 
19:44:00,211 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotely(JGroupsTransport.java:586) 
19:44:00,212 ERROR [stderr] (DefaultQuartzScheduler_Worker-1) at org.infinispan.manager.DefaultCacheManager.removeCache(DefaultCacheManager.java:492) 

2. アプリケーション・サーバー・インスタンスが1つしか実行されていない場合、このエラーは表示されません。

これは明らかに同意と関連しています。

何が欠けていますか?

答えて

1

removeCache()メソッドは、JMX/RHQコンソールから呼び出される管理操作としてのみ意図されていました。したがって、並行呼び出しはそれほど心配しませんでした。

ISPN-5756の修正を含むInfinispan 8.1 +/WildFly 10で同時呼び出しが機能することは良いニュースです。