[MGNLCACHE-222] NullPointerException: DefaultCacheKeyGenerator.getParametersFromRequest() Created: 04/Dec/19 Updated: 30/Mar/23 |
|
| Status: | Open |
| Project: | Cache Modules |
| Component/s: | cache core |
| Affects Version/s: | 5.5.7 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Neutral |
| Reporter: | Ian Cervantez | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | maintenance, quickwin, support | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
OS: Ubuntu 16.04.6 LTS Java: |
||
| Attachments: |
|
| Template: |
|
| Patch included: |
Yes
|
| 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: | |
| Epic Link: | Support |
| Team: |
| Description |
|
Encountered on Magnolia Cache Core v5.6.2
I've got a custom filter in my server filter chain, but I keep getting a NullPointerException. 2019-12-04 01:07:36,235 WARN com.signalsciences.servlet.filter.SigSciFilter : An error occurred during the application filter chain: null 2019-12-04 01:07:36,235 DEBUG com.signalsciences.servlet.filter.SigSciFilter : Error details for application filter chain: java.lang.NullPointerException: null at info.magnolia.module.cache.cachekey.DefaultCacheKeyGenerator.getParametersFromRequest(DefaultCacheKeyGenerator.java:132) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.module.cache.cachekey.DefaultCacheKeyGenerator.generateKey(DefaultCacheKeyGenerator.java:81) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.module.cache.cachekey.DefaultCacheKeyGenerator.generateKey(DefaultCacheKeyGenerator.java:57) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.module.cache.cachepolicy.Default.retrieveCacheKey(Default.java:184) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.module.cache.cachepolicy.Default.shouldCache(Default.java:116) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.advancedcache.personalization.cache.PersonalizedCachePolicy.shouldCache(PersonalizedCachePolicy.java:99) ~[magnolia-advanced-cache-personalization-2.0.1.jar:?] at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:200) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:89) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:77) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:84) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:119) ~[magnolia-site-1.2.2.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:120) ~[magnolia-module-multisite-1.3.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73) ~[magnolia-cache-core-5.6.2.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:75) ~[magnolia-module-enterprise-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:89) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92) ~[magnolia-personalization-preview-app-1.6.2.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-5.7.5.jar:?] at com.signalsciences.servlet.filter.SigSciFilter.doFilter(SigSciFilter.java:372) [sigsci-module-java-2.0.0-shaded-debug.jar:2.0.0] at info.magnolia.cms.filters.FilterDecorator.doFilter(FilterDecorator.java:90) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110) [magnolia-core-5.7.5.jar:?] at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96) [magnolia-core-5.7.5.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.27] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.27] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.27] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.27] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [catalina.jar:9.0.27] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.27] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.27] at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) [catalina.jar:9.0.27] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.27] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.27] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.27] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.27] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-coyote.jar:9.0.27] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579) [tomcat-coyote.jar:9.0.27] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.27] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.27] at java.lang.Thread.run(Thread.java:834) [?:?] The stack trace leads to line 132 in info.magnolia.module.cache.cachekey.DefaultCacheKeyGenerator.getParametersFromRequest(), a call to val.replace() where val may be null. DefaultCacheKeyGenerator.java
// ...
private Map<String, String> getParametersFromRequest(HttpServletRequest request) {
Map<String, String> map = new TreeMap<String, String>();
for (Object obj : request.getParameterMap().entrySet()) {
Map.Entry<String, String[]> entry = (Map.Entry) obj;
String[] values = entry.getValue();
List<String> newValues = new ArrayList<String>();
for (String val : values) {
String str = val.replace(";", ";;");
newValues.add(str);
}
String value = StringUtils.join(newValues, ";");
map.put(entry.getKey(), value);
}
return map;
}
// ...
Should probably be something like:
// ...
private Map<String, String> getParametersFromRequest(HttpServletRequest request) {
Map<String, String> map = new TreeMap<String, String>();
for (Object obj : request.getParameterMap().entrySet()) {
Map.Entry<String, String[]> entry = (Map.Entry) obj;
String[] values = entry.getValue();
List<String> newValues = new ArrayList<String>();
for (String val : values) {
String str = val;
if (str != null) {
str = str.replace(";", ";;");
}
newValues.add(str);
}
String value = StringUtils.join(newValues, ";");
map.put(entry.getKey(), value);
}
return map;
}
// ...
|
| Comments |
| Comment by David Martin [ 06/May/22 ] |
|
Hi Folks, We just encountered what looks like this issue on Magnolia 6.2.17 Cheers, Dave |
| Comment by Viet Nguyen [ 30/Mar/23 ] |
|
Replace String str = val.replace(";", ";;"); Using StringUtils.replace(val, ";", ";;"); For minimal change and minimize testing+maintenance efforts. |