Below is the code:
ResourceResolver resourceResolver;
Session session = null;
List<Hit> resultList = null;
try {
resourceResolver = resolverFactory.getAdministrativeResourceResolver(null);
session = resourceResolver.adaptTo(Session.class);
Query query = builder.loadQuery(savedPredicatePath, session);
resultList = query.getResult().getHits();
} multiple catchers...
} finally {
// null checker and if still alive, logout the session
if (session != null && session.isLive()) {
session.logout();
}
}
Comments
1. if i do not explicitly logout the session, i do not get the exception, I do not want to leave open sessions in the code.
2. I did some research, it looks this was an issue with CQ code, and I found an adobe page recommending patches, but, that was for CQ 5.3. I'm on 5.6.1, do i still need to patch?
3. URLs:
http://helpx.adobe.com/experience-manager/kb/CQ53ConcurrentModificationLeadsToClosedJCRSession.html
http://forums.adobe.com/message/4786192
Below is the stack trace of the exception that I'm getting:
Caused by: javax.jcr.RepositoryException: This session has been closed. See the chained exception for a trace of where the session was closed.
at org.apache.jackrabbit.core.session.SessionState.checkAlive(SessionState.java:150)
at org.apache.jackrabbit.core.ItemManager.sanityCheck(ItemManager.java:138)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:326)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
at org.apache.jackrabbit.core.query.lucene.RowIteratorImpl$RowImpl.getNode(RowIteratorImpl.java:411)
at org.apache.jackrabbit.core.query.lucene.RowIteratorImpl$RowImpl.getValue(RowIteratorImpl.java:333)
at com.day.cq.search.impl.result.HitImpl.getPath(HitImpl.java:120)
at org.apache.jsp.apps.sm.components.commons.profile.layouts.custom.querybuilder_jsp._jspService(querybuilder_jsp.java:189)
at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:502)
... 244 more
Caused by: java.lang.Exception: Stack trace of where session-admin-204340 was originally closed
at org.apache.jackrabbit.core.session.SessionState.close(SessionState.java:275)
at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:943)
at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:392)
at com.day.crx.core.CRXSessionImpl.logout(CRXSessionImpl.java:127)
at edu.stanford.med.impl.SearchServiceImpl.getSearchHits(SearchServiceImpl.java:93)
at org.apache.jsp.apps.sm.components.commons.profile.layouts.custom.querybuilder_jsp._jspService(querybuilder_jsp.java:184)
... 247 more