Repository: apache/flink
File: flink-connectors/flink-connector-base/src/main/java/org/apache/flink/connector/base/source/reader/SingleThreadMultiplexSourceReaderBase.java (Java)

Code before:
 */
@PublicEvolving
public abstract class SingleThreadMultiplexSourceReaderBase<
                E, T, SplitT extends SourceSplit, SplitStateT>
        extends SourceReaderBase<E, T, SplitT, SplitStateT> {

    /**
     * The primary constructor for the source reader.
     *
     * <p>The reader will use a handover queue sized as configured via {@link
     * SourceReaderOptions#ELEMENT_QUEUE_CAPACITY}.
     */
    public SingleThreadMultiplexSourceReaderBase(
            Supplier<SplitReader<E, SplitT>> splitReaderSupplier,
            RecordEmitter<E, T, SplitStateT> recordEmitter,
            Configuration config,
            SourceReaderContext context) {
        super(
                new SingleThreadFetcherManager<>(splitReaderSupplier, config),
                recordEmitter,
                config,
                context);
    }

    /**
     * The primary constructor for the source reader.
     *
     * <p>The reader will use a handover queue sized as configured via {@link
     * SourceReaderOptions#ELEMENT_QUEUE_CAPACITY}.
     */
    public SingleThreadMultiplexSourceReaderBase(
            Supplier<SplitReader<E, SplitT>> splitReaderSupplier,
            RecordEmitter<E, T, SplitStateT> recordEmitter,
            Configuration config,
            SourceReaderContext context,
            @Nullable RateLimiterStrategy<SplitT> rateLimiterStrategy) {
        super(
                new SingleThreadFetcherManager<>(splitReaderSupplier, config),
                recordEmitter,
                null,
                config,
                context,
                rateLimiterStrategy);
    }

    /**
     * This constructor behaves like {@link #SingleThreadMultiplexSourceReaderBase(Supplier,
     * RecordEmitter, Configuration, SourceReaderContext)}, but accepts a specific {@link
     * FutureCompletingBlockingQueue} and {@link SingleThreadFetcherManager}.
     */
    public SingleThreadMultiplexSourceReaderBase(

Review comment (suggestion):
`primary constructor` should only have one, but current we have two. And I think you need to update the method java notes.

Code after:
@PublicEvolving
public abstract class SingleThreadMultiplexSourceReaderBase<
                E, T, SplitT extends SourceSplit, SplitStateT>
        extends SourceReaderBase<E, T, SplitT, SplitStateT> {

    /**
     * The primary constructor for the source reader.
     *
     * <p>The reader will use a handover queue sized as configured via {@link
     * SourceReaderOptions#ELEMENT_QUEUE_CAPACITY}.
     */
    public SingleThreadMultiplexSourceReaderBase(
            Supplier<SplitReader<E, SplitT>> splitReaderSupplier,
            RecordEmitter<E, T, SplitStateT> recordEmitter,
            Configuration config,
            SourceReaderContext context) {
        super(
                new SingleThreadFetcherManager<>(splitReaderSupplier, config),
                recordEmitter,
                config,
                context);
    }

    /**
     * This constructor behaves like {@link #SingleThreadMultiplexSourceReaderBase(Supplier,
     * RecordEmitter, Configuration, SourceReaderContext)}, but accepts a specific {@link
     * RateLimiterStrategy}.
     */
    public SingleThreadMultiplexSourceReaderBase(
            Supplier<SplitReader<E, SplitT>> splitReaderSupplier,
            RecordEmitter<E, T, SplitStateT> recordEmitter,
            Configuration config,
            SourceReaderContext context,
            @Nullable RateLimiterStrategy<SplitT> rateLimiterStrategy) {
        super(
                new SingleThreadFetcherManager<>(splitReaderSupplier, config),
                recordEmitter,
                null,
                config,
                context,
                rateLimiterStrategy);
    }

    /**
     * This constructor behaves like {@link #SingleThreadMultiplexSourceReaderBase(Supplier,
     * RecordEmitter, Configuration, SourceReaderContext)}, but accepts a specific {@link
     * SingleThreadFetcherManager}.
     */
    public SingleThreadMultiplexSourceReaderBase(
            SingleThreadFetcherManager<E, SplitT> splitFetcherManager,
            RecordEmitter<E, T, SplitStateT> recordEmitter,