大家好,
最近被一个问题纠结。在使用xmencached的时候,使用system.exit(0)时候,有时候会抛出异常。请教如何去除这个异常?
异常:
Exception in thread "Thread-9" java.lang.IllegalStateException: Shutdown in progress at java.lang.ApplicationShutdownHooks.remove(ApplicationShutdownHooks.java:82) at java.lang.Runtime.removeShutdownHook(Runtime.java:239) at com.google.code.yanf4j.core.impl.AbstractController.stop(AbstractController.java:476) at net.rubyeye.xmemcached.XMemcachedClient.shutdown(XMemcachedClient.java:2482) at net.rubyeye.xmemcached.XMemcachedClient$1.run(XMemcachedClient.java:650) ... more
我的代码:
MemcachedClient client = LowCardinalityMemcachedClientSingleton.getPrimaryClient();
try {
if(client.isShutdown() != true){
client.shutdown();
} else{
logger.debug("client already shutdown");
}
} catch (IOException e) {
logger.debug("Shutdown MemcachedClient fail", e);
} long startTime = System.currentTimeMillis();
long total = 0;
logger.debug("about to run wait loop"); while(client.isShutdown() == false ||
total < 4000){
long stopTime = System.currentTimeMillis();
total = stopTime - startTime;
if(total > 12000){
logger.debug("breaking because waiting more than 12 seconds");
break;
}
}
logger.debug("exiting");
System.exit(0);
}
明明client已经被关闭了,为什么在system.exit(0)时候还会有异常呢?
非常感谢了。
最近被一个问题纠结。在使用xmencached的时候,使用system.exit(0)时候,有时候会抛出异常。请教如何去除这个异常?
异常:
Exception in thread "Thread-9" java.lang.IllegalStateException: Shutdown in progress at java.lang.ApplicationShutdownHooks.remove(ApplicationShutdownHooks.java:82) at java.lang.Runtime.removeShutdownHook(Runtime.java:239) at com.google.code.yanf4j.core.impl.AbstractController.stop(AbstractController.java:476) at net.rubyeye.xmemcached.XMemcachedClient.shutdown(XMemcachedClient.java:2482) at net.rubyeye.xmemcached.XMemcachedClient$1.run(XMemcachedClient.java:650) ... more
我的代码:
MemcachedClient client = LowCardinalityMemcachedClientSingleton.getPrimaryClient();
try {
if(client.isShutdown() != true){
client.shutdown();
} else{
logger.debug("client already shutdown");
}
} catch (IOException e) {
logger.debug("Shutdown MemcachedClient fail", e);
} long startTime = System.currentTimeMillis();
long total = 0;
logger.debug("about to run wait loop"); while(client.isShutdown() == false ||
total < 4000){
long stopTime = System.currentTimeMillis();
total = stopTime - startTime;
if(total > 12000){
logger.debug("breaking because waiting more than 12 seconds");
break;
}
}
logger.debug("exiting");
System.exit(0);
}
明明client已经被关闭了,为什么在system.exit(0)时候还会有异常呢?
非常感谢了。
在exit之前等待足够时间来证明一下这种猜测好了
我尝试在system.exit()之前加log发现在system强制退出前client已经shutdown了,应该不是client未关闭而系统退出造成的。再看错误log发现是xmencache也就是那个client在shutdown的时候报的错。有办法去掉这个错误吗?什么抛出什么的都行。谢谢了。