increment(Increment, Integer, boolean) might fail
-------------------------------------------------

                 Key: HBASE-3398
                 URL: https://issues.apache.org/jira/browse/HBASE-3398
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.90.0
            Reporter: Prakash Khemani
            Assignee: Jonathan Gray


In org.apache.hadoop.hbase.regionserver.HRegion.increment(Increment, Integer, 
boolean) the following loop assumes that the result from geLastIncrement() has 
a single entry for a given <family, qualifier>. But that is not necessarily 
true. getLastIncrement() does a union of all entries found in each of the store 
files ... and multiple versions of the same key are quite possible.

          List<KeyValue> results = getLastIncrement(get);

          // Iterate the input columns and update existing values if they were
          // found, otherwise add new column initialized to the increment amount
          int idx = 0;
          for (Map.Entry<byte [], Long> column : family.getValue().entrySet()) {
            long amount = column.getValue();
            if (idx < results.size() &&
                results.get(idx).matchingQualifier(column.getKey())) {
              amount += Bytes.toLong(results.get(idx).getValue());
              idx++;
            }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to