private List<TabletInfo<T>> listSplits() throws TableNotFoundException, AccumuloSecurityException, AccumuloException { List<Text> splits = new ArrayList<>(env.getConnector().tableOperations().listSplits(env.getTable())); Collections.sort(splits); List<TabletInfo<T>> tablets = new ArrayList<>(splits.size() + 1); for (int i = 0; i < splits.size(); i++) { tablets .add(new TabletInfo<>(i == 0 ? null : splits.get(i - 1), splits.get(i), supplier.get())); } tablets.add(new TabletInfo<>(splits.size() == 0 ? null : splits.get(splits.size() - 1), null, supplier.get())); listSplitsTime = System.currentTimeMillis(); return tablets; }
@Override public void waitForObservers() { try { Scanner scanner = env.getConnector().createScanner(env.getTable(), env.getAuthorizations()); Notification.configureScanner(scanner); while (isProcessing(scanner)) { Thread.sleep(100); } } catch (Exception e) { throw new RuntimeException(e); } } }
@VisibleForTesting public long countNotifications(Environment env) { Scanner scanner = null; try { scanner = env.getConnector().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) { log.error("An exception was thrown -", e); throw new FluoException(e); } Notification.configureScanner(scanner); long count = 0; for (Iterator<Map.Entry<Key, Value>> iterator = scanner.iterator(); iterator.hasNext(); iterator .next()) { count++; } return count; }
private BatchScanner setupBatchScanner(Collection<Bytes> rows, Set<Column> columns) { BatchScanner scanner; try { // TODO hardcoded number of threads! // one thread is probably good.. going for throughput scanner = env.getConnector().createBatchScanner(env.getTable(), env.getAuthorizations(), 1); } catch (TableNotFoundException e) { throw new RuntimeException(e); } scanner.clearColumns(); scanner.clearScanIterators(); 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); return scanner; }
public SharedResources(Environment env) throws TableNotFoundException { this.env = env; curator = CuratorUtil.newAppCurator(env.getConfiguration()); curator.start(); int numTservers = env.getConnector().instanceOperations().getTabletServers().size(); int numBWThreads = FluoConfigurationImpl.getNumBWThreads(env.getConfiguration(), numTservers); bw = env.getConnector().createBatchWriter(env.getTable(), new BatchWriterConfig().setMaxWriteThreads(numBWThreads)); sbw = new SharedBatchWriter(bw); int numCWThreads = FluoConfigurationImpl.getNumCWThreads(env.getConfiguration(), numTservers); cw = env.getConnector().createConditionalWriter( env.getTable(), new ConditionalWriterConfig().setAuthorizations(env.getAuthorizations()) .setMaxWriteThreads(numCWThreads)); bulkCw = env.getConnector().createConditionalWriter( env.getTable(), new ConditionalWriterConfig().setAuthorizations(env.getAuthorizations()) .setMaxWriteThreads(numCWThreads)); txInfoCache = new TxInfoCache(env); visCache = new VisibilityCache(); metricRegistry = new MetricRegistry(); }
private void setUpIterator() { Scanner scanner; try { scanner = env.getConnector().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) { throw new RuntimeException(e); } scanner.clearColumns(); scanner.clearScanIterators(); scanner.setRange(SpanUtil.toRange(config.getSpan())); setupScanner(scanner, config.getColumns(), startTs); this.iterator = scanner.iterator(); }
private int scan(ModulusParams lmp, Range range) throws TableNotFoundException { Scanner scanner = env.getConnector().createScanner(env.getTable(), env.getAuthorizations()); scanner.setRange(range); Notification.configureScanner(scanner); IteratorSetting iterCfg = new IteratorSetting(30, "nhf", NotificationHashFilter.class); NotificationHashFilter.setModulusParams(iterCfg, lmp.divisor, lmp.remainder); scanner.addScanIterator(iterCfg); int count = 0; for (Entry<Key, Value> entry : scanner) { if (lmp.update != hwf.getModulusParams().update) { throw new HashNotificationFinder.ModParamsChangedException(); } if (stopped.get()) { return count; } if (hwf.getWorkerQueue().addNotification(hwf, Notification.from(entry.getKey()))) { count++; } } return count; }
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.getConnector().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; }
try { scanner = env.getConnector().createScanner(env.getTable(), env.getAuthorizations()); } catch (TableNotFoundException e) {