[ 
https://issues.apache.org/jira/browse/JCR-2787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marcel Reutegger updated JCR-2787:
----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.0
           Status: Resolved  (was: Patch Available)

Applied patch in revision: 1030517

> IndexMerger: Synchronization issue on repository shutdown
> ---------------------------------------------------------
>
>                 Key: JCR-2787
>                 URL: https://issues.apache.org/jira/browse/JCR-2787
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.1.1
>         Environment: JDK 1.6.0_20, Ubuntu 10.04
>            Reporter: Harald Wellmann
>            Priority: Minor
>             Fix For: 2.2.0
>
>         Attachments: IndexMerger.patch
>
>
> After inserting a large number of nodes (~200000) into a repository and then 
> closing the session, I get the following exception:
> 19:42:40.556 [jackrabbit-pool-5] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> # of busy merge workers: 2
> 19:42:40.556 [jackrabbit-pool-3] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> accepted merge request
> 19:42:40.556 [jackrabbit-pool-5] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> Worker finished
> 19:42:40.556 [jackrabbit-pool-3] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> create new index
> 19:42:40.557 [jackrabbit-pool-3] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> get index readers from MultiIndex
> 19:42:40.640 [main] INFO  c.a.kmp.generator.JpaToJcrImporter - end JCR save
> 19:42:40.849 [main] INFO  o.a.j.core.TransientRepository - Session closed
> 19:42:40.849 [main] INFO  o.a.jackrabbit.core.RepositoryImpl - Shutting down 
> repository...
> 19:42:40.849 [main] DEBUG o.a.j.core.query.lucene.IndexMerger - dispose 
> IndexMerger
> 19:42:40.849 [main] DEBUG o.a.j.core.query.lucene.IndexMerger - quit flag set
> 19:42:40.849 [main] INFO  o.a.j.core.query.lucene.SearchIndex - Index closed: 
> repository/repository/index
> 19:42:40.850 [main] INFO  o.a.jackrabbit.core.RepositoryImpl - shutting down 
> workspace 'default'...
> 19:42:40.850 [main] INFO  o.a.j.c.o.ObservationDispatcher - Notification of 
> EventListeners stopped.
> 19:42:40.850 [main] DEBUG o.a.j.core.query.lucene.IndexMerger - dispose 
> IndexMerger
> 19:42:40.850 [main] DEBUG o.a.j.core.query.lucene.IndexMerger - quit flag set
> 19:42:40.850 [main] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> IndexMerger.Worker thread stopped
> 19:42:40.855 [main] DEBUG o.a.j.core.query.lucene.IndexMerger - index added: 
> name=_6h, numDocs=890
> 19:42:41.367 [jackrabbit-pool-3] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> deleting index _6g
> 19:42:41.393 [main] INFO  o.a.j.core.query.lucene.SearchIndex - Index closed: 
> repository/workspaces/default/index
> 19:42:41.410 [jackrabbit-pool-3] ERROR o.a.j.core.query.lucene.IndexMerger - 
> Error while merging indexes: 
> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed
>       at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:412) 
> ~[lucene-core-2.4.1.jar:2.4.1 750176 - 2009-03-04 21:56:52]
>       at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:417) 
> ~[lucene-core-2.4.1.jar:2.4.1 750176 - 2009-03-04 21:56:52]
>       at 
> org.apache.lucene.index.IndexWriter.startTransaction(IndexWriter.java:2511) 
> ~[lucene-core-2.4.1.jar:2.4.1 750176 - 2009-03-04 21:56:52]
>       at 
> org.apache.lucene.index.IndexWriter.addIndexes(IndexWriter.java:3273) 
> ~[lucene-core-2.4.1.jar:2.4.1 750176 - 2009-03-04 21:56:52]
>       at 
> org.apache.jackrabbit.core.query.lucene.PersistentIndex.addIndexes(PersistentIndex.java:114)
>  ~[jackrabbit-core-2.1.1.jar:2.1.1]
>       at 
> org.apache.jackrabbit.core.query.lucene.IndexMerger$Worker.run(IndexMerger.java:525)
>  ~[jackrabbit-core-2.1.1.jar:2.1.1]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
> [na:1.6.0_20]
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
> [na:1.6.0_20]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
> [na:1.6.0_20]
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
>  [na:1.6.0_20]
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
>  [na:1.6.0_20]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>  [na:1.6.0_20]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>  [na:1.6.0_20]
>       at java.lang.Thread.run(Thread.java:619) [na:1.6.0_20]
> 19:42:41.420 [jackrabbit-pool-3] DEBUG o.a.j.core.query.lucene.IndexMerger - 
> Worker finished
> 19:42:41.839 [main] INFO  o.a.j.c.p.b.DerbyPersistenceManager - Database 
> 'repository/workspaces/default/db' shutdown.
> The problem is reproducible. Apparently, the Lucene index is closed before 
> all IndexMerger worker threads are terminated. The root cause seems to be the 
> AtomicBoolean IndexMerger.Worker.terminated which is always true. The 
> enclosed patch solves the problem in my use case.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to