Jetspeed 2
  1. Jetspeed 2
  2. JS2-849

NullPointerException in org.apache.jetspeed.prefs.impl.NodeImplProxy.getFullPath(NodeImplProxy.java:45)

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.2
    • Fix Version/s: 2.2.0
    • Component/s: None
    • Labels:
      None
    • Environment:
      tomcat 5.5.20, SuSe Linux 10.1, MsSqlServer 2005 as jetspeed database

      Description

      Today I've seen this error in all entities of one of our portlet.
      I've never seen this error before.

      Here is a stack dump:
      java.lang.NullPointerException in:

      • org.apache.jetspeed.prefs.impl.NodeImplProxy.getFullPath(NodeImplProxy.java:45)
      • org.apache.jetspeed.prefs.impl.PersistenceBrokerPreferencesProvider.getChildren(PersistenceBrokerPreferencesProvider.java:342)
      • sun.reflect.GeneratedMethodAccessor154.invoke(Unknown Source)
      • sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      • java.lang.reflect.Method.invoke(Method.java:597)
      • org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
      • org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:172)
      • org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139)
      • org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
      • org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
      • org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      • $Proxy8.getChildren(Unknown Source)
      • org.apache.jetspeed.prefs.impl.PreferencesImpl.childrenNamesSpi(PreferencesImpl.java:131)
      • java.util.prefs.AbstractPreferences.childrenNames(AbstractPreferences.java:699)
      • org.apache.jetspeed.om.preference.impl.PrefsPreferenceSetImpl.size(PrefsPreferenceSetImpl.java:269)
      • org.apache.jetspeed.om.preference.impl.FragmentPortletPreferenceSet.<init>(FragmentPortletPreferenceSet.java:51)
      • org.apache.jetspeed.om.portlet.impl.FragmentPortletDefinition.getPreferenceSet(FragmentPortletDefinition.java:230)
      • org.apache.pluto.core.impl.PortletPreferencesImpl.<init>(PortletPreferencesImpl.java:73)
      • org.apache.pluto.factory.impl.PortletPreferencesFactoryImpl.getPortletPreferences(PortletPreferencesFactoryImpl.java:39)
      • org.apache.pluto.factory.PortletObjectAccess.getPortletPreferences(PortletObjectAccess.java:127)
      • org.apache.pluto.core.impl.RenderRequestImpl.getPreferences(RenderRequestImpl.java:74)
      • $PortletRequest_117205f7f81.getPreferences($PortletRequest_117205f7f81.java)
      • $PortletRequest_117205f7f7f.getPreferences($PortletRequest_117205f7f7f.java)
      • net.liga.commons.tapestry.GeneralPortletPage.pageBeginRender(GeneralPortletPage.java:116)
      • net.liga.commons.tapestry.GeneralPortletViewPage.pageBeginRender(GeneralPortletViewPage.java:8)
      • net.liga.portal.news.NewsGeneralViewPage.pageBeginRender(NewsGeneralViewPage.java:436)
      • net.liga.portal.news.newslist.NewsListPage.pageBeginRender(NewsListPage.java:1020)
      • org.apache.tapestry.AbstractPage.firePageBeginRender(AbstractPage.java:478)
      • org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:268)
      • org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:366)
      • org.apache.tapestry.portlet.PortletRendererImpl.renderPage(PortletRendererImpl.java:75)
      • $PortletRenderer_117205f7f76.renderPage($PortletRenderer_117205f7f76.java)
      • org.apache.tapestry.portlet.PortletHomeService.service(PortletHomeService.java:80)
      • $IEngineService_117205f7f60.service($IEngineService_117205f7f60.java)
      • org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)
      • org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
      • org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
      • $WebRequestServicer_117205f7f2e.service($WebRequestServicer_117205f7f2e.java)
      • $WebRequestServicer_117205f7f2c.service($WebRequestServicer_117205f7f2c.java)
      • org.apache.tapestry.portlet.RenderRequestServicerToWebRequestServicerBridge.service(RenderRequestServicerToWebRequestServicerBridge.java:49)
      • $RenderRequestServicer_117205f7f26.service($RenderRequestServicer_117205f7f26.java)
      • $RenderRequestServicer_117205f7da8.service($RenderRequestServicer_117205f7da8.java)
      • org.apache.tapestry.portlet.ApplicationPortlet.render(ApplicationPortlet.java:161)
      • org.apache.jetspeed.factory.JetspeedPortletInstance.render(JetspeedPortletInstance.java:103)
      • org.apache.jetspeed.container.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:265)
      • javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
      • javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      • org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      • org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      • org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
      • org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
      • org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
      • org.apache.jetspeed.container.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:245)
      • org.apache.jetspeed.container.invoker.ServletPortletInvoker.render(ServletPortletInvoker.java:128)
      • org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:119)
      • org.apache.jetspeed.container.JetspeedPortletContainerWrapper.renderPortlet(JetspeedPortletContainerWrapper.java:121)
      • org.apache.jetspeed.aggregator.impl.RenderingJobImpl.execute(RenderingJobImpl.java:242)
      • org.apache.jetspeed.aggregator.impl.PortletRendererImpl.renderNow(PortletRendererImpl.java:226)
      • org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:147)
      • org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:143)
      • org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:143)
      • org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build(PageAggregatorImpl.java:78)
      • org.apache.jetspeed.aggregator.AggregatorValve.invoke(AggregatorValve.java:46)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.aggregator.HeaderAggregatorValve.invoke(HeaderAggregatorValve.java:53)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.decoration.DecorationValve.invoke(DecorationValve.java:130)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.resource.ResourceValveImpl.invoke(ResourceValveImpl.java:130)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.pipeline.valve.impl.ActionValveImpl.invoke(ActionValveImpl.java:184)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.container.ContainerValve.invoke(ContainerValve.java:104)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.profiler.impl.ProfilerValveImpl.invoke(ProfilerValveImpl.java:248)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.security.impl.LoginValidationValveImpl.invoke(LoginValidationValveImpl.java:159)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.security.impl.PasswordCredentialValveImpl.invoke(PasswordCredentialValveImpl.java:150)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.localization.impl.LocalizationValveImpl.invoke(LocalizationValveImpl.java:170)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.security.impl.AbstractSecurityValve$1.run(AbstractSecurityValve.java:138)
      • java.security.AccessController.doPrivileged(Native Method)
      • javax.security.auth.Subject.doAsPrivileged(Subject.java:454)
      • org.apache.jetspeed.security.JSSubject.doAsPrivileged(JSSubject.java:179)
      • org.apache.jetspeed.security.impl.AbstractSecurityValve.invoke(AbstractSecurityValve.java:132)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.container.url.impl.PortalURLValveImpl.invoke(PortalURLValveImpl.java:66)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.capabilities.impl.CapabilityValveImpl.invoke(CapabilityValveImpl.java:126)
      • org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167)
      • org.apache.jetspeed.pipeline.JetspeedPipeline.invoke(JetspeedPipeline.java:146)
      • org.apache.jetspeed.engine.JetspeedEngine.service(JetspeedEngine.java:227)
      • org.apache.jetspeed.engine.JetspeedServlet.doGet(JetspeedServlet.java:242)
      • javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
      • javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      • org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      • org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      • org.apache.jetspeed.engine.servlet.XXSUrlAttackFilter.doFilter(XXSUrlAttackFilter.java:52)
      • org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      • org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      • net.sf.ehcache.constructs.web.filter.CachingFilter.buildPage(CachingFilter.java:211)
      • net.sf.ehcache.constructs.web.filter.CachingFilter.buildPageInfo(CachingFilter.java:164)
      • net.sf.ehcache.constructs.web.filter.CachingFilter.doFilter(CachingFilter.java:130)
      • net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:92)
      • org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      • org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      • org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      • org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      • org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
      • org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      • org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      • org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      • org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      • org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      • org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
      • org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      • org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
      • org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
      • java.lang.Thread.run(Thread.java:619)

        Activity

        Hide
        David Sean Taylor added a comment -

        Removed the backup code on reset, since we never actually restore the backed values for an entity. This code was not only not thread safe, but was also causing additional CPU usage.
        I believe the PrefsPreferenceSetImpl.PortletPrefsIterator inner class is also not thread safe. It is used in other parts of the code.
        We will be refactoring all of this out in 2.2

        Show
        David Sean Taylor added a comment - Removed the backup code on reset, since we never actually restore the backed values for an entity. This code was not only not thread safe, but was also causing additional CPU usage. I believe the PrefsPreferenceSetImpl.PortletPrefsIterator inner class is also not thread safe. It is used in other parts of the code. We will be refactoring all of this out in 2.2

          People

          • Assignee:
            David Sean Taylor
            Reporter:
            Vitaly Baranovsky
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development