public interface Clusterable
Modifier and Type | Method and Description |
---|---|
@NotNull java.lang.String |
getInstanceId()
Will return a unique number per instance across the cluster.
|
@Nullable java.lang.String |
getVisibilityToken()
Returns the visibility token of the underlying NodeStore.
|
boolean |
isVisible(@NotNull java.lang.String visibilityToken,
long maxWaitMillis)
Checks if the underlying NodeStore sees at least the changes that were
visible at the time the visibility token was created on potentially
another instance if in a clustered NodeStore setup.
|
@NotNull @NotNull java.lang.String getInstanceId()
Will return a unique number per instance across the cluster. It will only make its best effort to preserve the same number across restarts but it must be unique across the cluster.
@Nullable @Nullable java.lang.String getVisibilityToken()
Returns the visibility token of the underlying NodeStore. A 'visibility token' is an opaque String that can be used to verify if changes done on one NodeStore are visible on another NodeStore of the same cluster. This can be achieved by generating such a visibility token on the source NodeStore, passing it on to the target NodeStore (by whatever means) and checking for visibility on that target NodeStore.
The visibility check returns true if the target NodeStore sees at least all the changes that the source NodeStore saw at time of visibility token generation. Once a visibility token is visible on a particular NodeStore it will always return true ever after. This also implies that the visibility check can only state whether at least all source changes are visible on the target and that it is independent of any further modifications.
When source and target NodeStore are identical, the visibility check is expected to return true, immediately. This is based on the assumption that with a session.refresh() on that NodeStore you'll always get the latest changes applied by any other session locally.
Visibility tokens are meant to be lightweight and are not expected to be persisted by the implementor. Nevertheless they should survive their validity in the case of crashes of the source and/or the target instance.
boolean isVisible(@NotNull @NotNull java.lang.String visibilityToken, long maxWaitMillis) throws java.lang.InterruptedException
Checks if the underlying NodeStore sees at least the changes that were visible at the time the visibility token was created on potentially another instance if in a clustered NodeStore setup.
If the visibility token was created on the underlying NodeStore this check always returns true, immediately.
visibilityToken
- the visibility token that was created on another instance in a
clustered NodeStore setup. Providing null is not supported and
might throw a RuntimeExceptionmaxWaitMillis
- if >-1 waits (at max this many milliseconds if >0,
forever if ==0) until the underlying NodeStore sees at least
the changes represented by the provided visibility token. if
< 0 the method does not waitjava.lang.InterruptedException
- (optionally) thrown if interrupted while waitingCopyright © 2010 - 2020 Adobe. All Rights Reserved