Package org.elasticsearch.index.shard
Class RefreshListeners
- java.lang.Object
-
- org.elasticsearch.index.shard.RefreshListeners
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,org.apache.lucene.search.ReferenceManager.RefreshListener
public final class RefreshListeners extends java.lang.Object implements org.apache.lucene.search.ReferenceManager.RefreshListener, java.io.Closeable
Allows for the registration of listeners that are called when a change becomes visible for search. This functionality is exposed fromIndexShard
but kept here so it can be tested without standing up the entire thing. WhenCloseable.close()
d it will no longer accept listeners and flush any existing listeners.
-
-
Constructor Summary
Constructors Constructor Description RefreshListeners(java.util.function.IntSupplier getMaxRefreshListeners, java.lang.Runnable forceRefresh, java.util.concurrent.Executor listenerExecutor, org.apache.logging.log4j.Logger logger, ThreadContext threadContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addOrNotify(Translog.Location location, java.util.function.Consumer<java.lang.Boolean> listener)
Add a listener for refreshes, calling it immediately if the location is already visible.void
afterRefresh(boolean didRefresh)
void
beforeRefresh()
void
close()
int
pendingCount()
The number of pending listeners.boolean
refreshNeeded()
Returns true if there are pending listeners.void
setCurrentRefreshLocationSupplier(java.util.function.Supplier<Translog.Location> currentRefreshLocationSupplier)
Setup the translog used to find the last refreshed location.
-
-
-
Constructor Detail
-
RefreshListeners
public RefreshListeners(java.util.function.IntSupplier getMaxRefreshListeners, java.lang.Runnable forceRefresh, java.util.concurrent.Executor listenerExecutor, org.apache.logging.log4j.Logger logger, ThreadContext threadContext)
-
-
Method Detail
-
addOrNotify
public boolean addOrNotify(Translog.Location location, java.util.function.Consumer<java.lang.Boolean> listener)
Add a listener for refreshes, calling it immediately if the location is already visible. If this runs out of listener slots then it forces a refresh and calls the listener immediately as well.- Parameters:
location
- the location to listen forlistener
- for the refresh. Called with true if registering the listener ran it out of slots and forced a refresh. Called with false otherwise.- Returns:
- did we call the listener (true) or register the listener to call later (false)?
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
-
refreshNeeded
public boolean refreshNeeded()
Returns true if there are pending listeners.
-
pendingCount
public int pendingCount()
The number of pending listeners.
-
setCurrentRefreshLocationSupplier
public void setCurrentRefreshLocationSupplier(java.util.function.Supplier<Translog.Location> currentRefreshLocationSupplier)
Setup the translog used to find the last refreshed location.
-
beforeRefresh
public void beforeRefresh() throws java.io.IOException
- Specified by:
beforeRefresh
in interfaceorg.apache.lucene.search.ReferenceManager.RefreshListener
- Throws:
java.io.IOException
-
afterRefresh
public void afterRefresh(boolean didRefresh) throws java.io.IOException
- Specified by:
afterRefresh
in interfaceorg.apache.lucene.search.ReferenceManager.RefreshListener
- Throws:
java.io.IOException
-
-