SourceForge.net Logo
Main Overview Wiki Issues Forum Build Fisheye
Issue Details (XML | Word | Printable)

Key: CMP-582
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Minor Minor
Assignee: Shay Banon
Reporter: Michael Lossos
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Compass

Cannot use merge scheduler concurrent without setting threadPriority - IllegalArgumentException

Created: 18/Mar/08 04:13 AM   Updated: 18/Mar/08 05:18 AM
Component/s: Compass::Core
Affects Version/s: 2.0.0 M3
Fix Version/s: 2.0.0 M3

Environment: 2.0.0 trunk nightly build #57


 Description  « Hide
I'm attempting to use Lucene's concurrent merge scheduler via:
<prop key="compass.engine.merge.scheduler.type">concurrent</prop>

I didn't set the threadPriority property. In Compass's ConcurrentMergeSchedulerProvider:

mergeScheduler.setMergeThreadPriority(settings.getSettingAsInt(LuceneEnvironment.MergeScheduler.Concurrent.THREAD_PRIORITY, -1));

Causes an IllegalArgumentException without the threadPriority set because -1 is an invalid priority. If this is intentional, it should be doc'ed that to use concurrent, you must set the thread priority.


Caused by: java.lang.IllegalArgumentException: priority must be in range 1 .. 10 inclusive
at org.apache.lucene.index.ConcurrentMergeScheduler.setMergeThreadPriority(ConcurrentMergeScheduler.java:82)
at org.compass.core.lucene.engine.merge.scheduler.ConcurrentMergeSchedulerProvider.create(ConcurrentMergeSchedulerProvider.java:41)
at org.compass.core.lucene.engine.merge.scheduler.MergeSchedulerFactory.create(MergeSchedulerFactory.java:34)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.openIndexWriter(DefaultLuceneSearchEngineIndexManager.java:445)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.openIndexWriter(DefaultLuceneSearchEngineIndexManager.java:425)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.openIndexWriter(DefaultLuceneSearchEngineIndexManager.java:421)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.openIndexWriter(DefaultLuceneSearchEngineIndexManager.java:409)
at org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction.openIndexWriterIfNeeded(ReadCommittedTransaction.java:319)
at org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction.doDelete(ReadCommittedTransaction.java:264)
at org.compass.core.lucene.engine.transaction.AbstractTransaction.doUpdate(AbstractTransaction.java:135)
at org.compass.core.lucene.engine.transaction.AbstractTransaction.update(AbstractTransaction.java:131)
at org.compass.core.lucene.engine.LuceneSearchEngine.createOrUpdate(LuceneSearchEngine.java:270)
at org.compass.core.lucene.engine.LuceneSearchEngine.save(LuceneSearchEngine.java:248)
at org.compass.core.impl.DefaultCompassSession.save(DefaultCompassSession.java:348)



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Shay Banon added a comment - 18/Mar/08 04:21 AM
Changed the default to Thread.NORM_PRIORITY, stupid bug... .

Do you think that this might relate to the previous bug you opened? I thought about it as well, ping if this solves your other bug, so I can see if something is wrong with the executor merger. In Lucene, it is a shame to use the concurrent one since it creates a thread which is an expensive operation.

Michael Lossos added a comment - 18/Mar/08 05:18 AM
Unfortunately this bug CMP-582 was using Lucene's ConcurrentMergeScheduler and it's unrelated to CMP-581 which is using Compass's ExecutorMergeScheduler. I was just trying out different merge schedulers to see which ones worked before filing https://issues.apache.org/jira/browse/LUCENE-1239