@Override public AccumuloClient getAccumuloClient() { return super.getAccumuloClient(); }
public static byte[] serializeTableSplits(Environment env) { List<Bytes> splits; try { splits = env.getAccumuloClient().tableOperations().listSplits(env.getTable()).stream() .map(ByteUtil::toBytes).collect(Collectors.toList()); } catch (TableNotFoundException | AccumuloSecurityException | AccumuloException e) { throw new RuntimeException(e); } return serialize(splits); } }
@VisibleForTesting public long countNotifications(Environment env) { Scanner scanner = null; try { scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) { log.error("An exception was thrown -", e); throw new FluoException(e); } Notification.configureScanner(scanner); return Iterables.size(scanner); }
env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations());
private static void assertRawNotifications(int expected, Environment env) throws Exception { Scanner scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); scanner.fetchColumnFamily(ByteUtil.toText(ColumnConstants.NOTIFY_CF)); int size = Iterables.size(scanner); if (size != expected) { for (Entry<Key, Value> entry : scanner) { log.error(entry.toString()); } } Assert.assertEquals(expected, size); }
private static List<TableRange> getRanges(Environment env) throws TableNotFoundException, AccumuloSecurityException, AccumuloException { List<TableRange> ranges = TableRange.fromTexts(env.getAccumuloClient().tableOperations().listSplits(env.getTable())); Collections.shuffle(ranges); return ranges; }
private static int countNotifications(Environment env) throws Exception { Scanner scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); Notification.configureScanner(scanner); return Iterables.size(scanner); }
private BatchScanner setupBatchScanner() { BatchScanner scanner; try { // TODO hardcoded number of threads! // one thread is probably good.. going for throughput scanner = env.getAccumuloClient().createBatchScanner(env.getTable(), env.getAuthorizations(), 1); } catch (TableNotFoundException e) { throw new RuntimeException(e); } scanner.clearColumns(); scanner.clearScanIterators(); if (!rangesToScan.isEmpty()) { scanner.setRanges(rangesToScan); SnapshotScanner.setupScanner(scanner, Collections.<Column>emptySet(), startTs, true); } else if (rows != null) { List<Range> ranges = new ArrayList<>(rows.size()); for (Bytes row : rows) { ranges.add(Range.exact(ByteUtil.toText(row))); } scanner.setRanges(ranges); SnapshotScanner.setupScanner(scanner, columns, startTs, true); } else { return null; } return scanner; }
@Override public void waitForObservers() { try { Scanner scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); Notification.configureScanner(scanner); while (true) { long ts1 = env.getSharedResources().getOracleClient().getStamp().getTxTimestamp(); long ntfyCount = Iterables.size(scanner); long ts2 = env.getSharedResources().getOracleClient().getStamp().getTxTimestamp(); if (ntfyCount == 0 && ts1 == (ts2 - 1)) { break; } long sleepTime = ntfyCount / 2; sleepTime = Math.min(Math.max(10, sleepTime), 10000); Uninterruptibles.sleepUninterruptibly(sleepTime, TimeUnit.MILLISECONDS); } } catch (Exception e) { throw new RuntimeException(e); } }
try { bscanner = env.getAccumuloClient().createBatchScanner(env.getTable(), env.getAuthorizations(), 1);
private static boolean hasNotifications(Environment env, TableRange range) throws TableNotFoundException { Scanner scanner = null; try { scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); scanner.setRange(range.getRange()); Notification.configureScanner(scanner); return scanner.iterator().hasNext(); } finally { if (scanner != null) { scanner.close(); } } }
public static long getNotificationTS(Environment env, String row, Column col) { Scanner scanner; try { scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) { throw new RuntimeException(e); } IteratorSetting iterCfg = new IteratorSetting(11, NotificationIterator.class); scanner.addScanIterator(iterCfg); Text cv = ByteUtil.toText(col.getVisibility()); scanner.setRange(SpanUtil.toRange(Span.prefix(row))); scanner.fetchColumn(ByteUtil.toText(ColumnConstants.NOTIFY_CF), new Text(NotificationUtil.encodeCol(col))); for (Entry<Key, org.apache.accumulo.core.data.Value> entry : scanner) { if (entry.getKey().getColumnVisibility().equals(cv)) { return Notification.from(entry.getKey()).getTimestamp(); } } throw new RuntimeException("No notification found"); }
private void setUpIterator() { Scanner scanner; try { scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) { throw new RuntimeException(e); } scanner.clearColumns(); scanner.clearScanIterators(); scanner.setRange(SpanUtil.toRange(snapIterConfig.getSpan())); setupScanner(scanner, snapIterConfig.getColumns(), startTs, snapIterConfig.showReadLocks); this.iterator = scanner.iterator(); }
env.getAccumuloClient().tableOperations().compact(env.getTable(), null, null, true, false);
public SharedResources(Environment env) throws TableNotFoundException { this.env = env; curator = CuratorUtil.newAppCurator(env.getConfiguration()); curator.start(); int numTservers = env.getAccumuloClient().instanceOperations().getTabletServers().size(); int numBWThreads = FluoConfigurationImpl.getNumBWThreads(env.getConfiguration(), numTservers); bw = env.getAccumuloClient().createBatchWriter(env.getTable(), new BatchWriterConfig().setMaxWriteThreads(numBWThreads)); sbw = new SharedBatchWriter(bw); int numCWThreads = FluoConfigurationImpl.getNumCWThreads(env.getConfiguration(), numTservers); cw = env.getAccumuloClient().createConditionalWriter(env.getTable(), new ConditionalWriterConfig().setAuthorizations(env.getAuthorizations()) .setMaxWriteThreads(numCWThreads)); bulkCw = env.getAccumuloClient().createConditionalWriter(env.getTable(), new ConditionalWriterConfig().setAuthorizations(env.getAuthorizations()) .setMaxWriteThreads(numCWThreads)); txInfoCache = new TxInfoCache(env); visCache = new VisibilityCache(env.getConfiguration()); metricRegistry = new MetricRegistry(); int commitThreads = env.getConfiguration().getInt(FluoConfigurationImpl.ASYNC_COMMIT_THREADS, FluoConfigurationImpl.ASYNC_COMMIT_THREADS_DEFAULT); asyncCommitExecutor = FluoExecutors.newFixedThreadPool(commitThreads, "async-commits"); commitThreads = env.getConfiguration().getInt(FluoConfigurationImpl.SYNC_COMMIT_THREADS, FluoConfigurationImpl.SYNC_COMMIT_THREADS_DEFAULT); syncCommitExecutor = FluoExecutors.newFixedThreadPool(commitThreads, "sync-commits"); acw = new AsyncConditionalWriter(env, cw); bulkAcw = new AsyncConditionalWriter(env, bulkCw); }
private ScanCounts scan(Session session, PartitionInfo pi, Range range) throws TableNotFoundException { Scanner scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations());
public static Entry<Key, Value> checkColumn(Environment env, IteratorSetting iterConf, Bytes row, Column col) { Span span = Span.exact(row, col); Scanner scanner; try { // TODO reuse or share scanner scanner = env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) { // TODO proper exception handling throw new RuntimeException(e); } scanner.setRange(SpanUtil.toRange(span)); scanner.addScanIterator(iterConf); Iterator<Entry<Key, Value>> iter = scanner.iterator(); if (iter.hasNext()) { Entry<Key, Value> entry = iter.next(); Key k = entry.getKey(); Bytes r = Bytes.of(k.getRowData().toArray()); Bytes cf = Bytes.of(k.getColumnFamilyData().toArray()); Bytes cq = Bytes.of(k.getColumnQualifierData().toArray()); Bytes cv = Bytes.of(k.getColumnVisibilityData().toArray()); if (r.equals(row) && cf.equals(col.getFamily()) && cq.equals(col.getQualifier()) && cv.equals(col.getVisibility())) { return entry; } else { throw new RuntimeException("unexpected key " + k + " " + row + " " + col); } } return null; }
env.getAccumuloClient().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) {
Assert.assertEquals("3", tx3.gets("url0000", lastUpdate)); Scanner scanner = env.getAccumuloClient().createScanner(env.getTable(), Authorizations.EMPTY); Notification.configureScanner(scanner); Iterator<Entry<Key, Value>> iter = scanner.iterator();
Assert.assertEquals(0, countNotifications(env)); env.getAccumuloClient().tableOperations().flush(env.getTable(), null, null, true);