public class BackgroundObserver extends java.lang.Object implements Observer, java.io.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 java.util.concurrent.Executor executor) |
BackgroundObserver(@NotNull Observer observer,
@NotNull java.util.concurrent.Executor executor,
int queueLength) |
BackgroundObserver(@NotNull Observer observer,
@NotNull java.util.concurrent.Executor executor,
int queueLength,
@NotNull java.lang.Thread.UncaughtExceptionHandler exceptionHandler) |
Modifier and Type | Method and Description |
---|---|
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() |
public static final int DEFAULT_QUEUE_SIZE
public BackgroundObserver(@NotNull @NotNull Observer observer, @NotNull @NotNull java.util.concurrent.Executor executor, int queueLength, @NotNull @NotNull java.lang.Thread.UncaughtExceptionHandler exceptionHandler)
public BackgroundObserver(@NotNull @NotNull Observer observer, @NotNull @NotNull java.util.concurrent.Executor executor, int queueLength)
public BackgroundObserver(@NotNull @NotNull Observer observer, @NotNull @NotNull java.util.concurrent.Executor executor)
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 java.io.Closeable
close
in interface java.lang.AutoCloseable
@NotNull public @NotNull BackgroundObserverMBean getMBean()
public void contentChanged(@NotNull @NotNull NodeState root, @NotNull @NotNull CommitInfo info)
Observer
Observer
class javadocs
and relevant repository and observer registration details for more
information on when and how this method gets called.contentChanged
in interface Observer
root
- root state of the repositoryinfo
- commit informationjava.lang.IllegalStateException
- if close()
has already been called.Copyright © 2010 - 2020 Adobe. All Rights Reserved