Skip to content

Error Codes ​

NPipeline error codes follow the pattern NPxxxx where the first two digits indicate the category.

NP01xx - Core Pipeline Errors ​

CodeNameDescription
NP0101PipelineRequiresAtLeastOneNodeA pipeline must have at least one node. Add at least one source, transform, or sink.
NP0102NodeMissingInputConnectionA non-source node has no input connection. Connect an upstream node to it.
NP0103CyclicDependencyDetectedThe pipeline graph contains a cycle. NPipeline requires a directed acyclic graph (DAG). The message names the nodes that could not be ordered and traces one cycle through them.
NP0104NodeAlreadyAddedA node with this ID has already been added to the builder. Use a unique ID.
NP0105NodeNameNotUniqueA node with this name already exists. Choose a different name.

NP02xx - Type System Errors ​

CodeNameDescription
NP0201TypeMismatchInConnectionOutput type of the source node doesn't match input type of the target node.
NP0202InputDataStreamWrongTypeThe input data stream is not of the expected type. Check node type parameters.
NP0203CannotRegisterMappingsAfterExecutionMapping registrations must happen before pipeline execution begins.
NP0204RecordTypeHasNoPublicConstructorThe target record type has no public constructors. Add a public constructor.
NP0205InvalidMemberAccessExpressionThe member selector expression is invalid. Use a simple property accessor.
NP0206MemberNotWritableThe target member is read-only. Use a writable property or constructor parameter.
NP0207SetterCreationFailedFailed to create a setter for the specified member via reflection.
NP0208ValueTupleConstructorNotFoundCould not find the expected ValueTuple constructor.
NP0210CannotConcatenateStreamsTypeMismatchCannot concatenate data streams of different types.
NP0211NodeOutputTypeMismatchA node produced items whose type does not match its declared output type, and no conversion applied.
NP0212OutputAdaptationUnavailableA node's output needs converting to its declared type but no converter exists for that node kind.
NP0213InputStreamContractMismatchA node received input items of a type it cannot consume. Check the connection's source node.
NP0214RouteNodeMissingOutputTypeA route node has no output item type. Add it with PipelineBuilder.AddRoute<T>(), or set OutputType on a custom route definition.

NP03xx - Node Execution Errors ​

CodeNameDescription
NP0301NodeKindNotSupportedThe node kind is not supported or its execution delegate was not bound.
NP0302OutputNotFoundForSourceNodeCould not locate the output data stream for a source node.
NP0303PipelineExecutionFailedAtNodeExecution failed at a specific node. Check the NodeId in the exception.
NP0304PipelineExecutionFailedThe pipeline execution failed. Check the inner exception for details.
NP0305RetiredNever raised. An item that runs out of retries raises NP0311. Not reused.
NP0306RetiredNever raised. A resilience policy that throws fails the node with its own exception. Not reused.
NP0307LineageCardinalityMismatchThe number of lineage inputs doesn't match the number of outputs. Internal framework error.
NP0308FailedToExtractItemsFromInMemoryDataStreamCould not extract items from an InMemoryDataStream. Internal framework error.
NP0310RetiredNo longer used. It belonged to CircuitBreakerTrippedException, which was never thrown and has been removed. An open breaker raises CircuitBreakerOpenException.
NP0311RetryLimitExhaustedRetryExhaustedException: an item, a node retry, or a node restart ran out of attempts. AttemptCount is the number of attempts, and the inner exception is the last failure.

NP04xx - Configuration and Setup Errors ​

CodeNameDescription
NP0401ExecutionStrategyCannotBeSetForNonTransformNodeExecution strategies can only be applied to transform nodes.
NP0402NodeNotFoundInBuilderThe referenced node was not found in the pipeline builder.
NP0403RetiredBelonged to WithResilience(NodeHandle), which node restart options replaced. Not reused.
NP0404InvalidErrorHandlerTypeThe error handler type doesn't implement the required interface.
NP0405PreConfiguredInstanceAlreadyAddedA pre-configured instance for this node has already been registered.
NP0406PreConfiguredInstanceNodeNotFoundThe node for the pre-configured instance was not found in the builder.
NP0407MergeStrategyNotSupportedThe specified merge strategy is not supported.
NP0408NodeActivationFailedCould not instantiate the node type. Check constructors and DI registrations.
NP0411JoinNodeRequiresTwoKeySelectorAttributesJoin nodes require exactly two [KeySelector] attribute declarations.
NP0412UnbatchingNodeNotSupportedUnbatchingNode cannot be executed directly; use the unbatching execution strategy.
NP0413BatchingNodeNotSupportedBatchingNode doesn't support per-item transformation; use the batching execution strategy.
NP0414CustomMergeNodeMissingInterfaceThe custom merge node is missing the required interface implementation.
NP0415RetiredNever raised. A dead-lettered item with no dead-letter sink raises NP0424. Not reused.
NP0416LineageAdapterMissingInternal: lineage adapter not configured.
NP0417SourceNodeLineageUnwrapMissingInternal: source node lineage unwrap delegate not configured.
NP0418SinkNodeLineageUnwrapMissingInternal: sink node lineage unwrap delegate not configured.
NP0419MissingTypeMetadataInternal: node is missing type metadata.
NP0420TimeWindowAssignerCannotBeNullThe time window assigner cannot be null for time-windowed operations.
NP0421StreamTransformNodeRequiresStreamStrategyA stream transform node was configured with a strategy that cannot execute streams.
NP0422NodeCannotSupplyExecutionStrategyA node scheduled as a transform does not implement the transform interface.
NP0423NodeIdNotResolvableA node asked the context for its own id, and no single id matched. Either no pipeline run owns the context (the node is being called directly, as in a unit test), or the same instance is wired into the graph under more than one id. Use TryGetNodeId where a node can run outside a pipeline, or give each graph position its own instance.
NP0424DeadLetterSinkNotConfiguredAn item was dead-lettered, but the pipeline has no dead-letter sink. A transform with OnItemFailure = ItemFailureAction.DeadLetter raises it before any node starts; a custom resilience policy that returns DeadLetter raises it when the item fails. Add a sink with AddDeadLetterSink, or use Skip or Fail.
NP0425NodeRestartRequiresResumableStrategyA transform has NodeRestart.MaxRestarts above zero, but its execution strategy does not implement IResumableExecutionStrategy. Use a resumable strategy, or set MaxRestarts to 0 for that node.
NP0426DuplicateJoinKeyA one-to-one keyed join dead-letters an item because its key was a duplicate: the key had already matched, or the same input already had an item waiting for it. The join does not fail; the item goes to the dead-letter sink as a DuplicateJoinKeyException. Use Drop or EmitAsUnmatched if duplicates are expected.
NP0427JoinOptionsRequireOneToOneA keyed join sets DuplicateKeyPolicy or MaxMatchedKeys, which apply only to one-to-one joins, while Cardinality is ManyToMany. Set Cardinality = JoinCardinality.OneToOne, or remove the options.

NP05xx - Resource Management Errors ​

CodeNameDescription
NP0501ContextDisposalFailedOne or more errors occurred while disposing pipeline context resources.
NP0502DeadLetterQueueCapacityExceededBoundedInMemoryDeadLetterSink is full, and it throws InvalidOperationException instead of growing. Raise its capacity, or use a sink that writes somewhere durable.
NP0503RetiredBelonged to the node restart materialization buffer, which the replay window replaced. NodeRestart.MaxReplayWindow applies backpressure instead of failing. Not reused.
NP0504BatchSizeMustBeGreaterThanZeroBatch size must be a positive integer.

Next Steps ​

Released under the MIT License.