2016-09-26 39 views
0

我想填充一個在其他機器上的集羣上運行的Gridgain緩存。我在調用Gridgain緩存中的方法時遇到ClientDisconnectedException,並在Cache上調用put方法後得到此方法。class org.apache.ignite.IgniteClientDisconnectedException

這裏是我的緩存配置:

// DPH cache 
     CacheConfiguration<K,V> DPHCacheCfg = new CacheConfiguration<>(DPH_CACHE); 
     DPHCacheCfg.setCacheMode(CacheMode.PARTITIONED); // Default. 
     DPHCacheCfg.setIndexedTypes(String.class, DPH.class); 
     DPHCacheCfg.setOffHeapMaxMemory(10 * 1024L * 1024L * 1024L); 
     DPHCacheCfg.setMemoryMode(CacheMemoryMode.ONHEAP_TIERED); 
     FifoEvictionPolicy evctPolicy = new FifoEvictionPolicy(); 
     DPHCacheCfg.setEvictionPolicy(evctPolicy); 

她是怎麼把數據在緩存:

DPHCache.put(K,V);其中V是某個對象。經過一定數量的投注後,我有以下例外情況。

avax.cache.CacheException: class org.apache.ignite.IgniteClientDisconnectedException: Operation has been cancelled (client node disconnected). 
    at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1615) 
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.cacheException(IgniteCacheProxy.java:1955) 
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.put(IgniteCacheProxy.java:1155) 
    at com.elsevier.elssie.datafabric.LoadQuetzal.populateDPH(LoadQuetzal.java:246) 
    at com.elsevier.elssie.datafabric.LoadQuetzal.main(LoadQuetzal.java:163) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: class org.apache.ignite.IgniteClientDisconnectedException: Operation has been cancelled (client node disconnected). 
    at org.apache.ignite.internal.util.IgniteUtils$14.apply(IgniteUtils.java:829) 
    at org.apache.ignite.internal.util.IgniteUtils$14.apply(IgniteUtils.java:827) 
    ... 11 more 
Caused by: class org.apache.ignite.internal.IgniteClientDisconnectedCheckedException: Operation has been cancelled (client node disconnected). 
    at org.apache.ignite.internal.processors.cache.GridCacheMvccManager.disconnectedError(GridCacheMvccManager.java:406) 
    at org.apache.ignite.internal.processors.cache.GridCacheMvccManager.onDisconnected(GridCacheMvccManager.java:382) 
    at org.apache.ignite.internal.processors.cache.GridCacheSharedContext.onDisconnected(GridCacheSharedContext.java:151) 
    at org.apache.ignite.internal.processors.cache.GridCacheProcessor.onDisconnected(GridCacheProcessor.java:934) 
    at org.apache.ignite.internal.IgniteKernal.onDisconnected(IgniteKernal.java:3023) 
    at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery(GridDiscoveryManager.java:588) 
    at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.notifyDiscovery(ClientImpl.java:2058) 
    at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.notifyDiscovery(ClientImpl.java:2039) 
    at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.body(ClientImpl.java:1435) 
    at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62) 

回答

1

這通常發生在所有服務器節點停止時。你應該檢查他們的日誌,以瞭解究竟發生了什麼。

另請注意,至少有一臺服務器返回時,客戶端將自動重新連接。 IgniteClientDisconnectedException擁有reconnectFuture()方法,該方法返回重新連接發生時將要完成的未來,因此您可以阻止客戶端,直到羣集正常工作。