public class RollbackOnFailure extends Object
RollbackOnFailure can be used as a function context for process patterns such as Put to provide a configurable error handling.
RollbackOnFailure can add following characteristics to a processor:
There are two approaches to apply RollbackOnFailure. One is using ExceptionHandler.adjustError(BiFunction),
and the other is implementing processor onTrigger using process patterns such as Put#adjustRoute(AdjustRoute).
It's also possible to use both approaches. ExceptionHandler can apply when an Exception is thrown immediately, while AdjustRoute respond later but requires less code.
| Modifier and Type | Field and Description |
|---|---|
private boolean |
discontinue |
private int |
processedCount |
static PropertyDescriptor |
ROLLBACK_ON_FAILURE |
private boolean |
rollbackOnFailure |
private boolean |
transactional |
| Constructor and Description |
|---|
RollbackOnFailure(boolean rollbackOnFailure,
boolean transactional)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
canRollback() |
static <FCT extends RollbackOnFailure> |
createAdjustError(ComponentLog logger)
Create a function to use with
ExceptionHandler that adjust error type based on functional context. |
static <FCT extends RollbackOnFailure> |
createAdjustRoute(Relationship... failureRelationships)
Create an
PartialFunctions.AdjustRoute function to use with process pattern such as Put that adjust routed FlowFiles based on context. |
static <FCT extends RollbackOnFailure,I> |
createOnError(ExceptionHandler.OnError<FCT,I> onError) |
static PropertyDescriptor |
createRollbackOnFailureProperty(String additionalDescription) |
void |
discontinue() |
int |
getProcessedCount() |
boolean |
isRollbackOnFailure() |
boolean |
isTransactional() |
static <FCT extends RollbackOnFailure> |
onTrigger(ProcessContext context,
ProcessSessionFactory sessionFactory,
FCT functionContext,
ComponentLog logger,
PartialFunctions.OnTrigger onTrigger) |
int |
proceed() |
boolean |
shouldDiscontinue() |
private final boolean rollbackOnFailure
private final boolean transactional
private boolean discontinue
private int processedCount
public static final PropertyDescriptor ROLLBACK_ON_FAILURE
public RollbackOnFailure(boolean rollbackOnFailure,
boolean transactional)
rollbackOnFailure - Should be set by user via processor configuration.transactional - Specify whether a processor is transactional.
If not, it is important to call proceed() after successful execution of processors task,
that indicates processor made an operation that can not be undone.public static PropertyDescriptor createRollbackOnFailureProperty(String additionalDescription)
public static <FCT extends RollbackOnFailure> BiFunction<FCT,ErrorTypes,ErrorTypes.Result> createAdjustError(ComponentLog logger)
ExceptionHandler that adjust error type based on functional context.public static <FCT extends RollbackOnFailure> PartialFunctions.AdjustRoute<FCT> createAdjustRoute(Relationship... failureRelationships)
PartialFunctions.AdjustRoute function to use with process pattern such as Put that adjust routed FlowFiles based on context.
This function works as a safety net by covering cases that Processor implementation did not use ExceptionHandler and transfer FlowFiles
without considering RollbackOnFailure context.public static <FCT extends RollbackOnFailure,I> ExceptionHandler.OnError<FCT,I> createOnError(ExceptionHandler.OnError<FCT,I> onError)
public static <FCT extends RollbackOnFailure> void onTrigger(ProcessContext context, ProcessSessionFactory sessionFactory, FCT functionContext, ComponentLog logger, PartialFunctions.OnTrigger onTrigger) throws ProcessException
ProcessExceptionpublic int proceed()
public int getProcessedCount()
public boolean isRollbackOnFailure()
public boolean isTransactional()
public boolean canRollback()
public boolean shouldDiscontinue()
public void discontinue()
Copyright © 2019 Apache NiFi Project. All rights reserved.