我正在使用Apache来集群我们的网络会话。偶尔有一个缓存崩溃,我一直在Tomcat应用程序日志文件中接收以下异常消息:
2016-05-23 15:04:02,200 ERROR root/error 495 - Failed to update web session: null
java.lang.IllegalStateException: Cache has been closed or destroyed: session-cache
at org.apache.ignite.internal.processors.cache.GridCacheGateway.enter(GridCacheGateway.java:160)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.onEnter(IgniteCacheProxy.java:1923)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.get(IgniteCacheProxy.java:855)
at org.apache.ignite.cache.websession.WebSessionFilter.doFilter0(WebSessionFilter.java:341)
at org.apache.ignite.cache.websession.WebSessionFilter.doFilter(WebSessionFilter.java:315)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
2016-05-23 15:04:06,497 ERROR root/error 495 - Failed to update web session: null
java.lang.IllegalStateException: Cache has been closed or destroyed: session-cache
...这让我很担心,因为我找不到任何进一步的错误消息来解释崩溃的原因,甚至在文件夹crash _HOME/work中也找不到。
(顺便说一下,这个崩溃发生在内存耗尽之前,我通过增加应用程序JVM堆大小来修复它。)
我的问题是:
非常感谢!
更新(2016-08-04)
正如Valentin指出的,默认情况下,如果节点嵌入到应用程序中,Ignite将继承应用程序的日志设置。实际上,Ignite将其日志写入同一个应用程序日志文件中。
如果我想将Ignite日志输出到一个单独的日志文件中,我可以将配置添加到log4j.properties中,如下所示:
log4j.appender.IGNITE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.IGNITE.File=${IGNITE_HOME}/work/logs/${tomcat.hostname}/ignite.log
log4j.appender.IGNITE.DatePattern='.'yyyy-MM-dd
log4j.appender.IGNITE.Threshold=DEBUG
log4j.appender.IGNITE.layout=org.apache.log4j.PatternLayout
log4j.appender.IGNITE.layout.ConversionPattern=[%d{ABSOLUTE}][%-5p][%t][%c{1}] %m%n
log4j.logger.org.apache.ignite=INFO, IGNITE但还有一件事我还不太明白,就是前面提到的配置会将Ignite日志信息输出到上面指定的ignite.log和应用程序的日志文件中。@Valentin,想知道为什么吗?谢谢。有没有办法只将Ignite日志输出到ignite.log,而不是将其输出到应用程序的日志文件?
发布于 2016-05-30 11:26:09
如果一个节点嵌入到应用程序中,它将默认继承其日志记录设置。因此,Ignite很可能在应用程序写入日志的文件中写入日志。
注意,如果使用Log4J,则应该在项目中包含ignite-log4j依赖项。
至于还原数据,如果集群中只有一个节点失败,并且至少有一个备份,则不应丢失任何数据。若要添加备份,请使用CacheConfiguration.backups配置属性。
发布于 2016-06-07 11:20:45
我不知道这是否能解决你的具体问题,但我在work_HOME/work/ logs中找到了日志

https://stackoverflow.com/questions/37459701
复制相似问题