java.lang.Object
org.elasticsearch.core.AbstractRefCounted
org.elasticsearch.compute.operator.SideChannel
All Implemented Interfaces:
Closeable, AutoCloseable, RefCounted, Releasable
Direct Known Subclasses:
SharedMinCompetitive, SharedNumericThreshold

public abstract class SideChannel extends AbstractRefCounted implements Releasable
A "side channel" for the Operators running on one node. These nodes must run on the same JVM, but will not run in the same Driver.

SideChannels are RefCounted so they can release resources when the last Operator referencing them is Operator.close()d.

SideChannels are configured during physical planning. And the physical plan nodes are not RefCounted. So we can't make the actual SideChannel implementations during planning. Instead, we configure a supplier that builds the SideChannel when building the first Operator instance.

This implements Releasable as a convenience that delegates to AbstractRefCounted.decRef().