[
https://issues.apache.org/jira/browse/LUCENE-1720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12726037#action_12726037
]
Shai Erera commented on LUCENE-1720:
------------------------------------
# Can we move to call Thread.currentThread() only once per method? Currently
stop() calls it 3 times, start() 2 and checkTimeoutIsThisThread()
# Can we change TimeoutThread to just wait() on timeLimitedThreads, instead of
wait(1000)? I think it's enough to rely on notify()? Otherwise, if my system is
idle, this thread will wake up every second for nothing.
# Maybe change checkTimeoutIsThisThread to do
"if(timedOutThreads.remove(Thread.currentThread()) != null)" and delete the
next line? If a thread has timed out, there's no need to look it up in the map
twice.
Question - TimeoutThread checks firstAnticipatedTimeout vs. the current time
and if it has exceeded, it adds firstAnticipatedThreadToFail to
timedoutThreads. I think it will fail in the following scenario:
* Thread 1 start an activity w/ time 100 (the expected exceeded time).
* Thread 2 start an activity w/ time 150.
* Thread 1 is stuck somewhere.
* TimeoutThread checks the current time against firstAnticipatedTimeout and
adds firstAnticipatedThreadToFail to timedOutThreads.
* Thread 2 checks for timeout, but timedOutThreads does not contain it.
Therefore it continues its execution.
If a thread is stuck, the rest of the threads should not fail on their "timeout
exceeded" checks. How about if when TimeoutThread detects the first timeout has
reached it will: (1) add that thread to the timedOutThreads Set and (2) set
"first timeout" to be the next in the Map/List. I think we'll need an
additional LinkedList or something, so that start(), stop(), check() and
TimeoutThread.run() will work properly, but that shouldn't be too complicated.
What do you think?
> TimeLimitedIndexReader and associated utility class
> ---------------------------------------------------
>
> Key: LUCENE-1720
> URL: https://issues.apache.org/jira/browse/LUCENE-1720
> Project: Lucene - Java
> Issue Type: New Feature
> Components: Index
> Reporter: Mark Harwood
> Assignee: Mark Harwood
> Priority: Minor
> Attachments: ActivityTimedOutException.java,
> ActivityTimeMonitor.java, TestTimeLimitedIndexReader.java,
> TimeLimitedIndexReader.java
>
>
> An alternative to TimeLimitedCollector that has the following advantages:
> 1) Any reader activity can be time-limited rather than just single searches
> e.g. the document retrieve phase.
> 2) Times out faster (i.e. runaway queries such as fuzzies detected quickly
> before last "collect" stage of query processing)
> Uses new utility timeout class that is independent of IndexReader.
> Initial contribution includes a performance test class but not had time as
> yet to work up a formal Junit test.
> TimeLimitedIndexReader is coded as JDK1.5 but can easily be undone.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]