public class ZKGlobalWatermarkTracker extends java.lang.Object implements GlobalWatermarkTracker
GlobalWatermarkTracker that stores global information in Apache Zookeeper.| Modifier and Type | Class and Description |
|---|---|
(package private) static class |
ZKGlobalWatermarkTracker.WatermarkWithUpdate |
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CFG_MAX_ACCEPTABLE_UPDATE_AGE_MS |
static java.lang.String |
CFG_NAME |
static java.lang.String |
CFG_TIME_PROVIDER |
private org.apache.zookeeper.ZooKeeper |
client |
private boolean |
closed |
private java.util.concurrent.atomic.AtomicLong |
globalWatermark |
private static long |
MAX_WATERMARK |
private long |
maxAcceptableUpdateMs |
private boolean |
parentCreated |
private org.apache.zookeeper.CreateMode |
parentCreateMode |
(package private) java.lang.String |
parentNode |
private java.util.Map<java.lang.String,ZKGlobalWatermarkTracker.WatermarkWithUpdate> |
partialWatermarks |
(package private) java.util.Map<java.lang.String,java.lang.Integer> |
pathToVersion |
private static long |
serialVersionUID |
private int |
sessionTimeout |
(package private) TimeProvider |
timeProvider |
private java.lang.String |
trackerName |
static java.lang.String |
ZK_SESSION_TIMEOUT |
static java.lang.String |
ZK_URI |
(package private) java.lang.String |
zkConnectString |
| Constructor and Description |
|---|
ZKGlobalWatermarkTracker() |
| Modifier and Type | Method and Description |
|---|---|
private org.apache.zookeeper.ZooKeeper |
client() |
void |
close() |
(package private) org.apache.zookeeper.ZooKeeper |
createNewZooKeeper() |
private void |
createNodeIfNotExists(java.lang.String node) |
private void |
createNodeIntoFuture(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res) |
(package private) void |
createParentIfNotExists() |
private void |
createWatchForChildren(java.lang.String node) |
private void |
deleteNodeToFuture(java.lang.String name,
java.util.concurrent.CompletableFuture<java.lang.Void> res) |
private java.util.concurrent.CompletableFuture<java.lang.Void> |
deletePartialWatermark(java.lang.String name) |
(package private) void |
disconnect() |
(package private) int |
forceUpdateVersion(java.lang.String path,
int version) |
(package private) static ZKGlobalWatermarkTracker.WatermarkWithUpdate |
fromPayload(byte[] bytes) |
long |
getGlobalWatermark(java.lang.String processName,
long currentWatermark) |
private long |
getMaxAcceptableUpdateAge(java.util.Map<java.lang.String,java.lang.Object> cfg) |
java.lang.String |
getName() |
private java.lang.String |
getNodeFromName(java.lang.String name) |
(package private) static java.lang.String |
getNodeName(java.lang.String path) |
private java.util.concurrent.CompletableFuture<java.lang.Integer> |
getNodeVersion(java.lang.String path) |
private void |
getNodeVersionToFuture(java.lang.String path,
java.util.concurrent.CompletableFuture<java.lang.Integer> res) |
(package private) java.lang.String |
getParentNode() |
private int |
getSessionTimeout(java.util.Map<java.lang.String,java.lang.Object> cfg) |
private TimeProvider |
getTimeProvider(java.util.Map<java.lang.String,java.lang.Object> cfg) |
private java.lang.String |
getTrackerName(java.util.Map<java.lang.String,java.lang.Object> cfg) |
(package private) org.apache.zookeeper.Watcher |
getWatcher(java.util.concurrent.CountDownLatch connectLatch) |
private java.net.URI |
getZkUri(java.util.Map<java.lang.String,java.lang.Object> cfg) |
private void |
handleBadVersion(java.lang.String path,
java.util.concurrent.CompletableFuture<java.lang.Void> res,
java.lang.Runnable onSuccess) |
private void |
handleConnectionLoss(java.lang.Runnable retry) |
private void |
handleError(java.lang.Throwable err,
java.lang.String logString,
java.util.concurrent.CompletableFuture<java.lang.Void> future) |
private void |
handleNoParentNode(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res) |
private void |
handleWatchOnChildNode(java.lang.String path,
boolean isDelete) |
private void |
handleWatchOnParentNode() |
private void |
init() |
void |
initWatermarks(java.util.Map<java.lang.String,java.lang.Long> initialWatermarks) |
(package private) int |
maybeUpdateVersion(java.lang.String path,
int version) |
private java.util.concurrent.CompletableFuture<java.lang.Void> |
persistPartialWatermark(java.lang.String name,
long watermark) |
private void |
persistPartialWatermarkIntoFuture(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res) |
protected java.lang.Object |
readResolve() |
private void |
setNodeDataToFuture(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res) |
void |
setup(java.util.Map<java.lang.String,java.lang.Object> cfg) |
private int |
setUpdateVersion(java.lang.String path,
int version,
boolean forceOverwrite) |
private int |
setUpdateVersion(java.lang.String path,
int version,
boolean forceOverwrite,
Consumer<java.lang.Integer> oldVersionConsumer) |
(package private) static byte[] |
toPayload(long watermark,
long updateTimestamp) |
java.lang.String |
toString() |
java.util.concurrent.CompletableFuture<java.lang.Void> |
update(java.lang.String processName,
long currentWatermark) |
private void |
updatePartialWatermark(java.lang.String name,
ZKGlobalWatermarkTracker.WatermarkWithUpdate update) |
(package private) int |
updateVersion(java.lang.String path) |
private void |
watchParentNode(org.apache.zookeeper.WatchedEvent watchedEvent) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitfinished, getWatermarkgetCurrentTimeprocessingTimeprivate static final long serialVersionUID
private static final long MAX_WATERMARK
public static final java.lang.String CFG_NAME
public static final java.lang.String ZK_URI
public static final java.lang.String ZK_SESSION_TIMEOUT
public static final java.lang.String CFG_TIME_PROVIDER
public static final java.lang.String CFG_MAX_ACCEPTABLE_UPDATE_AGE_MS
TimeProvider timeProvider
java.lang.String zkConnectString
java.lang.String parentNode
private java.lang.String trackerName
private int sessionTimeout
private long maxAcceptableUpdateMs
private transient volatile org.apache.zookeeper.ZooKeeper client
private transient java.util.Map<java.lang.String,ZKGlobalWatermarkTracker.WatermarkWithUpdate> partialWatermarks
private transient volatile boolean closed
private transient java.util.concurrent.atomic.AtomicLong globalWatermark
private transient volatile org.apache.zookeeper.CreateMode parentCreateMode
private transient volatile boolean parentCreated
transient java.util.Map<java.lang.String,java.lang.Integer> pathToVersion
private void init()
public java.lang.String getName()
getName in interface GlobalWatermarkTrackerpublic void setup(java.util.Map<java.lang.String,java.lang.Object> cfg)
setup in interface GlobalWatermarkTrackerprivate long getMaxAcceptableUpdateAge(java.util.Map<java.lang.String,java.lang.Object> cfg)
private TimeProvider getTimeProvider(java.util.Map<java.lang.String,java.lang.Object> cfg)
@Nonnull private java.lang.String getTrackerName(java.util.Map<java.lang.String,java.lang.Object> cfg)
private int getSessionTimeout(java.util.Map<java.lang.String,java.lang.Object> cfg)
private java.net.URI getZkUri(java.util.Map<java.lang.String,java.lang.Object> cfg)
public void initWatermarks(java.util.Map<java.lang.String,java.lang.Long> initialWatermarks)
initWatermarks in interface GlobalWatermarkTrackerpublic java.util.concurrent.CompletableFuture<java.lang.Void> update(java.lang.String processName,
long currentWatermark)
update in interface GlobalWatermarkTrackerpublic long getGlobalWatermark(@Nullable
java.lang.String processName,
long currentWatermark)
getGlobalWatermark in interface GlobalWatermarkTrackerstatic java.lang.String getNodeName(@Nonnull
java.lang.String path)
public void close()
close in interface java.io.Closeableclose in interface java.lang.AutoCloseablevoid disconnect()
public java.lang.String toString()
toString in class java.lang.Objectprivate java.util.concurrent.CompletableFuture<java.lang.Void> persistPartialWatermark(java.lang.String name,
long watermark)
private void persistPartialWatermarkIntoFuture(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res)
private void handleError(java.lang.Throwable err,
java.lang.String logString,
java.util.concurrent.CompletableFuture<java.lang.Void> future)
private void handleNoParentNode(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res)
private java.util.concurrent.CompletableFuture<java.lang.Void> deletePartialWatermark(java.lang.String name)
private void deleteNodeToFuture(java.lang.String name,
java.util.concurrent.CompletableFuture<java.lang.Void> res)
private java.lang.String getNodeFromName(java.lang.String name)
private void setNodeDataToFuture(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res)
private void createNodeIntoFuture(java.lang.String name,
byte[] bytes,
java.util.concurrent.CompletableFuture<java.lang.Void> res)
private java.util.concurrent.CompletableFuture<java.lang.Integer> getNodeVersion(java.lang.String path)
private void getNodeVersionToFuture(java.lang.String path,
java.util.concurrent.CompletableFuture<java.lang.Integer> res)
private void handleConnectionLoss(java.lang.Runnable retry)
private void handleBadVersion(java.lang.String path,
java.util.concurrent.CompletableFuture<java.lang.Void> res,
java.lang.Runnable onSuccess)
void createParentIfNotExists()
throws java.lang.InterruptedException
java.lang.InterruptedExceptionprivate void createWatchForChildren(java.lang.String node)
throws java.lang.InterruptedException
java.lang.InterruptedExceptionprivate void createNodeIfNotExists(java.lang.String node)
throws java.lang.InterruptedException,
org.apache.zookeeper.KeeperException
java.lang.InterruptedExceptionorg.apache.zookeeper.KeeperExceptionstatic byte[] toPayload(long watermark,
long updateTimestamp)
static ZKGlobalWatermarkTracker.WatermarkWithUpdate fromPayload(byte[] bytes)
java.lang.String getParentNode()
private void updatePartialWatermark(java.lang.String name,
ZKGlobalWatermarkTracker.WatermarkWithUpdate update)
private org.apache.zookeeper.ZooKeeper client()
org.apache.zookeeper.ZooKeeper createNewZooKeeper()
org.apache.zookeeper.Watcher getWatcher(java.util.concurrent.CountDownLatch connectLatch)
private void watchParentNode(org.apache.zookeeper.WatchedEvent watchedEvent)
private void handleWatchOnParentNode()
private void handleWatchOnChildNode(java.lang.String path,
boolean isDelete)
int updateVersion(java.lang.String path)
int maybeUpdateVersion(java.lang.String path,
int version)
int forceUpdateVersion(java.lang.String path,
int version)
private int setUpdateVersion(java.lang.String path,
int version,
boolean forceOverwrite)
private int setUpdateVersion(java.lang.String path,
int version,
boolean forceOverwrite,
Consumer<java.lang.Integer> oldVersionConsumer)
protected java.lang.Object readResolve()
Copyright © 2017–2022. All rights reserved.