Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ static void trackScanning(Map<KeyExtent,List<Range>> failures,

// translate returned failures, remove them from unscanned, and add them to failures
// @formatter:off
Map<KeyExtent, List<Range>> retFailures = scanResult.failures.entrySet().stream().collect(Collectors.toMap(
Map<KeyExtent, List<Range>> retFailures = scanResult.getFailures().entrySet().stream().collect(Collectors.toMap(
entry -> KeyExtent.fromThrift(entry.getKey()),
entry -> entry.getValue().stream().map(Range::new).collect(Collectors.toList())
));
Expand All @@ -690,25 +690,25 @@ static void trackScanning(Map<KeyExtent,List<Range>> failures,

// translate full scans and remove them from unscanned
Set<KeyExtent> fullScans =
scanResult.fullScans.stream().map(KeyExtent::fromThrift).collect(Collectors.toSet());
scanResult.getFullScans().stream().map(KeyExtent::fromThrift).collect(Collectors.toSet());
unscanned.keySet().removeAll(fullScans);

// remove partial scan from unscanned
if (scanResult.partScan != null) {
KeyExtent ke = KeyExtent.fromThrift(scanResult.partScan);
Key nextKey = new Key(scanResult.partNextKey);
if (scanResult.getPartScan() != null) {
KeyExtent ke = KeyExtent.fromThrift(scanResult.getPartScan());
Key nextKey = new Key(scanResult.getPartNextKey());

ListIterator<Range> iterator = unscanned.get(ke).listIterator();
while (iterator.hasNext()) {
Range range = iterator.next();

if (range.afterEndKey(nextKey) || (nextKey.equals(range.getEndKey())
&& scanResult.partNextKeyInclusive != range.isEndKeyInclusive())) {
&& scanResult.isPartNextKeyInclusive() != range.isEndKeyInclusive())) {
iterator.remove();
} else if (range.contains(nextKey)) {
iterator.remove();
Range partRange = new Range(nextKey, scanResult.partNextKeyInclusive, range.getEndKey(),
range.isEndKeyInclusive());
Range partRange = new Range(nextKey, scanResult.isPartNextKeyInclusive(),
range.getEndKey(), range.isEndKeyInclusive());
iterator.add(partRange);
}
}
Expand Down Expand Up @@ -839,70 +839,72 @@ static void doLookup(ClientContext context, String server, Map<KeyExtent,List<Ra
ThriftScanner.serversWaitedForWrites.get(ttype).add(server.toString());
}

MultiScanResult scanResult = imsr.result;
MultiScanResult scanResult = imsr.getResult();

if (timer != null) {
timer.stop();
log.trace("tid={} Got 1st multi scan results, #results={} {} in {}",
Thread.currentThread().getId(), scanResult.results.size(),
(scanResult.more ? "scanID=" + imsr.scanID : ""),
Thread.currentThread().getId(), scanResult.getResultsSize(),
(scanResult.isMore() ? "scanID=" + imsr.getScanID() : ""),
String.format("%.3f secs", timer.scale(SECONDS)));
}

ArrayList<Entry<Key,Value>> entries = new ArrayList<>(scanResult.results.size());
for (TKeyValue kv : scanResult.results) {
entries.add(new SimpleImmutableEntry<>(new Key(kv.key), new Value(kv.value)));
ArrayList<Entry<Key,Value>> entries = new ArrayList<>(scanResult.getResultsSize());
for (TKeyValue kv : scanResult.getResults()) {
entries.add(new SimpleImmutableEntry<>(new Key(kv.getKey()), new Value(kv.getValue())));
}

if (!entries.isEmpty()) {
receiver.receive(entries);
}

if (!entries.isEmpty() || !scanResult.fullScans.isEmpty()) {
if (!entries.isEmpty() || !scanResult.getFullScans().isEmpty()) {
timeoutTracker.madeProgress();
}

trackScanning(failures, unscanned, scanResult);

AtomicLong nextOpid = new AtomicLong();

while (scanResult.more) {
while (scanResult.isMore()) {

timeoutTracker.check();

if (timer != null) {
log.trace("tid={} oid={} Continuing multi scan, scanid={}",
Thread.currentThread().getId(), nextOpid.get(), imsr.scanID);
Thread.currentThread().getId(), nextOpid.get(), imsr.getScanID());
timer.reset().start();
}

scanResult = client.continueMultiScan(TraceUtil.traceInfo(), imsr.scanID, busyTimeout);
scanResult =
client.continueMultiScan(TraceUtil.traceInfo(), imsr.getScanID(), busyTimeout);

if (timer != null) {
timer.stop();
log.trace("tid={} oid={} Got more multi scan results, #results={} {} in {}",
Thread.currentThread().getId(), nextOpid.getAndIncrement(),
scanResult.results.size(), (scanResult.more ? " scanID=" + imsr.scanID : ""),
scanResult.getResultsSize(),
(scanResult.isMore() ? " scanID=" + imsr.getScanID() : ""),
String.format("%.3f secs", timer.scale(SECONDS)));
}

entries = new ArrayList<>(scanResult.results.size());
for (TKeyValue kv : scanResult.results) {
entries.add(new SimpleImmutableEntry<>(new Key(kv.key), new Value(kv.value)));
entries = new ArrayList<>(scanResult.getResultsSize());
for (TKeyValue kv : scanResult.getResults()) {
entries.add(new SimpleImmutableEntry<>(new Key(kv.getKey()), new Value(kv.getValue())));
}

if (!entries.isEmpty()) {
receiver.receive(entries);
}

if (!entries.isEmpty() || !scanResult.fullScans.isEmpty()) {
if (!entries.isEmpty() || !scanResult.getFullScans().isEmpty()) {
timeoutTracker.madeProgress();
}

trackScanning(failures, unscanned, scanResult);
}

client.closeMultiScan(TraceUtil.traceInfo(), imsr.scanID);
client.closeMultiScan(TraceUtil.traceInfo(), imsr.getScanID());

} finally {
ThriftUtil.returnClient(client, context);
Expand All @@ -913,7 +915,7 @@ static void doLookup(ClientContext context, String server, Map<KeyExtent,List<Ra
throw new IOException(e);
} catch (ThriftSecurityException e) {
log.debug("Server : {} msg : {}", server, e.getMessage(), e);
throw new AccumuloSecurityException(e.user, e.code, e);
throw new AccumuloSecurityException(e.getUser(), e.getCode(), e);
} catch (TApplicationException e) {
log.debug("Server : {} msg : {}", server, e.getMessage(), e);
throw new AccumuloServerException(server, e);
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/scripts/generate-thrift.sh
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ THRIFT_ARGS=("${THRIFT_ARGS[@]}" -o "$BUILD_DIR")
mkdir -p "$BUILD_DIR"
rm -rf "$BUILD_DIR"/gen-java
for f in src/main/thrift/*.thrift; do
thrift "${THRIFT_ARGS[@]}" --gen java:generated_annotations=suppress "$f" || fail unable to generate java thrift classes
thrift "${THRIFT_ARGS[@]}" --gen java:generated_annotations=suppress,private-members "$f" || fail unable to generate java thrift classes
thrift "${THRIFT_ARGS[@]}" --gen py "$f" || fail unable to generate python thrift classes
thrift "${THRIFT_ARGS[@]}" --gen rb "$f" || fail unable to generate ruby thrift classes
thrift "${THRIFT_ARGS[@]}" --gen cpp "$f" || fail unable to generate cpp thrift classes
Expand Down
Loading