[MAGNOLIA-6461] javax.jcr.PathNotFoundException when an URI2RepositoryMapping for website is configured and a not existing URI is accessed. Created: 15/Dec/15  Updated: 02/Jul/18  Resolved: 02/Jul/18

Status: Closed
Project: Magnolia
Component/s: cache, core, i18n
Affects Version/s: 5.4.3
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Tom Wespi Assignee: Unassigned
Resolution: Obsolete Votes: 4
Labels: quickwin
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

CE


Issue Links:
causality
caused by MAGNOLIA-6584 AggregatorFilter uses deprecated Cont... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:

 Description   

It does not hurt, but fill's the error logs with unnecessary ERROR messages. Should be changed to WARN.

To reproduce:
Configure a RepositoryMapping for Website :
/test is mapped to /
> A request to /test/notExists throws a PNFE.
> A request to a not configured Locale also throws a PNFE

2015-12-16 11:27:34,196 ERROR info.magnolia.rendering.engine.RenderingFilter : RepositoryException while reading Resource [/test/fr] (uri:/fr/home.html)
 javax.jcr.PathNotFoundException: /test/fr
 at org.apache.jackrabbit.core.ItemManager.getNode(ItemManager.java:577)
 at org.apache.jackrabbit.core.session.SessionItemOperation$6.perform(SessionItemOperation.java:129)
 at org.apache.jackrabbit.core.session.SessionItemOperation$6.perform(SessionItemOperation.java:125)
 at org.apache.jackrabbit.core.session.SessionItemOperation.perform(SessionItemOperation.java:187)
 at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
 at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
 at org.apache.jackrabbit.core.SessionImpl.getNode(SessionImpl.java:1111)
 at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getNode(DelegateSessionWrapper.java:177)
 at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getNode(DelegateSessionWrapper.java:177)
 at info.magnolia.jcr.decoration.ContentDecoratorSessionWrapper.getNode(ContentDecoratorSessionWrapper.java:120)
 at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getNode(DelegateSessionWrapper.java:177)
 at info.magnolia.jcr.wrapper.NodeWrappingDelegateSessionWrapper.getNode(NodeWrappingDelegateSessionWrapper.java:53)
 at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getNode(DelegateSessionWrapper.java:177)
 at info.magnolia.jcr.decoration.ContentDecoratorSessionWrapper.getNode(ContentDecoratorSessionWrapper.java:120)
 at info.magnolia.jcr.wrapper.DelegateSessionWrapper.getNode(DelegateSessionWrapper.java:177)
 at info.magnolia.jcr.decoration.ContentDecoratorSessionWrapper.getNode(ContentDecoratorSessionWrapper.java:120)
 at info.magnolia.rendering.engine.RenderingFilter.getNodedataAsStream(RenderingFilter.java:262)
 at info.magnolia.rendering.engine.RenderingFilter.handleResourceRequest(RenderingFilter.java:216)
 at info.magnolia.rendering.engine.RenderingFilter.doFilter(RenderingFilter.java:97)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.rendering.model.ModelExecutionFilter.doFilter(ModelExecutionFilter.java:100)
 at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.AggregatorFilter.doFilter(AggregatorFilter.java:100)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.RepositoryMappingFilter.doFilter(RepositoryMappingFilter.java:108)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:74)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:69)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.module.cache.executor.Store.processCacheRequest(Store.java:100)
 at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:67)
 at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:174)
 at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:74)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:84)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:80)
 at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94)
 at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:119)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
 at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
 at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:87)
 at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at ch.esense.mastertemplate.filter.DeviceSupportFilter.doFilter(DeviceSupportFilter.java:44)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:148)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
 at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
 at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
 at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107)
 at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
 at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:108)
 at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:94)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at java.lang.Thread.run(Thread.java:745)


 Comments   
Comment by Bence Vass [ 17/Dec/15 ]

This can also be tested on the demo system, just open f.e. https://demo.magnolia-cms.com/sportstation/test/test2

This is a serious problem and renders the log unusable for any frequented website.

Please also fix this on 5.3.x (tested with 5.3.12)

Comment by Tom Wespi [ 14/Jan/16 ]

Do your own RenderingFilter (info.magnolia.rendering.engine.RenderingFilter). This is a shortcut solution, but it stops the unnecessary log entries.

private InputStream getNodedataAsStream(String path, Session session, HttpServletResponse res) {

log.debug("getNodedataAstream for path \"{}\"", path);

Node atom = null;

try

{ atom = session.getNode(path); }

catch (PathNotFoundException e1) {
// log.warn("Node not found for path: {}",path,e1);
} catch (RepositoryException e1) {
// log.warn("RepositoryException while getting node for path: {}",path,e1);
}

try {

if (atom != null) {
if (atom.hasProperty(JcrConstants.JCR_DATA)) {
String sizeString = atom.hasProperty("size") ? atom.getProperty("size").getString() : "";
if (NumberUtils.isNumber(sizeString))

{ res.setContentLength(Integer.parseInt(sizeString)); }

Property streamProperty = atom.getProperty(JcrConstants.JCR_DATA);
return streamProperty.getStream();
}
}

log.warn("Resource not found: [{}?{}]", MgnlContext.getWebContext().getRequest().getRequestURI(), MgnlContext.getWebContext().getRequest().getQueryString());
} catch (RepositoryException e) {
log.error("RepositoryException while reading Resource [{}]", path, e);
}
return null;
}

Comment by Rico Jansen [ 25/Feb/16 ]

We are also hitting this. I have checked with some debugging and it looks like it goes wrong in the info.magnolia.cms.filters.AggregatorFilter#collect function.
On line 145 it is checked if the node has nodedata, if that fails it goes to the parent node, however it does this directly on line 156 without checking if the parent node even has nodedata. So it will return an invalid handle in the aggregation state, which gets used in info.magnolia.rendering.engine.RenderingFilter with all the problems that causes.

Comment by Jan Haderka [ 02/Jul/18 ]

Fixed as part of effort for ContentAPI cleanup before 5.6 release.

Generated at Mon Feb 12 04:14:44 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.