aem - Unclosed session detected in logs in CQ5 -


i getting unclosed session detected warning in error.log . have opened , closed sessions in block. still getting warning. has made author instance slow due large number of unclosed session . here error logs

04.06.2015 02:45:54.921 *warn* [finalizer] org.apache.jackrabbit.core.sessionimpl unclosed session detected. session opened here:  java.lang.exception: stack trace         @ org.apache.jackrabbit.core.sessionimpl.<init>(sessionimpl.java:222)         @ org.apache.jackrabbit.core.xasessionimpl.<init>(xasessionimpl.java:117)         @ com.day.crx.core.crxsessionimpl.<init>(crxsessionimpl.java:69)         @ com.day.crx.core.crxrepositoryimpl.createsessioninstance(crxrepositoryimpl.java:935)         @ org.apache.jackrabbit.core.repositoryimpl.createsession(repositoryimpl.java:959)         @ org.apache.jackrabbit.core.sessionfactory.createadminsession(sessionfactory.java:42)         @ com.day.crx.sling.server.impl.slingrepositorywrapper.loginadministrative(slingrepositorywrapper.java:76)         @ org.apache.sling.jcr.resource.internal.helper.jcr.jcrresourceproviderfactory.getresourceproviderinternal(jcrresourceproviderfactory.java:136)         @ org.apache.sling.jcr.resource.internal.helper.jcr.jcrresourceproviderfactory.getadministrativeresourceprovider(jcrresourceproviderfactory.java:115)         @ org.apache.sling.resourceresolver.impl.tree.resourceproviderfactoryhandler.login(resourceproviderfactoryhandler.java:162)         @ org.apache.sling.resourceresolver.impl.tree.rootresourceproviderentry.logintorequiredfactories(rootresourceproviderentry.java:95)         @ org.apache.sling.resourceresolver.impl.resourceresolverfactoryimpl.getresourceresolverinternal(resourceresolverfactoryimpl.java:95)         @ org.apache.sling.resourceresolver.impl.resourceresolverfactoryimpl.getadministrativeresourceresolver(resourceresolverfactoryimpl.java:69)         @ org.apache.sling.resourceresolver.impl.helper.resourceresolvercontext.getresourcetyperesourceresolver(resourceresolvercontext.java:192)         @ org.apache.sling.resourceresolver.impl.helper.resourceresolvercontext.getparentresourcetype(resourceresolvercontext.java:216)         @ org.apache.sling.resourceresolver.impl.resourceresolverimpl.getparentresourcetype(resourceresolverimpl.java:1136)         @ org.apache.sling.resourceresolver.impl.resourceresolverimpl.getparentresourcetype(resourceresolverimpl.java:1126)         @ org.apache.sling.resourceresolver.impl.resourceresolverimpl.isresourcetype(resourceresolverimpl.java:1151)         @ org.apache.sling.api.resource.resourceutil.isa(resourceutil.java:466)         @ com.adobe.cq.social.storage.index.abstractbaseindexhandler.checkresourcetype(abstractbaseindexhandler.java:111) 

this code snippet after warning.

private list<string>  rolloutpages(collection<page> pages) throws exception {   final resourceresolver adminresourceresolver=resourceresolverfactory.getadministrativeresourceresolver(null);         list<string> rolledoutpages = new arraylist<>();         try {             //adminresourceresolver = resourceresolverfactory.getadministrativeresourceresolver(null);             (page page : pages) {                 final collection<liverelationship> liverelationships = relationshipmanager.getliverelationships(page, null, null, false);                 (liverelationship relationship : liverelationships) {                     rolloutmanager.rollout(adminresourceresolver, relationship, false);                     rolledoutpages.add(relationship.gettargetpath());                 }              }             adminresourceresolver.adaptto(session.class).save();             adminresourceresolver.adaptto(session.class).logout();             adminresourceresolver.close();             return rolledoutpages;         }         catch (wcmexception e) {             adminresourceresolver.adaptto(session.class).save();             adminresourceresolver.adaptto(session.class).logout();             adminresourceresolver.close();             log.error("unable create administrative resource resolver", e);             throw new abortexception("exception during rollout of pages",e.getmessage());         }         catch (exception e)         {             adminresourceresolver.adaptto(session.class).save();             adminresourceresolver.adaptto(session.class).logout();             adminresourceresolver.close();             log.error("exception during rollout of pages", e);             throw new abortexception("exception during rollout of pages",e.getmessage());         }         {             if(adminresourceresolver.islive()||adminresourceresolver != null){                 adminresourceresolver.close();             }         }      } 

i have closed session in block. still getting warning. can please me in understanding missing here?

what see closing resourceresolver, not session create when call adaptto(session.class) on resourceresolver. in code below, have changed logout called on session in addition admin resourceresolver being closed, , consolidated duplication:

private list<string>  rolloutpages(collection<page> pages) throws exception {         resourceresolver adminresourceresolver;         list<string> rolledoutpages = new arraylist<>();         try {             adminresourceresolver = resourceresolverfactory.getadministrativeresourceresolver(null);             (page page : pages) {                 final collection<liverelationship> liverelationships = relationshipmanager.getliverelationships(page, null, null, false);                 (liverelationship relationship : liverelationships) {                     rolloutmanager.rollout(adminresourceresolver, relationship, false);                     rolledoutpages.add(relationship.gettargetpath());                 }              }             session session;             try{                 session = adminresourceresolver.adaptto(session.class);                 session.save();             }             finally{                 session.logout();             }             return rolledoutpages;         }         catch (wcmexception e) {             log.error("unable create administrative resource resolver", e);             throw new abortexception("exception during rollout of pages",e.getmessage());         }         catch (exception e)         {             log.error("exception during rollout of pages", e);             throw new abortexception("exception during rollout of pages",e.getmessage());         }         {             if(adminresourceresolver != null && adminresourceresolver.islive()){                 adminresourceresolver.close();             }         }      } 

and code/troubleshooting easier if keep follow dry principle--don't repeat yourself. see lots of duplicate code in example.


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -