public class BackgroundObserver extends Object implements Observer, Closeable
contentChanged(NodeState, CommitInfo) method will never block,
regardless of the behavior of the other observer. If that observer blocks
or is too slow to consume all content changes, causing the change queue
to fill up, any further update will automatically be merged into just one
external content change, causing potential loss of local commit information.
To help prevent such cases, any sequential external content changes that
the background observer thread has yet to process are optionally
(see alwaysCollapseExternalEvents and oak.observation.alwaysCollapseExternal)
automatically merged to just one change.| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_QUEUE_SIZE |
| Constructor and Description |
|---|
BackgroundObserver(@NotNull Observer observer,
@NotNull Executor executor) |
BackgroundObserver(@NotNull Observer observer,
@NotNull Executor executor,
int queueLength) |
BackgroundObserver(@NotNull Observer observer,
@NotNull Executor executor,
int queueLength,
@NotNull Thread.UncaughtExceptionHandler exceptionHandler) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
added(int queueSize)
Called when ever an item has been added to the queue
|
void |
close()
Clears the change queue and signals the background thread to stop
without making any further
contentChanged(NodeState, CommitInfo)
calls to the background observer. |
void |
contentChanged(@NotNull NodeState root,
@NotNull CommitInfo info)
Observes a content change.
|
int |
getMaxQueueLength() |
@NotNull BackgroundObserverMBean |
getMBean() |
protected void |
removed(int queueSize,
long created)
Called when ever an item has been removed from the queue.
|
public static final int DEFAULT_QUEUE_SIZE
public BackgroundObserver(@NotNull
@NotNull Observer observer,
@NotNull
@NotNull Executor executor,
int queueLength,
@NotNull
@NotNull Thread.UncaughtExceptionHandler exceptionHandler)
public BackgroundObserver(@NotNull
@NotNull Observer observer,
@NotNull
@NotNull Executor executor,
int queueLength)
protected void added(int queueSize)
queueSize - size of the queueprotected void removed(int queueSize,
long created)
queueSize - the size of the queue after the item was removed.created - the time in milliseconds when the removed item was put
into the queue.public int getMaxQueueLength()
public void close()
contentChanged(NodeState, CommitInfo)
calls to the background observer. If the thread is currently in the
middle of such a call, then that call is allowed to complete; i.e.
the thread is not forcibly interrupted. This method returns immediately
without blocking to wait for the thread to finish.
After a call to this method further calls to contentChanged(NodeState, CommitInfo)
will throw a IllegalStateException.
close in interface Closeableclose in interface AutoCloseable@NotNull public @NotNull BackgroundObserverMBean getMBean()
public void contentChanged(@NotNull
@NotNull NodeState root,
@NotNull
@NotNull CommitInfo info)
ObserverObserver class javadocs
and relevant repository and observer registration details for more
information on when and how this method gets called.contentChanged in interface Observerroot - root state of the repositoryinfo - commit informationIllegalStateException - if close() has already been called.Copyright © 2012–2021 The Apache Software Foundation. All rights reserved.