<?php

declare(strict_types=1);

namespace Drupal\flowdrop\Exception;

/**
 * A node-processing failure the engine may retry before giving up.
 *
 * Convenience exception for the common transient case: a node processor hit
 * an error an immediate re-run could clear (an optimistic-concurrency / save
 * version conflict, a transient lock or race) and wants the orchestrator to
 * retry it per the node's retry policy. Retry is immediate with no backoff,
 * so it is a poor fit for failures that only clear after a wait — see
 * {@see RetryableExceptionInterface} for when to route the node's error port
 * to a Timer/Delay node instead. Because it extends
 * {@see NodeProcessingException} it is still a \RuntimeException and is
 * caught by the orchestrator's generic failure handler; the
 * {@see RetryableExceptionInterface} marker is what flips that handler from
 * "fail" to "retry".
 *
 * Throw the non-retryable parent {@see NodeProcessingException} instead for
 * permanent failures, so the engine routes them to the error path rather
 * than wasting retry attempts.
 *
 * @api
 */
class RetryableNodeProcessingException extends NodeProcessingException implements RetryableExceptionInterface {

}
