Uploaded image for project: 'Atlassian Intelligence'
  1. Atlassian Intelligence
  2. AI-360

WordTextExtractor causes OOMEs in OnDemand

    XMLWordPrintable

Details

    • Severity 3 - Minor

    Description

      Problem

      In OnDemand we regularly get OOME's with the following stack traces. This may cause a chain of OOMEs preventing the instance from starting up again and again, as Confluence keeps attempting to index the offending attachments.

       Thread 0x7af5d440
        at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:25)
        at asposewobfuscated.aad.<init>(I)V (:44)
        at asposewobfuscated.kh.a(JIIZ)Lasposewobfuscated/aad; (:331)
        at asposewobfuscated.kh.a(Lasposewobfuscated/bp;Lasposewobfuscated/ol;)V (:461)
        at asposewobfuscated.kh.a(Lasposewobfuscated/bp;Lasposewobfuscated/ol;)V (:474)
        at asposewobfuscated.kh.a(Lasposewobfuscated/bp;Lasposewobfuscated/ol;)V (:455)
        at asposewobfuscated.kh.lT()V (:418)
        at asposewobfuscated.kh.lU()Lasposewobfuscated/ol; (:496)
        at com.aspose.words.gj.dG(Ljava/lang/String;)Lcom/aspose/words/ir; (:121)
        at com.aspose.words.axo.c(Lcom/aspose/words/vk;)V (:312)
        at com.aspose.words.axs.h(Lcom/aspose/words/vk;)Lcom/aspose/words/ShapeBase; (:234)
        at com.aspose.words.axs.g(Lcom/aspose/words/vk;)Lcom/aspose/words/ShapeBase; (:156)
        at com.aspose.words.adi.o(Lcom/aspose/words/acs;Lcom/aspose/words/aqn;)V (:511)
        at com.aspose.words.adi.l(Lcom/aspose/words/acs;Lcom/aspose/words/aqn;)Z (:313)
        at com.aspose.words.adi.h(Lcom/aspose/words/acs;Lcom/aspose/words/aqn;)V (:169)
        at com.aspose.words.adi.i(Lcom/aspose/words/acs;)V (:70)
        at com.aspose.words.ha.k(Lcom/aspose/words/acs;)V (:65)
        at com.aspose.words.ha.j(Lcom/aspose/words/acs;)V (:35)
        at com.aspose.words.fs.b(Lcom/aspose/words/acs;)V (:47)
        at com.aspose.words.ha.k(Lcom/aspose/words/acs;)V (:77)
        at com.aspose.words.hh.u(Lcom/aspose/words/acs;)Z (:131)
        at com.aspose.words.ht.k(Lcom/aspose/words/acs;)V (:66)
        at com.aspose.words.gj.h(Lcom/aspose/words/DocumentBase;)V (:70)
        at com.aspose.words.gi.KF()V (:58)
        at com.aspose.words.gi.KE()V (:34)
        at com.aspose.words.gj.read()V (:46)
        at com.aspose.words.hi.KF()V (:63)
        at com.aspose.words.hi.read()V (:54)
        at com.aspose.words.Document.b(Lasposewobfuscated/aaf;Lcom/aspose/words/LoadOptions;)V (:1246)
        at com.aspose.words.Document.a(Lasposewobfuscated/aaf;Lcom/aspose/words/LoadOptions;)V (:1167)
        at com.aspose.words.Document.<init>(Lasposewobfuscated/aaf;Lcom/aspose/words/LoadOptions;)V (:200)
        at com.aspose.words.Document.<init>(Lasposewobfuscated/aaf;)V (:171)
        at com.aspose.words.Document.<init>(Ljava/io/InputStream;)V (:166)
        at com.atlassian.confluence.extra.officeconnector.index.word.WordTextExtractor.extractText(Ljava/io/InputStream;Lcom/atlassian/bonnie/search/SearchableAttachment;)Ljava/lang/String; (WordTextExtractor.java:37)
        at com.atlassian.bonnie.search.extractor.BaseAttachmentContentExtractor.addFields(Lorg/apache/lucene/document/Document;Ljava/lang/StringBuffer;Lcom/atlassian/bonnie/Searchable;)V (BaseAttachmentContentExtractor.java:40)
        at com.atlassian.confluence.plugin.descriptor.ExtractorModuleDescriptor$BackwardsCompatibleExtractor.addFields(Lorg/apache/lucene/document/Document;Ljava/lang/StringBuffer;Lcom/atlassian/bonnie/Searchable;)V (ExtractorModuleDescriptor.java:42)
        at com.atlassian.bonnie.search.BaseDocumentBuilder.getDocument(Lcom/atlassian/bonnie/Searchable;)Lorg/apache/lucene/document/Document; (BaseDocumentBuilder.java:104)
        at com.atlassian.confluence.search.lucene.ConfluenceDocumentBuilder.getDocument(Lcom/atlassian/bonnie/Searchable;)Lorg/apache/lucene/document/Document; (ConfluenceDocumentBuilder.java:97)
        at com.atlassian.confluence.search.lucene.tasks.AddDocumentIndexTask.perform(Lorg/apache/lucene/index/IndexWriter;)V (AddDocumentIndexTask.java:43)
        at com.atlassian.confluence.search.lucene.tasks.UpdateDocumentIndexTask.perform(Lorg/apache/lucene/index/IndexWriter;)V (UpdateDocumentIndexTask.java:49)
        at com.atlassian.confluence.search.lucene.tasks.BulkWriteIndexTask.perform(Lorg/apache/lucene/index/IndexWriter;)V (BulkWriteIndexTask.java:44)
        at com.atlassian.bonnie.LuceneConnection.withWriter(Lcom/atlassian/bonnie/ILuceneConnection$WriterAction;)V (LuceneConnection.java:331)
        at com.atlassian.confluence.search.lucene.tasks.LuceneConnectionBackedIndexTaskPerformer.perform(Lcom/atlassian/confluence/search/lucene/tasks/ConfluenceIndexTask;)V (LuceneConnectionBackedIndexTaskPerformer.java:20)
        at com.atlassian.confluence.search.lucene.DefaultConfluenceIndexManager$BatchUpdateAction.perform()V (DefaultConfluenceIndexManager.java:424)
        at com.atlassian.bonnie.LuceneConnection.withBatchUpdate(Lcom/atlassian/bonnie/ILuceneConnection$BatchUpdateAction;)V (LuceneConnection.java:405)
        at com.atlassian.confluence.search.lucene.DefaultConfluenceIndexManager.processTasks(Ljava/util/List;Lcom/atlassian/confluence/search/lucene/FlushStatistics;)V (DefaultConfluenceIndexManager.java:197)
        at com.atlassian.confluence.search.lucene.DefaultConfluenceIndexManager.flushQueue(Lcom/atlassian/confluence/search/lucene/ConfluenceIndexManager$IndexQueueFlushMode;)Z (DefaultConfluenceIndexManager.java:149)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (AopUtils.java:307)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint()Ljava/lang/Object; (ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava/lang/Object; (ReflectiveMethodInvocation.java:149)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object; (TransactionInterceptor.java:106)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava/lang/Object; (ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (JdkDynamicAopProxy.java:204)
        at $Proxy53.flushQueue(Lcom/atlassian/confluence/search/lucene/ConfluenceIndexManager$IndexQueueFlushMode;)Z (Unknown Source)
        at com.atlassian.confluence.search.lucene.IndexQueueFlusher.executeJob(Lorg/quartz/JobExecutionContext;)V (IndexQueueFlusher.java:30)
        at com.atlassian.confluence.setup.quartz.AbstractClusterAwareQuartzJobBean.surroundJobExecutionWithLogging(Lorg/quartz/JobExecutionContext;)V (AbstractClusterAwareQuartzJobBean.java:64)
        at com.atlassian.confluence.setup.quartz.AbstractClusterAwareQuartzJobBean.executeInternal(Lorg/quartz/JobExecutionContext;)V (AbstractClusterAwareQuartzJobBean.java:46)
        at org.springframework.scheduling.quartz.QuartzJobBean.execute(Lorg/quartz/JobExecutionContext;)V (QuartzJobBean.java:86)
        at org.quartz.core.JobRunShell.run()V (JobRunShell.java:199)
        at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool$1.run()V (ConfluenceQuartzThreadPool.java:20)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run()V (SimpleThreadPool.java:549)
      

      We neet to make the extractors more efficient in general.

      Workaround

      As a workaround, remove the offending attachments via filesystem, or replace with a simple file. The offending attachments can only be reattached as a different form e.g. zipped file.

      Attachments

        Activity

          People

            egarcia Angel Eduardo Garcia Hernandez (Inactive)
            amohdaris Azwandi Mohd Aris (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: