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())?


---

Reply via email to