private Multimap<String,String> getLogs(Connector conn) throws Exception {
Multimap<TServerInstance,String> serverToTableID = HashMultimap.create();
Scanner scanner = conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
scanner.setRange(MetadataSchema.TabletsSection.getRange());
scanner.fetchColumnFamily(MetadataSchema.TabletsSection.CurrentLocationColumnFamily.NAME);
for (Entry<Key,Value> entry : scanner) {
TServerInstance key = new TServerInstance(entry.getValue(),
entry.getKey().getColumnQualifier());
byte[] tableId = KeyExtent.tableOfMetadataRow(entry.getKey().getRow());
serverToTableID.put(key, new String(tableId, UTF_8));
}
Multimap<String,String> logs = HashMultimap.create();
Instance i = conn.getInstance();
ZooReaderWriter zk = new ZooReaderWriter(i.getZooKeepers(), i.getZooKeepersSessionTimeOut(),
"");
WalStateManager wals = new WalStateManager(conn.getInstance(), zk);
for (Entry<TServerInstance,List<UUID>> entry : wals.getAllMarkers().entrySet()) {
for (UUID id : entry.getValue()) {
Pair<WalState,Path> state = wals.state(entry.getKey(), id);
for (String tableId : serverToTableID.get(entry.getKey())) {
logs.put(state.getSecond().toString(), tableId);
}
}
}
return logs;
}