mirror of https://github.com/apache/nifi.git
NIFI-3408 Add exception class when InvokeHTTP fails
This commit is contained in:
parent
31b943d2c1
commit
3d3faada5c
|
@ -104,7 +104,8 @@ import org.joda.time.format.DateTimeFormatter;
|
||||||
@WritesAttribute(attribute = "invokehttp.request.url", description = "The request URL"),
|
@WritesAttribute(attribute = "invokehttp.request.url", description = "The request URL"),
|
||||||
@WritesAttribute(attribute = "invokehttp.tx.id", description = "The transaction ID that is returned after reading the response"),
|
@WritesAttribute(attribute = "invokehttp.tx.id", description = "The transaction ID that is returned after reading the response"),
|
||||||
@WritesAttribute(attribute = "invokehttp.remote.dn", description = "The DN of the remote server"),
|
@WritesAttribute(attribute = "invokehttp.remote.dn", description = "The DN of the remote server"),
|
||||||
@WritesAttribute(attribute = "invokehttp.java.exception", description = "The Java exception raised when the processor fails"),
|
@WritesAttribute(attribute = "invokehttp.java.exception.class", description = "The Java exception class raised when the processor fails"),
|
||||||
|
@WritesAttribute(attribute = "invokehttp.java.exception.message", description = "The Java exception message raised when the processor fails"),
|
||||||
@WritesAttribute(attribute = "user-defined", description = "If the 'Put Response Body In Attribute' property is set then whatever it is set to "
|
@WritesAttribute(attribute = "user-defined", description = "If the 'Put Response Body In Attribute' property is set then whatever it is set to "
|
||||||
+ "will become the attribute key and the value would be the body of the HTTP response.")})
|
+ "will become the attribute key and the value would be the body of the HTTP response.")})
|
||||||
@DynamicProperty(name = "Header Name", value = "Attribute Expression Language", supportsExpressionLanguage = true, description = "Send request header "
|
@DynamicProperty(name = "Header Name", value = "Attribute Expression Language", supportsExpressionLanguage = true, description = "Send request header "
|
||||||
|
@ -119,7 +120,8 @@ public final class InvokeHTTP extends AbstractProcessor {
|
||||||
public final static String REQUEST_URL = "invokehttp.request.url";
|
public final static String REQUEST_URL = "invokehttp.request.url";
|
||||||
public final static String TRANSACTION_ID = "invokehttp.tx.id";
|
public final static String TRANSACTION_ID = "invokehttp.tx.id";
|
||||||
public final static String REMOTE_DN = "invokehttp.remote.dn";
|
public final static String REMOTE_DN = "invokehttp.remote.dn";
|
||||||
public final static String EXCEPTION_CLASS = "invokehttp.java.exception";
|
public final static String EXCEPTION_CLASS = "invokehttp.java.exception.class";
|
||||||
|
public final static String EXCEPTION_MESSAGE = "invokehttp.java.exception.message";
|
||||||
|
|
||||||
|
|
||||||
public static final String DEFAULT_CONTENT_TYPE = "application/octet-stream";
|
public static final String DEFAULT_CONTENT_TYPE = "application/octet-stream";
|
||||||
|
@ -129,7 +131,8 @@ public final class InvokeHTTP extends AbstractProcessor {
|
||||||
// This set includes our strings defined above as well as some standard flowfile
|
// This set includes our strings defined above as well as some standard flowfile
|
||||||
// attributes.
|
// attributes.
|
||||||
public static final Set<String> IGNORED_ATTRIBUTES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
|
public static final Set<String> IGNORED_ATTRIBUTES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
|
||||||
STATUS_CODE, STATUS_MESSAGE, RESPONSE_BODY, REQUEST_URL, TRANSACTION_ID, REMOTE_DN, EXCEPTION_CLASS,
|
STATUS_CODE, STATUS_MESSAGE, RESPONSE_BODY, REQUEST_URL, TRANSACTION_ID, REMOTE_DN,
|
||||||
|
EXCEPTION_CLASS, EXCEPTION_MESSAGE,
|
||||||
"uuid", "filename", "path")));
|
"uuid", "filename", "path")));
|
||||||
|
|
||||||
// properties
|
// properties
|
||||||
|
@ -756,9 +759,8 @@ public final class InvokeHTTP extends AbstractProcessor {
|
||||||
if (requestFlowFile != null) {
|
if (requestFlowFile != null) {
|
||||||
logger.error("Routing to {} due to exception: {}", new Object[]{REL_FAILURE.getName(), e}, e);
|
logger.error("Routing to {} due to exception: {}", new Object[]{REL_FAILURE.getName(), e}, e);
|
||||||
requestFlowFile = session.penalize(requestFlowFile);
|
requestFlowFile = session.penalize(requestFlowFile);
|
||||||
String attributeKey = EXCEPTION_CLASS;
|
requestFlowFile = session.putAttribute(requestFlowFile, EXCEPTION_CLASS, e.getClass().getName());
|
||||||
String attributeValue = e.getClass().getName();
|
requestFlowFile = session.putAttribute(requestFlowFile, EXCEPTION_MESSAGE, e.getMessage());
|
||||||
requestFlowFile = session.putAttribute(requestFlowFile, attributeKey, attributeValue);
|
|
||||||
// transfer original to failure
|
// transfer original to failure
|
||||||
session.transfer(requestFlowFile, REL_FAILURE);
|
session.transfer(requestFlowFile, REL_FAILURE);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue