@Override
public QueryStats currentStats() {
if (client == null) {
return new QueryStats(QueryStats.State.WAITING_FOR_AVAILABLE_THREAD);
}
if (client.isFailed()) {
return new QueryStats(QueryStats.State.FAILED);
}
StatementStats stats = client.getStats();
int totalSplits = stats.getTotalSplits();
QueryStats.State state = QueryStats.State.valueOf(stats.getState().toUpperCase(Locale.ENGLISH));
int percentage = state == FINISHED ? 100 : (totalSplits == 0 ? 0 : stats.getCompletedSplits() * 100 / totalSplits);
return new QueryStats(stats.isScheduled() ? percentage : null,
state,
stats.getNodes(),
stats.getProcessedRows(),
stats.getProcessedBytes(),
stats.getUserTimeMillis(),
stats.getCpuTimeMillis(),
stats.getWallTimeMillis());
}