@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 T getJoinBridge(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); return joinBridge; }
@Override public void outerOperatorCreated(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); joinLifecycle.retainForOuter(); }
@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(); } }
@Override public void probeOperatorClosed(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); joinLifecycle.releaseForProbe(); }
@Override public void outerOperatorClosed(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); joinLifecycle.releaseForOuter(); } }
@Override public void probeOperatorCreated(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan), "build operator should not produce or destroy probes"); joinLifecycle.retainForProbe(); }
@Override public void outerOperatorCreated(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan), "join bridge is not partitioned"); joinLifecycle.retainForOuter(); }
@Override public void probeOperatorClosed(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.releaseForProbe(); }
@Override public void outerOperatorCreated(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.retainForOuter(); }
@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 void probeOperatorCreated(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.retainForProbe(); }
@Override public void probeOperatorFactoryClosed(Lifespan lifespan) { checkArgument(!Lifespan.taskWide().equals(lifespan)); data(lifespan).joinLifecycle.releaseForProbe(); }
@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()); }
@Override public ListenableFuture<OuterPositionIterator> getOuterPositionsFuture(Lifespan lifespan) { checkArgument(Lifespan.taskWide().equals(lifespan)); return transform(joinLifecycle.whenBuildAndProbeFinishes(), ignored -> joinBridge.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)); }); }