Github user mattyb149 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/2138#discussion_r204501609
--- Diff:
nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/processors/hive/AbstractHiveQLProcessor.java
---
@@ -75,6 +81,38 @@
.addValidator(StandardValidators.CHARACTER_SET_VALIDATOR)
.build();
+ public static final PropertyDescriptor QUERY_TIMEOUT = new
PropertyDescriptor.Builder()
+ .name("hive-query-timeout")
+ .displayName("Query timeout")
+ .description("Sets the number of seconds the driver will wait
for a query to execute. "
+ + "A value of 0 means no timeout. NOTE: Non-zero
values may not be supported by the driver.")
+ .defaultValue("0")
+ .required(true)
+ .addValidator(StandardValidators.INTEGER_VALIDATOR)
+ .expressionLanguageSupported(true)
+ .build();
+
+ @Override
+ protected Collection<ValidationResult>
customValidate(ValidationContext validationContext) {
+ final List<ValidationResult> problems = new ArrayList<>(1);
+
+ if(validationContext.getProperty(QUERY_TIMEOUT).isSet()
+ &&
!validationContext.getProperty(QUERY_TIMEOUT).isExpressionLanguagePresent()
+ &&
validationContext.getProperty(QUERY_TIMEOUT).asInteger() != 0) {
+ try(HiveStatement stmt = new HiveStatement(null, null, null)) {
+ stmt.setQueryTimeout(0);
--- End diff --
True (at least for older Apache Hive drivers), but it is a tad confusing to
see the if statement check for non-zero then test with zero.
Also, I can't find the discussion but I thought we were going to do similar
error handling in the setTimeout() method below as we do in the customValidate,
for when Expression Language is present but the driver doesn't support non-zero
values. IIRC it would allow a query timeout of zero if the driver didn't
support it, but if the user set it to a positive value and the driver didn't
support it, it would throw an error (akin to being invalid if found in
customValidate())?
---