The row buffering strategy an input port uses, i.e. whether the input port only buffers a smaller amount of rows to minimize the time the worker is stalled for input, or allows full buffering of as much as all rows. The latter is most commonly used by input ports on workers that could otherwise dead-lock (typically having multiple inter-dependent inputs, e.g. a worker like MergeSortedTransform<TInputOutput>).
Note that error output ports will always have
since this simplifies outputting error rows. To avoid running out of memory in cases
where a very large number of error rows might be produced, limit the number of
allowed error rows (which is also the default) using
public enum PortBufferingMode
The actual mode is picked when the worker starts - this is the default. The selected mode depends on the number of inputs the worker has, and whether the upstream port is an error output port or not, see Limited and Full.
The input port potentially buffers many or even all upstream rows, if the input port is reading rows slowly or initially not at all. This is the default mode for multi input workers, as well as for input ports where the upstream port is an error output port. Full buffering can consume a large amount of memory, and should only be used on ports that actually need it. Used by e.g. MergeSortedTransform<TInputOutput> input ports.
The input port buffers a smaller amount of rows (currently up to four times the BufferCapacity) to minimize the time the worker is stalled for input. This is the default mode for single input workers where the upstream port is not an error output port. Used by e.g. Input.