Code review comment: Shouldn't we suspend the `mailboxProcessor` here? It was being done before when the future completed.

Code under review:
protected void processInput(MailboxDefaultAction.Controller controller) throws Exception {

        controller.suspendDefaultAction();

        
        
        
        
        sourceThread.setTaskDescription(getName());

        if (operatorChain.isFinishedOnRestore()) {
            LOG.debug(
                    "Legacy source {} skip execution since the task is finished on restore",
                    getTaskNameWithSubtaskAndId());
            sourceThread.getCompletionFuture().complete(null);
        } else {
            sourceThread.start();
        }

        sourceThread
                .getCompletionFuture()
                .whenComplete(
                        (Void ignore, Throwable sourceThreadThrowable) -> {
                            if (isCanceled()
                                    && ExceptionUtils.findThrowable(
                                                    sourceThreadThrowable,
                                                    InterruptedException.class)
                                            .isPresent()) {
                                mailboxProcessor.reportThrowable(
                                        new CancelTaskException(sourceThreadThrowable));
                            } else if (!wasStoppedExternally && sourceThreadThrowable != null) {
                                mailboxProcessor.reportThrowable(sourceThreadThrowable);
                            } else {
                                mailboxProcessor.suspend();
                            }
                        });
    }

Line commented on: sourceThread.getCompletionFuture().complete(null);

Revised code:
protected void processInput(MailboxDefaultAction.Controller controller) throws Exception {

        controller.suspendDefaultAction();

        
        
        
        
        sourceThread.setTaskDescription(getName());

        if (operatorChain.isFinishedOnRestore()) {
            LOG.debug(
                    "Legacy source {} skip execution since the task is finished on restore",
                    getTaskNameWithSubtaskAndId());
            sourceThread.getCompletionFuture().complete(null);
        } else {
            sourceThread.start();
        }

        sourceThread
                .getCompletionFuture()
                .whenComplete(
                        (Void ignore, Throwable sourceThreadThrowable) -> {
                            if (isCanceled()
                                    && ExceptionUtils.findThrowable(
                                                    sourceThreadThrowable,
                                                    InterruptedException.class)
                                            .isPresent()) {
                                mailboxProcessor.reportThrowable(
                                        new CancelTaskException(sourceThreadThrowable));
                            } else if (!wasStoppedExternally && sourceThreadThrowable != null) {
                                mailboxProcessor.reportThrowable(sourceThreadThrowable);
                            } else {
                                mailboxProcessor.suspend();
                            }
                        });
    }