public class ConnectionControlSearcher extends Searcher
This searcher informs the client to close a persistent HTTP connection if the connection is older than the configured max lifetime. This is done by adding the "Connection" HTTP header with the value "Close" to the result.
The searcher reads the query property "connectioncontrol.maxlifetime", which is an integer number of seconds, to get the value for maximum connection lifetime. Setting it to zero will enforce connection close independently of the age of the connection. Typical usage would be as follows:
Modifier and Type | Field and Description |
---|---|
private LongSupplier |
clock |
private static String |
HTTP_CONNECTION_CLOSE_ARGUMENT |
private static String |
HTTP_CONNECTION_HEADER_NAME |
private static com.yahoo.processing.request.CompoundName |
KEEPALIVE_MAXLIFETIMESECONDS |
private String |
simpleName |
Modifier | Constructor and Description |
---|---|
|
ConnectionControlSearcher() |
private |
ConnectionControlSearcher(LongSupplier clock) |
Modifier and Type | Method and Description |
---|---|
static ConnectionControlSearcher |
createTestInstance(LongSupplier clock)
Create a searcher instance suitable for unit tests.
|
private void |
keepAliveProcessing(Query query,
Result result)
If the HTTP connection has been alive for too long, set the header
"Connection: Close" to tell the client to close the connection after this
request.
|
Result |
search(Query query,
Execution execution)
Override this to implement your searcher.
|
private void |
setCloseIfLifetimeExceeded(Query query,
Result result,
int maxLifetimeSeconds) |
ensureFilled, fill, getLogger, process, toString
getAnnotatedDependencies, getDefaultAnnotatedDependencies, getDependencies, initDependencies
private final String simpleName
private final LongSupplier clock
private static final com.yahoo.processing.request.CompoundName KEEPALIVE_MAXLIFETIMESECONDS
private static final String HTTP_CONNECTION_HEADER_NAME
private static final String HTTP_CONNECTION_CLOSE_ARGUMENT
public ConnectionControlSearcher()
private ConnectionControlSearcher(LongSupplier clock)
public static ConnectionControlSearcher createTestInstance(LongSupplier clock)
clock
- a simulated or real clock behaving similarly to System.currentTimeMillis()public Result search(Query query, Execution execution)
Searcher
Searcher implementation subclasses will, depending on their type of logic, do one of the following:
Hits come in two kinds - concrete hits are actual content of the kind requested by the user, meta hits are hits which provides information about the collection of hits, on the query, the service and so on.
The query specifies a window into a larger result list that must be returned from the searcher through hits and offset; Searchers which returns list of hits in the top level in the result must return at least hits number of hits (or if impossible; all that are available), starting at the given offset. In addition, searchers are allowed to return any number of meta hits (although this number is expected to be low). For hits contained in nested hit groups, the concept of a window defined by hits and offset is not well defined and does not apply.
Error handling in searchers:
private void keepAliveProcessing(Query query, Result result)
Copyright © 2018. All rights reserved.