Empty-titled page causes NullPointerException for space view

XMLWordPrintable

    • Type: Bug
    • Resolution: Won't Fix
    • Priority: High
    • None
    • Affects Version/s: 1.4.4
    • Component/s: None
    • Environment:

      I was doing an upgrade (1.4.3 to 1.4.4) and deploy against Oracle testing. After it was done, everything seems to work until I tried to view one space, which crashed and gave this info:

      java.lang.NullPointerException
      	at java.lang.String.compareTo(String.java:998)
      	at com.atlassian.confluence.util.PageComparator.compare(PageComparator.java:22)
      	at java.util.Arrays.mergeSort(Arrays.java:1284)
      	at java.util.Arrays.mergeSort(Arrays.java:1296)
      	at java.util.Arrays.sort(Arrays.java:1223)
      	at java.util.Collections.sort(Collections.java:159)
      	at com.atlassian.confluence.pages.actions.DirectoryViewListPagesAction.execute(DirectoryViewListPagesAction.java:117)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
      	at com.atlassian.confluence.core.ConfluenceWorkflowInterceptor.intercept(ConfluenceWorkflowInterceptor.java:33)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.atlassian.confluence.core.ConfluenceValidationInterceptor.intercept(ConfluenceValidationInterceptor.java:16)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.atlassian.confluence.security.actions.PermissionCheckInterceptor.intercept(PermissionCheckInterceptor.java:40)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.atlassian.confluence.pages.actions.PageAwareInterceptor.intercept(PageAwareInterceptor.java:87)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.atlassian.confluence.core.ConfluenceAutowireInterceptor.intercept(ConfluenceAutowireInterceptor.java:25)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.atlassian.confluence.util.XWorkTransactionInterceptor.intercept(XWorkTransactionInterceptor.java:133)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
      	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
      	at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:229)
      	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:199)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
      	at com.atlassian.confluence.util.profiling.ProfilingPageFilter.parsePage(ProfilingPageFilter.java:150)
      	at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:168)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:96)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:170)
      	at bucket.custom.FlushingSpringSessionInViewFilter.doFilterInternal(FlushingSpringSessionInViewFilter.java:31)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
      	at com.atlassian.confluence.util.error.ProfilingAndErrorFilter.doFilter(ProfilingAndErrorFilter.java:27)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.atlassian.core.filters.gzip.GzipFilter.doFilter(GzipFilter.java:61)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:36)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
      	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
      	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
      	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
      	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
      	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
      	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
      	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
      	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
      	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
      	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
      	at java.lang.Thread.run(Thread.java:595)
      
      Referer URL: http://myserver:8080/dashboard.action
      
      Build Information:
      Uptime: 19 hours, 47 minutes, 47 seconds
      Version: 1.4.4
      Build Number: 221
      
      Server Information:
      Application Server: Apache Tomcat/4.1.30
      Servlet Version: 2.3
      Database Dialect: net.sf.hibernate.dialect.Oracle9Dialect
      
      Memory Information:
      Total Memory: 152 MB
      Free Memory: 12 MB
      Used Memory: 140 MB
      
      System Information:
      System Date: Wednesday, 05 Oct 2005
      System Time: 10:54:39
      System Favourite Colour: Lime
      Java Version: 1.5.0_04
      Java Vendor: Sun Microsystems Inc.
      JVM Version: 1.0
      JVM Vendor: Sun Microsystems Inc.
      JVM Implementation Version: 1.5.0_04-b05
      Java Runtime: Java(TM) 2 Runtime Environment, Standard Edition
      Java VM: Java HotSpot(TM) Server VM
      User Name: myusername
      User Timezone: America/Montreal
      Operating System: Linux 2.4.18-18.7.xbigmem
      OS Architecture: i386
      Request
      
      Information:
      URL: http://myserver:8080/pages/listpages-dirview.action
      - Scheme: http
      - Server: myserver
      - Port: 8080
      - URI: /500page.jsp
      - - Context Path:
      - - Servlet Path: /500page.jsp
      - - Path Info: null
      - - Query String: key=rep
      
      Attributes:
      - javax.servlet.error.exception : java.lang.NullPointerException
      - os_securityfilter_already_filtered : true
      - com.atlassian.johnson.filters.JohnsonFilter_already_filtered : true
      - __sitemesh__using_stream : false
      - javax.servlet.error.request_uri : /pages/listpages-dirview.action
      - javax.servlet.error.status_code : 500
      - __sitemesh__filterapplied : true
      - javax.servlet.error.servlet_name : action
      - webwork.valueStack : com.opensymphony.xwork.util.OgnlValueStack@19c314
      - javax.servlet.error.exception_type : class java.lang.NullPointerException
      - loginfilter.already.filtered : true
      - atlassian.core.seraph.original.url : /pages/listpages-dirview.action?key=rep
      - javax.servlet.jsp.jspException : java.lang.NullPointerException
      - sessioninview.FILTERED : true
      - com.atlassian.core.filters.gzip.GzipFilter_already_filtered : true
      
      Parameters:
      - key = rep
      
      Logging:
      0 log statements generated by this request.
      

      Then I remembered in 1.4.3, I was trying out the new

      {redirect}

      and

      {alias} macros, and the latter one was tricky and the deletion of it wasn't complete. It left behind an empty-titled page. It didn't cause problem for the 1.4.3 and the embedded DB, but apparently it wasn't working for 1.4.4.

      Then I tried to delete that page from Oracle DB. After its deletion, I was able to access the space view and all pages. But the space view's limited to 'recently updated' view and 'alphabetically listed' view. The tree view still gave an exception as below:
      Cause:
      java.lang.NullPointerException
      
      Stack Trace: [hide]
      
      java.lang.NullPointerException
      
      Referer URL: http://myserver:8080/pages/recentlyupdated.action?key=rep
      
      Build Information:
      Uptime: 20 hours, 7 minutes, 28 seconds
      Version: 1.4.4
      Build Number: 221
      
      Server Information:
      Application Server: Apache Tomcat/4.1.30
      Servlet Version: 2.3
      Database Dialect: net.sf.hibernate.dialect.Oracle9Dialect
      
      Memory Information:
      Total Memory: 215 MB
      Free Memory: 59 MB
      Used Memory: 156 MB
      
      System Information:
      System Date: Wednesday, 05 Oct 2005
      System Time: 11:14:20
      System Favourite Colour: Lime
      Java Version: 1.5.0_04
      Java Vendor: Sun Microsystems Inc.
      JVM Version: 1.0
      JVM Vendor: Sun Microsystems Inc.
      JVM Implementation Version: 1.5.0_04-b05
      Java Runtime: Java(TM) 2 Runtime Environment, Standard Edition
      Java VM: Java HotSpot(TM) Server VM
      User Name: myusername
      User Timezone: America/Montreal
      Operating System: Linux 2.4.18-18.7.xbigmem
      OS Architecture: i386
      Request
      
      Information:
      URL: http://myserver:8080/pages/listpages-dirview.action
      - Scheme: http
      - Server: myserver
      - Port: 8080
      - URI: /500page.jsp
      - - Context Path:
      - - Servlet Path: /500page.jsp
      - - Path Info: null
      - - Query String: key=rep
      
      Attributes:
      - javax.servlet.error.exception : java.lang.NullPointerException
      - os_securityfilter_already_filtered : true
      - __sitemesh__using_stream : false
      - com.atlassian.johnson.filters.JohnsonFilter_already_filtered : true
      - javax.servlet.error.request_uri : /pages/listpages-dirview.action
      - javax.servlet.error.status_code : 500
      - __sitemesh__filterapplied : true
      - javax.servlet.error.servlet_name : action
      - webwork.valueStack : com.opensymphony.xwork.util.OgnlValueStack@17e1c1f
      - javax.servlet.error.exception_type : class java.lang.NullPointerException
      - atlassian.core.seraph.original.url : /pages/listpages-dirview.action?key=rep
      - loginfilter.already.filtered : true
      - javax.servlet.jsp.jspException : java.lang.NullPointerException
      - sessioninview.FILTERED : true
      - com.atlassian.core.filters.gzip.GzipFilter_already_filtered : true
      
      Parameters:
      - key = rep
      
      Logging:
      0 log statements generated by this request.
      


      Please let me know if there's other things that need to be check/deleted for that empty page (I forgot to write down the page content id though). Also please check, if possible, why {alias}

      macro caused this problem after an alias was deleted. Thanks a lot!

      Mingyi

              Assignee:
              Unassigned
              Reporter:
              Mingyi Liu
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved: