cancel
Showing results for 
Search instead for 
Did you mean: 

Language NullPointer exception in other Nodes in clustered environment with session failover mechanism

0 Kudos

In cluster environment , I have setup multiple hybris application server with apache web server for session failover mechanism.

I have followed page ( https://help.hybris.com/6.3.0/hcd/5da5660b2a3f4263ac3095d900d07f88.html ) for session fail over for Hybris 6.3 version.

spring.session.enabled=true #Extension specific properties spring.session.abcstorefront.save=sync spring.session.abcstorefront.cookie.name=sr_abc_JSESSIONID spring.session.abcstorefront.cookie.path=/abcstorefront

and added HybrisSpringSessionFilter as first filter in filter chain successfully.

First request goes to Node1(decided by apache web server) In Node1: I access storefront(abcstorefront) and login successfully, StoredHttpSession object is saved for session id presented in cookie and its journey is working as expected.

In case of node 1 is down for any reason, and I refresh with same page in web browser then web browser send same cookie details. Apache web server redirects request to Node2(in case of node1 is down) . In Node2 HybrisSpringSessionFilter retrieved StoredHttpSession from database since this node doesn't have StoredHttpSession object for sesison id for first time, but in UrlEncoderFilter, NullPointerException encountered because language is not set.

Question1: Is it advisable to update clusterId(cluster.id of old node to new node) of StoredHttpSessionModel in case of Session is migrated from one node to another node if node failure occured?


Question2: NullPointerException occured in class DefaultLanguageAttributeManager during Filter UrlEncoderFilter . Does anyone faces this issue? My Observation: Language is set based on outcome of this method isSessionNotInitialized of StorefrontFilter which is false, which skips call to statement

getStoreSessionFacade().initializeSession(Collections.list(request.getLocales()));

which updated session data like (TaxGroup,Language,Currency)

In Next Filter In UrlFilter, NullPointerException occured . Please check below stack trace.**

Does anyone faces this issue?

Any help will be appreciated.

DEBUG [Incoming-101,hybris-cluster1,hybrisnode-1] [PingBroadcastHandler] process ping message:3169299152144|0 DEBUG [Incoming-103,hybris-cluster1,hybrisnode-1] [PingBroadcastHandler] process ping message: DEBUG [hybrisHTTP17] [SyncSessionPersister] Session persister saved PersistedSession{id='Y0-0d78c0c2-c27f-43bf-8338-3f3501911508', clusterId=0,extension=dpstorefront, contextRoot=/dpstorefront, lastAccessedTime=1536754221567, creationTime=1536754099806, attributeCount=21} DEBUG [hybrisHTTP17] [CachedPersistedSessionRepository] Saved persisted session PersistedSession{id='Y0-0d78c0c2-c27f-43bf-8338-3f3501911508', clusterId=0,extension=dpstorefront, contextRoot=/dpstorefront, lastAccessedTime=1536754221567, creationTime=1536754099806, attributeCount=21} Sep 12, 2018 5:40:54 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [/dpstorefront] threw exception [Error while processing internal filterchain. Exception occurred at chain position: 8 of 15. Current filter: 'com.ap.dp.filters.UrlEncoderFilter@43d92aae'!; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException at de.hybris.platform.acceleratorservices.urlencoder.attributes.impl.DefaultLanguageAttributeManager.getCurrentValue(DefaultLanguageAttributeManager.java:64) at de.hybris.platform.acceleratorfacades.urlencoder.impl.DefaultUrlEncoderFacade.getCurrentUrlEncodingData(DefaultUrlEncoderFacade.java:158) at com.ap.dp.filters.UrlEncoderFilter.doFilterInternal(UrlEncoderFilter.java:52) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at com.ap.dp.filters.StorefrontFilter.doFilterInternal(StorefrontFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at com.ap.dp.filters.cms.CMSSiteFilter.doFilterInternal(CMSSiteFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at com.ap.dp.filters.RequestLoggerFilter.doFilterInternal(RequestLoggerFilter.java:71) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at com.ap.dp.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:90) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at de.hybris.platform.servicelayer.web.SessionFilter.doFilter(SessionFilter.java:96) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at de.hybris.platform.servicelayer.web.Log4JFilter.doFilter(Log4JFilter.java:44) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:164) at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80) at de.hybris.platform.servicelayer.web.session.HybrisSpringSessionFilter.doFilterWithSessionRepository(HybrisSpringSessionFilter.java:79) at de.hybris.platform.servicelayer.web.session.HybrisSpringSessionFilter.doFilter(HybrisSpringSessionFilter.java:65) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:225) at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:155) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at com.ap.dp.filters.UrlPathFilter.doFilterInternal(UrlPathFilter.java:82) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

Accepted Solutions (0)

Answers (0)