Refine search
private static Quotas getQuotas(final Connection connection, final byte[] rowKey, final byte[] qualifier) throws IOException { Get get = new Get(rowKey); get.addColumn(QUOTA_FAMILY_INFO, qualifier); Result result = doGet(connection, get); if (result.isEmpty()) { return null; } return quotasFromData(result.getValue(QUOTA_FAMILY_INFO, qualifier)); }
@Override public Iterable<Object> get(List<String> keys) { List<Get> gets = new ArrayList<>(); for (String key : keys) { WindowsStore.Entry.nonNullCheckForKey(key); byte[] effectiveKey = effectiveKey(key); gets.add(new Get(effectiveKey)); } Result[] results = null; try { results = htable().get(gets); } catch (IOException e) { throw new RuntimeException(e); } List<Object> values = new ArrayList<>(); for (int i = 0; i < results.length; i++) { Result result = results[i]; if (result.isEmpty()) { LOG.error("Got empty result for key [{}]", keys.get(i)); throw new RuntimeException("Received empty result for key: " + keys.get(i)); } Object resultObject = windowKryoSerializer().deserialize(result.getValue(family, qualifier)); values.add(resultObject); } return values; }
@Override public String[] getRow(Array<String> key) { byte[] encodedKey = encoder.encodeRowKey(key.data); Get get = new Get(encodedKey); try { Result result = table.get(get); if (result.isEmpty()) { return null; } return encoder.decode(new HBaseRow(result.getRow(), result.getFamilyMap(HBaseLookupRowEncoder.CF))); } catch (IOException e) { throw new RuntimeException("error when get row from hBase", e); } }
@Override public Object get(String key) { WindowsStore.Entry.nonNullCheckForKey(key); byte[] effectiveKey = effectiveKey(key); Get get = new Get(effectiveKey); Result result = null; try { result = htable().get(get); } catch (IOException e) { throw new RuntimeException(e); } if (result.isEmpty()) { return null; } return windowKryoSerializer().deserialize(result.getValue(family, qualifier)); }
private void logFailRowAndIncreaseCounter(Context context, Counters counter, Result row) { if (sleepMsBeforeReCompare > 0) { Threads.sleep(sleepMsBeforeReCompare); try { Result sourceResult = sourceTable.get(new Get(row.getRow())); Result replicatedResult = replicatedTable.get(new Get(row.getRow())); Result.compareResults(sourceResult, replicatedResult); if (!sourceResult.isEmpty()) { context.getCounter(Counters.GOODROWS).increment(1); if (verbose) { LOG.info("Good row key (with recompare): " + delimiter + Bytes.toStringBinary(row.getRow()) + delimiter); } } return; } catch (Exception e) { LOG.error("recompare fail after sleep, rowkey=" + delimiter + Bytes.toStringBinary(row.getRow()) + delimiter); } } context.getCounter(counter).increment(1); context.getCounter(Counters.BADROWS).increment(1); LOG.error(counter.toString() + ", rowkey=" + delimiter + Bytes.toStringBinary(row.getRow()) + delimiter); }
private Result internalGetFromHTable(Table table, String path, boolean fetchContent, boolean fetchTimestamp) throws IOException { byte[] rowkey = Bytes.toBytes(path); Get get = new Get(rowkey); if (!fetchContent && !fetchTimestamp) { get.setCheckExistenceOnly(true); } else { if (fetchContent) get.addColumn(B_FAMILY, B_COLUMN); if (fetchTimestamp) get.addColumn(B_FAMILY, B_COLUMN_TS); } Result result = table.get(get); boolean exists = result != null && (!result.isEmpty() || (result.getExists() != null && result.getExists())); return exists ? result : null; }
@Test public void testMultiPut() throws Exception { List<Put> puts = IntStream.range(0, 10) .mapToObj(i -> new Put(ROW).addColumn(FAMILY, Bytes.toBytes(i), VALUE)) .collect(Collectors.toList()); table.put(puts); assertResult(table.get(new Get(ROW)), VALUE); assertObserverHasExecuted(); List<Delete> deletes = IntStream.range(0, 10) .mapToObj(i -> new Delete(ROW).addColumn(FAMILY, Bytes.toBytes(i))) .collect(Collectors.toList()); table.delete(deletes); assertTrue(table.get(new Get(ROW)).isEmpty()); assertObserverHasExecuted(); }
private void wait(byte[] row, Table target, boolean isDeleted) throws Exception { Get get = new Get(row); for (int i = 0; i < NB_RETRIES; i++) { if (i == NB_RETRIES - 1) { fail("Waited too much time for replication. Row:" + Bytes.toString(row) + ". IsDeleteReplication:" + isDeleted); } Result res = target.get(get); boolean sleep = isDeleted ? res.size() > 0 : res.isEmpty(); if (sleep) { LOG.info("Waiting for more time for replication. Row:" + Bytes.toString(row) + ". IsDeleteReplication:" + isDeleted); Thread.sleep(SLEEP_TIME); } else { if (!isDeleted) { assertArrayEquals(res.value(), row); } LOG.info("Obtained row:" + Bytes.toString(row) + ". IsDeleteReplication:" + isDeleted); break; } } }
protected synchronized V get(String key, byte[] family) { try { Get get = new Get(row(key)); get.addColumn(family, QUALIFIER); Result r = hbaseTable.get(get); if(r.isEmpty()){ return null; } return value(r); } catch (IOException e) { throw UserException.dataReadError(e) .message("Caught error while getting row '%s' from for table '%s'", key, hbaseTableName) .build(logger); } }
@Test public void testWithRegionServerFailover() throws Exception { AsyncTable<?> table = tableGetter.apply(TABLE_NAME); table.putAll(IntStream.range(0, COUNT) .mapToObj(i -> new Put(getRow(i)).addColumn(FAMILY, CQ, Bytes.toBytes(i))) .collect(Collectors.toList())).get(); TEST_UTIL.getMiniHBaseCluster().getRegionServer(0).abort("Aborting for tests"); Thread.sleep(100); table.putAll(IntStream.range(COUNT, 2 * COUNT) .mapToObj(i -> new Put(getRow(i)).addColumn(FAMILY, CQ, Bytes.toBytes(i))) .collect(Collectors.toList())).get(); List<Result> results = table.getAll( IntStream.range(0, 2 * COUNT).mapToObj(i -> new Get(getRow(i))).collect(Collectors.toList())) .get(); assertEquals(2 * COUNT, results.size()); results.forEach(r -> assertFalse(r.isEmpty())); table.deleteAll(IntStream.range(0, 2 * COUNT).mapToObj(i -> new Delete(getRow(i))) .collect(Collectors.toList())).get(); results = table.getAll( IntStream.range(0, 2 * COUNT).mapToObj(i -> new Get(getRow(i))).collect(Collectors.toList())) .get(); assertEquals(2 * COUNT, results.size()); results.forEach(r -> assertTrue(r.isEmpty())); }
@Test public void testSimple() throws Exception { AsyncTable<?> table = getTable.get(); table.put(new Put(row).addColumn(FAMILY, QUALIFIER, VALUE)).get(); assertTrue(table.exists(new Get(row).addColumn(FAMILY, QUALIFIER)).get()); Result result = table.get(new Get(row).addColumn(FAMILY, QUALIFIER)).get(); assertArrayEquals(VALUE, result.getValue(FAMILY, QUALIFIER)); table.delete(new Delete(row)).get(); result = table.get(new Get(row).addColumn(FAMILY, QUALIFIER)).get(); assertTrue(result.isEmpty()); assertFalse(table.exists(new Get(row).addColumn(FAMILY, QUALIFIER)).get()); }
@Test public void testGet_NonExistentRow() throws IOException { Table table = TEST_UTIL.createTable(TableName.valueOf(name.getMethodName()), FAMILY); Put put = new Put(ROW); put.addColumn(FAMILY, QUALIFIER, VALUE); table.put(put); LOG.info("Row put"); Get get = new Get(ROW); get.addFamily(FAMILY); Result r = table.get(get); assertFalse(r.isEmpty()); System.out.println("Row retrieved successfully"); byte [] missingrow = Bytes.toBytes("missingrow"); get = new Get(missingrow); get.addFamily(FAMILY); r = table.get(get); assertTrue(r.isEmpty()); LOG.info("Row missing as it should be"); }