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

The following examples show how to use org.apache.hadoop.hbase.client.Get#getMaxVersions() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: RemoteHTable.java    From hbase with Apache License 2.0 5 votes vote down vote up
@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
Source File: VisibilityController.java    From hbase with Apache License 2.0 4 votes vote down vote up
@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<>();
  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
    PrivateCellUtil.updateLatestStamp(cell, byteNow);
    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);
  PrivateCellUtil.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();
}