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

Indexing fails for content created by LDAP users with null full name

    XMLWordPrintable

Details

    Description

      Many content types created by LDAP users are not being indexed properly by confluence. During a full index rebuild, there are several of the following errors in the logs:

      2011-02-14 12:53:03,512 ERROR [Indexer: 2] [atlassian.bonnie.search.BaseDocumentBuilder] getDocument Error extracting search fields from Attachment: sean.boran3.png v.1 (5570570) TGDBOSE1 using BackwardsCompatibleExtractor wrapping com.atlassian.confluence.search.lucene.extractor.ConfluenceAttachmentMetadataExtractor@4183d912 (confluence.extractors.core:attachmentMetadataExtractor): value cannot be null
      java.lang.NullPointerException: value cannot be null
      	at org.apache.lucene.document.Field.<init>(Field.java:330)
      	at org.apache.lucene.document.Field.<init>(Field.java:305)
      	at org.apache.lucene.document.Field.<init>(Field.java:284)
      	at com.atlassian.confluence.search.lucene.extractor.ConfluenceAttachmentMetadataExtractor.addFields(ConfluenceAttachmentMetadataExtractor.java:66)
      	at com.atlassian.confluence.plugin.descriptor.ExtractorModuleDescriptor$BackwardsCompatibleExtractor.addFields(ExtractorModuleDescriptor.java:45)
      	at com.atlassian.bonnie.search.BaseDocumentBuilder.getDocument(BaseDocumentBuilder.java:104)
      	at com.atlassian.confluence.search.lucene.ConfluenceDocumentBuilder.getDocument(ConfluenceDocumentBuilder.java:102)
      	at com.atlassian.confluence.search.lucene.tasks.AddDocumentIndexTask.perform(AddDocumentIndexTask.java:43)
      	at com.atlassian.bonnie.index.TempIndexWriter.perform(TempIndexWriter.java:73)
      	at com.atlassian.confluence.search.lucene.TempIndexWriterStrategy.perform(TempIndexWriterStrategy.java:43)
      	at com.atlassian.confluence.search.lucene.tasks.TempIndexBackedIndexTaskPerformer.perform(TempIndexBackedIndexTaskPerformer.java:21)
      	at com.atlassian.confluence.search.lucene.DefaultObjectQueueWorker.indexCollection(DefaultObjectQueueWorker.java:78)
      	at com.atlassian.confluence.search.lucene.DefaultObjectQueueWorker$1.doInTransactionWithoutResult(DefaultObjectQueueWorker.java:62)
      	at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
      	at com.atlassian.confluence.search.lucene.DefaultObjectQueueWorker.run(DefaultObjectQueueWorker.java:51)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      
      2011-02-14 12:53:07,717 ERROR [Indexer: 3] [atlassian.bonnie.search.BaseDocumentBuilder] getDocument Error extracting search fields from status: Wow v.1 (23003144) using BackwardsCompatibleExtractor wrapping com.atlassian.confluence.search.lucene.extractor.UserStatusExtractor@13df208f (confluence.userstatus:userStatusExtractor): value cannot be null
      java.lang.NullPointerException: value cannot be null
      	at org.apache.lucene.document.Field.<init>(Field.java:330)
      	at org.apache.lucene.document.Field.<init>(Field.java:305)
      	at org.apache.lucene.document.Field.<init>(Field.java:284)
      	at com.atlassian.confluence.search.lucene.extractor.UserStatusExtractor.addFields(UserStatusExtractor.java:24)
      	at com.atlassian.confluence.plugin.descriptor.ExtractorModuleDescriptor$BackwardsCompatibleExtractor.addFields(ExtractorModuleDescriptor.java:45)
      	at com.atlassian.bonnie.search.BaseDocumentBuilder.getDocument(BaseDocumentBuilder.java:104)
      	at com.atlassian.confluence.search.lucene.ConfluenceDocumentBuilder.getDocument(ConfluenceDocumentBuilder.java:102)
      	at com.atlassian.confluence.search.lucene.tasks.AddDocumentIndexTask.perform(AddDocumentIndexTask.java:43)
      	at com.atlassian.bonnie.index.TempIndexWriter.perform(TempIndexWriter.java:73)
      	at com.atlassian.confluence.search.lucene.TempIndexWriterStrategy.perform(TempIndexWriterStrategy.java:43)
      	at com.atlassian.confluence.search.lucene.tasks.TempIndexBackedIndexTaskPerformer.perform(TempIndexBackedIndexTaskPerformer.java:21)
      	at com.atlassian.confluence.search.lucene.DefaultObjectQueueWorker.indexCollection(DefaultObjectQueueWorker.java:78)
      	at com.atlassian.confluence.search.lucene.DefaultObjectQueueWorker$1.doInTransactionWithoutResult(DefaultObjectQueueWorker.java:62)
      	at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
      	at com.atlassian.confluence.search.lucene.DefaultObjectQueueWorker.run(DefaultObjectQueueWorker.java:51)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      

      This is happening for Attachments and UserStatus, and may happen for several other datatypes as well. It only happens where the LDAP user is missing a full name value in confluence (i.e. the PersonalInformation object referenced by the Attachment has a null fullName value, or the UserStatus has a null fullName value, etc).

      This exception should never be thrown, as null values need to be handled in each of the extractors.

      Workaround

      1) Disable the UserStatusExtractor in the User Status Plugin in Confluence Admin > Plugins.
      2) Disable the EmbeddedSubCalendarsExtractor in Team Calendars (if installed)
      3) Reindex.
      4) Watch for any other stack traces. If there are any, contact support.

      Note: make a note of which Extractors you will have to disable in case you need to enable them again.

      The above changes should result in:

      • The object that any disabled Extractor pertains to will not be searchable
      • The rest of the content will be indexed correctly and will be searchable

      Attachments

        Activity

          People

            don.willis@atlassian.com Don Willis
            richatkins Richard Atkins
            Votes:
            9 Vote for this issue
            Watchers:
            14 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: