Satish Subhashrao Saley created PIG-5355:
--------------------------------------------

             Summary: Negative progress report by HBaseTableRecordReader
                 Key: PIG-5355
                 URL: https://issues.apache.org/jira/browse/PIG-5355
             Project: Pig
          Issue Type: Bug
            Reporter: Satish Subhashrao Saley


The logic for padding the current row does not consider the updated padded row 
during the comparison. It ends up with different length then expected. This 
results in negative value for {{processed}}.

{code}
            byte[] lastPadded = currRow_;
            if (currRow_.length < endRow_.length) {
                lastPadded = Bytes.padTail(currRow_, endRow_.length - 
currRow_.length);
            }
            if (currRow_.length < startRow_.length) {
                lastPadded = Bytes.padTail(currRow_, startRow_.length - 
currRow_.length);
            }

            byte [] prependHeader = {1, 0};
            BigInteger bigLastRow = new BigInteger(Bytes.add(prependHeader, 
lastPadded));
            if (bigLastRow.compareTo(bigEnd_) > 0) {
                return progressSoFar_;
            }
            BigDecimal processed = new 
BigDecimal(bigLastRow.subtract(bigStart_));
{code}
The fix is to use {{lastPadded}} in the second {{if}} comparison and 
{{Bytes.padTail}} call inside that {{if}}
 

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to