Details
-
Bug
-
Resolution: Fixed
-
Medium
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.