@JsonCreator public Split( @JsonProperty("connectorId") ConnectorId connectorId, @JsonProperty("transactionHandle") ConnectorTransactionHandle transactionHandle, @JsonProperty("connectorSplit") ConnectorSplit connectorSplit, @JsonProperty("lifespan") Lifespan lifespan) { this.connectorId = requireNonNull(connectorId, "connectorId is null"); this.transactionHandle = requireNonNull(transactionHandle, "transactionHandle is null"); this.connectorSplit = requireNonNull(connectorSplit, "connectorSplit is null"); this.lifespan = requireNonNull(lifespan, "lifespan is null"); }
@JsonCreator public static Lifespan jsonCreator(String value) { if (value.equals("TaskWide")) { return Lifespan.taskWide(); } checkArgument(value.startsWith("Group")); return Lifespan.driverGroup(parseInt(value.substring("Group".length()))); }
public TaskWideInternalJoinBridgeDataManager(Function<Lifespan, T> lookupSourceFactoryProvider, int probeFactoryCount, int outerFactoryCount) { joinBridge = lookupSourceFactoryProvider.apply(Lifespan.taskWide()); joinLifecycle = new JoinLifecycle(joinBridge, probeFactoryCount, outerFactoryCount); }
@Override public void probeOperatorFactoryClosed(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); joinLifecycle.releaseForProbe(); }
@Override public void outerOperatorFactoryClosed(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); joinLifecycle.releaseForOuter(); }
@Override public void probeOperatorCreated(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); joinLifecycle.retainForProbe(); }
@Override public void outerOperatorFactoryClosed(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan), "join bridge is not partitioned"); joinLifecycle.releaseForOuter(); }
@Override public void outerOperatorClosed(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan), "join bridge is not partitioned"); joinLifecycle.releaseForOuter(); } }
public SharedInternalJoinBridgeDataManager(Function<Lifespan, T> lookupSourceFactoryProvider, int probeFactoryCount, int outerFactoryCount) { this.taskWideJoinBridge = lookupSourceFactoryProvider.apply(Lifespan.taskWide()); this.joinLifecycle = new JoinLifecycle(taskWideJoinBridge, probeFactoryCount, outerFactoryCount); }
@Override public T getJoinBridge(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); return joinBridge; }
@Override public void outerOperatorCreated(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.retainForOuter(); }
@Override public void probeOperatorCreated(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.retainForProbe(); }
@Override public void probeOperatorClosed(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.releaseForProbe(); }
@Override public void outerOperatorFactoryClosed(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.releaseForOuter(); }
@Override public void outerOperatorClosed(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.releaseForOuter(); }
@Override public ListenableFuture<OuterPositionIterator> getOuterPositionsFuture(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan), "join bridge is not partitioned"); return transform(joinLifecycle.whenBuildAndProbeFinishes(), ignored -> taskWideJoinBridge.getOuterPositionIterator(), directExecutor()); }
private JoinBridgeAndLifecycle<T> data(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); return joinBridgeMap.computeIfAbsent(lifespan, span -> { T joinBridge = joinBridgeProvider.apply(span); return new JoinBridgeAndLifecycle<>(joinBridge, new JoinLifecycle(joinBridge, probeFactoryCount, outerFactoryCount)); }); }
private static ListenableFuture<NextBatchResult> getNextBatch(SplitSource splitSource, int maxSize) { ListenableFuture<SplitBatch> future = splitSource.getNextBatch(NOT_PARTITIONED, Lifespan.taskWide(), maxSize); return Futures.transform(future, NextBatchResult::new, directExecutor()); }
public void setNoNewLookups() { if (!grouped) { get(Lifespan.taskWide()).setNoNewLookups(); } }
public synchronized BuildState get(Lifespan lifespan) { if (grouped) { return buildStatesMap.computeIfAbsent(lifespan, ignored -> new BuildState()); } else { return buildStatesMap.computeIfAbsent(Lifespan.taskWide(), ignored -> new BuildState()); } }