Package org.apache.solr.search
Class CpuAllowedLimit
java.lang.Object
org.apache.solr.search.CpuAllowedLimit
- All Implemented Interfaces:
org.apache.lucene.index.QueryTimeout,QueryLimit
Enforces a CPU-time based timeout on a given SolrQueryRequest, as specified by the
cpuAllowed query parameter.
Since this class uses ThreadCpuTimer it is irrevocably lock-hostile and can never be
exposed to multiple threads, even if guarded by synchronization. Normally this is attached to
objects ultimately held by a ThreadLocal in SolrRequestInfo to provide safe usage on the
assumption that such objects are not shared to other threads.
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreate an object to represent a CPU time limit for the current request. -
Method Summary
Modifier and TypeMethodDescriptionA value representing the portion of the specified limit that has been consumed.booleanReturn true if usage has exceeded the limit.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.solr.search.QueryLimit
adjustShardRequestLimit
-
Field Details
-
TIMING_CONTEXT
-
-
Constructor Details
-
CpuAllowedLimit
Create an object to represent a CPU time limit for the current request. NOTE: this implementation will attempt to obtain an existing thread CPU time monitor, created whenQueryLimits(SolrQueryRequest, SolrQueryResponse)is called.- Parameters:
req- solr request with acpuAllowedparameter
-
-
Method Details
-
shouldExit
public boolean shouldExit()Return true if usage has exceeded the limit.- Specified by:
shouldExitin interfaceorg.apache.lucene.index.QueryTimeout
-
currentValue
Description copied from interface:QueryLimitA value representing the portion of the specified limit that has been consumed. Reading this value should never affect the outcome (other than the time it takes to do it).- Specified by:
currentValuein interfaceQueryLimit- Returns:
- an expression of the amount of the limit used so far, numeric if possible, if non-numeric it should have toString() suitable for logging or similar expression to the user.
-