Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-25609

REST searches that match deleted users return HTTP 500 (this breaks sharing)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Low
    • 4.2.11
    • 4.2.2, 4.2.4
    • None

    Description

      Steps to reproduce (I have only tried this on OnDemand):

      1. Create 2 users, 'fred1' and 'fred2'
      2. Hit https://instance/wiki/rest/prototype/1/search/user.json?query=fred until both users come back in the result.
      3. Delete user fred2.
      4. Hit https://instance/wiki/rest/prototype/1/search/user.json?query=fred a few times - observe an HTTP 500 response instead of the search result.

      This breaks sharing, which relies on REST search calls, and persists across re-indexes and restarts.

      This issue was encountered by an OnDemand customer. The only workaround I found was to modify/remove the lingering USERINFO entry associated with the deleted user in the content table, and then re-index.

      Note that the exception that provokes the HTTP 500 is not logged out-of-the-box, due to https://ecosystem.atlassian.net/browse/REST-198. The problem is an NPE when building a PersonalInformationContentEntity:

      java.lang.NullPointerException                                                                                                                                             
            at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:48) 
            at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:92)
            at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:85)            
            at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:218)                                    
            at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:190)                             
            at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:61)                                               
            at com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:187)                                                                
            at sun.reflect.GeneratedMethodAccessor332.invoke(Unknown Source)                                                                                                     
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)                                                                             
            at java.lang.reflect.Method.invoke(Method.java:597)                                                                                                                  
            at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206)                            
            at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:92)                                             
            at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)                                                
            at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38)                                                       
            at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)                                                
            at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:100)                           
            at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:30)                                              
            at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202)                           
            at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)                                      
      ...
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              rfernandes Robin Fernandes (go/robinleave) (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: