};
command.setDetachClient(true);
MergerBlurResultIterable merger = new MergerBlurResultIterable(blurQuery);
BlurResultIterable hitsIterable = null;
try {
String rowId = blurQuery.getRowId();
if (rowId == null) {
Tracer scatterGatherTrace = Trace.trace("query - scatterGather", Trace.param("retries", retries));
try {
hitsIterable = scatterGather(tableDescriptor.getCluster(), command, merger);
} finally {
scatterGatherTrace.done();
}
} else {
String clientHostnamePort = getNode(table, rowId);
hitsIterable = _client.execute(clientHostnamePort, command, _maxFetchRetries, _fetchDelay, _maxFetchDelay);
}
BlurResults results;
Tracer convertToBlurResults = Trace.trace("query - convertToBlurResults", Trace.param("retries", retries));
try {
results = convertToBlurResults(hitsIterable, blurQuery, facetCounts, _executor, selector, table);
} finally {
convertToBlurResults.done();
}
if (!validResults(results, shardCount, blurQuery)) {
BlurClientManager.sleep(_defaultDelay, _maxDefaultDelay, retries, _maxDefaultRetries);
Map<String, String> map = getTableLayout(table);
LOG.info("Current layout for table [{0}] is [{1}]", table, map);
continue OUTER;
}
return results;
} finally {
if (hitsIterable != null) {
hitsIterable.close();
}
}
}
throw new BException("Query could not be completed.");
} catch (Exception e) {