Java Code Examples for org.apache.hadoop.hbase.client.Get.getMaxVersions()

The following are Jave code examples for showing how to use getMaxVersions() of the org.apache.hadoop.hbase.client.Get class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
+ Save this method
Example 1
Project: ditb   File: RemoteHTable.java   View Source Code Vote up 6 votes
@Override
public Result[] get(List<Get> gets) throws IOException {
  byte[][] rows = new byte[gets.size()][];
  int maxVersions = 1;
  int count = 0;

  for(Get g:gets) {

    if ( count == 0 ) {
      maxVersions = g.getMaxVersions();
    } else if (g.getMaxVersions() != maxVersions) {
      LOG.warn("MaxVersions on Gets do not match, using the first in the list ("+maxVersions+")");
    }

    if (g.getFilter() != null) {
      LOG.warn("filters not supported on gets");
    }

    rows[count] = g.getRow();
    count ++;
  }

  String spec = buildMultiRowSpec(rows, maxVersions);

  return getResults(spec);
}
 
Example 2
Project: ditb   File: VisibilityController.java   View Source Code Vote up 4 votes
@Override
public void prePrepareTimeStampForDeleteVersion(
    ObserverContext<RegionCoprocessorEnvironment> ctx, Mutation delete, Cell cell,
    byte[] byteNow, Get get) throws IOException {
  // Nothing to do if we are not filtering by visibility
  if (!authorizationEnabled) {
    return;
  }

  CellVisibility cellVisibility = null;
  try {
    cellVisibility = delete.getCellVisibility();
  } catch (DeserializationException de) {
    throw new IOException("Invalid cell visibility specified " + delete, de);
  }
  // The check for checkForReservedVisibilityTagPresence happens in preBatchMutate happens.
  // It happens for every mutation and that would be enough.
  List<Tag> visibilityTags = new ArrayList<Tag>();
  if (cellVisibility != null) {
    String labelsExp = cellVisibility.getExpression();
    try {
      visibilityTags = this.visibilityLabelService.createVisibilityExpTags(labelsExp, false,
          false);
    } catch (InvalidLabelException e) {
      throw new IOException("Invalid cell visibility specified " + labelsExp, e);
    }
  }
  get.setFilter(new DeleteVersionVisibilityExpressionFilter(visibilityTags,
      VisibilityConstants.SORTED_ORDINAL_SERIALIZATION_FORMAT));
  List<Cell> result = ctx.getEnvironment().getRegion().get(get, false);

  if (result.size() < get.getMaxVersions()) {
    // Nothing to delete
    CellUtil.updateLatestStamp(cell, Long.MIN_VALUE);
    return;
  }
  if (result.size() > get.getMaxVersions()) {
    throw new RuntimeException("Unexpected size: " + result.size()
        + ". Results more than the max versions obtained.");
  }
  Cell getCell = result.get(get.getMaxVersions() - 1);
  CellUtil.setTimestamp(cell, getCell.getTimestamp());

  // We are bypassing here because in the HRegion.updateDeleteLatestVersionTimeStamp we would
  // update with the current timestamp after again doing a get. As the hook as already determined
  // the needed timestamp we need to bypass here.
  // TODO : See if HRegion.updateDeleteLatestVersionTimeStamp() could be
  // called only if the hook is not called.
  ctx.bypass();
}