Package org.apache.lucene.monitor
Class ConcurrentQueryLoader
java.lang.Object
org.apache.lucene.monitor.ConcurrentQueryLoader
- All Implemented Interfaces:
Closeable,AutoCloseable
Utility class for concurrently loading queries into a Monitor.
This is useful to speed up startup times for a Monitor. You can use multiple threads to parse and index queries before starting matches.
Use as follows:
List<QueryError> errors = new ArrayList<>();
try (ConcurrentQueryLoader loader = new ConcurrentQueryLoader(monitor, errors)) {
for (MonitorQuery mq : getQueries()) {
loader.add(mq);
}
}
The Monitor's MonitorQueryParser must be thread-safe for this to work correctly.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConcurrentQueryLoader(Monitor monitor) Create a new ConcurrentQueryLoader for aMonitorConcurrentQueryLoader(Monitor monitor, int threads, int queueSize) Create a new ConcurrentQueryLoader -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(MonitorQuery mq) Add a MonitorQuery to the loader's internal buffervoidclose()
-
Field Details
-
DEFAULT_QUEUE_SIZE
public static final int DEFAULT_QUEUE_SIZE- See Also:
-
-
Constructor Details
-
ConcurrentQueryLoader
Create a new ConcurrentQueryLoader for aMonitor- Parameters:
monitor- Monitor
-
ConcurrentQueryLoader
Create a new ConcurrentQueryLoader- Parameters:
monitor- the Monitor to load queries tothreads- the number of threads to usequeueSize- the size of the buffer to hold queries in
-
-
Method Details
-
add
Add a MonitorQuery to the loader's internal bufferIf the buffer is full, this will block until there is room to add the MonitorQuery
- Parameters:
mq- the monitor query- Throws:
InterruptedException- if interrupted while waiting
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-