Details
-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
5.2
-
None
-
Unknown
-
N/A
-
N/A
-
Description
When the server is stopped XWikiServletContextListener is called which does the following:
- Fires the ApplicationStoppedEvent
- Destroys the deprecated ApplicationContext
- Dispose the components
Currently the default XWiki store, XWikiHibernateStore, is closed by HibernateShutdownEventListener when the ApplicationStoppedEvent is fired, so before the components are disposed. This is a problem for components like Solr indexer which starts threads that use the database and that start throwing exception as soon as the database is closed. Obviously the Solr indexer threads are stopped after the database is closed, when the component is disposed.
Closing the Solr indexer threads when ApplicationStoppedEvent is fired doesn't fix the problem if the HibernateShutdownEventListener is called before. Moreover 'disposing' a component when ApplicationStoppedEvent is fired is not practical because the component cannot listen to the event: you need a different class and you need to expose some API to the listener.
Here's an example of the exceptions that are thrown is the database is closed too early:
2013-10-25 16:52:03,667 [XWiki Solr resolve thread] WARN o.x.s.s.i.DefaultSolrIndexer - Failed to apply operation [INDEX] on root reference [xwiki:Main.Spaces] org.xwiki.search.solr.internal.api.SolrIndexerException: Failed to get document [xwiki:Main.Spaces] at org.xwiki.search.solr.internal.reference.DocumentSolrReferenceResolver.getReferences(DocumentSolrReferenceResolver.java:102) ~[xwiki-platform-search-solr-api-5.3-SNAPSHOT.jar:na] at org.xwiki.search.solr.internal.reference.DocumentSolrReferenceResolver.getReferences(DocumentSolrReferenceResolver.java:55) ~[xwiki-platform-search-solr-api-5.3-SNAPSHOT.jar:na] at org.xwiki.search.solr.internal.reference.DefaultSolrReferenceResolver.getReferences(DefaultSolrReferenceResolver.java:164) ~[xwiki-platform-search-solr-api-5.3-SNAPSHOT.jar:na] at org.xwiki.search.solr.internal.DefaultSolrIndexer$Resolver.runInternal(DefaultSolrIndexer.java:204) ~[xwiki-platform-search-solr-api-5.3-SNAPSHOT.jar:na] at com.xpn.xwiki.util.AbstractXWikiRunnable.run(AbstractXWikiRunnable.java:131) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25] Caused by: com.xpn.xwiki.XWikiException: Error number 3202 in 3: Exception while reading document [xwiki:Main.Spaces] at com.xpn.xwiki.store.XWikiHibernateStore.loadXWikiDoc(XWikiHibernateStore.java:927) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at com.xpn.xwiki.store.XWikiCacheStore.loadXWikiDoc(XWikiCacheStore.java:290) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at com.xpn.xwiki.XWiki.getDocument(XWiki.java:1356) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at com.xpn.xwiki.XWiki.getDocument(XWiki.java:1403) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at org.xwiki.search.solr.internal.reference.AbstractSolrReferenceResolver.getDocument(AbstractSolrReferenceResolver.java:77) ~[xwiki-platform-search-solr-api-5.3-SNAPSHOT.jar:na] at org.xwiki.search.solr.internal.reference.DocumentSolrReferenceResolver.getReferences(DocumentSolrReferenceResolver.java:100) ~[xwiki-platform-search-solr-api-5.3-SNAPSHOT.jar:na] ... 5 common frames omitted Caused by: java.lang.NullPointerException: null at com.xpn.xwiki.store.DBCPConnectionProvider.getConnection(DBCPConnectionProvider.java:225) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ~[hibernate-core-3.6.9.Final.jar:3.6.9.Final] at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) ~[hibernate-core-3.6.9.Final.jar:3.6.9.Final] at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160) ~[hibernate-core-3.6.9.Final.jar:3.6.9.Final] at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81) ~[hibernate-core-3.6.9.Final.jar:3.6.9.Final] at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) ~[hibernate-core-3.6.9.Final.jar:3.6.9.Final] at com.xpn.xwiki.store.XWikiHibernateBaseStore.beginTransaction(XWikiHibernateBaseStore.java:864) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at com.xpn.xwiki.store.XWikiHibernateBaseStore.beginTransaction(XWikiHibernateBaseStore.java:804) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] at com.xpn.xwiki.store.XWikiHibernateStore.loadXWikiDoc(XWikiHibernateStore.java:799) ~[xwiki-platform-legacy-oldcore-5.3-20131024.142610-44.jar:na] ... 10 common frames omitted
Attachments
Issue Links
- duplicates
-
XWIKI-11107 Stopping XWiki frequently leads to error stack traces in the console/logs
- Closed
- is duplicated by
-
XWIKI-9811 Big stack trace when shutting down XWiki if Solr queue is bigger than 0
- Closed
- is related to
-
XWIKI-9524 Exception thrown when closing XWiki and the Solr indexing queue is full
- Closed
-
XWIKI-471 Add shutdown API in XWikiStoreInterface to close database
- Closed
- relates to
-
XWIKI-9498 Huge stack trace when deleting a subwiki right after creating it
- Open