You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2019/06/27 03:05:59 UTC
[kudu] 02/02: [loadgen] don't report per-row timing if errors
happened
This is an automated email from the ASF dual-hosted git repository.
alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
commit dd49c0354fcbb253de05713b01db7fed7a85b394
Author: Alexey Serbin <al...@apache.org>
AuthorDate: Wed Jun 26 15:49:46 2019 -0700
[loadgen] don't report per-row timing if errors happened
The per-row timings are misleading in case if a write error happened
while inserting generated rows into the test table, so don't
report those.
The motivation for this change was seeing per-row timings in case
when not a single generated row was inserted.
Change-Id: I501aad05fa6bd8a5b540c53c8e3f27baff4bde84
Reviewed-on: http://gerrit.cloudera.org:8080/13742
Reviewed-by: Andrew Wong <aw...@cloudera.com>
Tested-by: Alexey Serbin <as...@cloudera.com>
---
src/kudu/tools/tool_action_perf.cc | 33 +++++++++++++++++++--------------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/src/kudu/tools/tool_action_perf.cc b/src/kudu/tools/tool_action_perf.cc
index d763880..9b83122 100644
--- a/src/kudu/tools/tool_action_perf.cc
+++ b/src/kudu/tools/tool_action_perf.cc
@@ -678,45 +678,50 @@ Status TestLoadGenerator(const RunnerContext& context) {
cout << "Using " << (is_auto_table ? "auto-created " : "")
<< "table '" << table_name << "'" << endl;
- uint64_t total_row_count = 0;
- uint64_t total_err_count = 0;
+ uint64_t num_rows_generated = 0;
+ uint64_t num_rows_write_error = 0;
Stopwatch sw(Stopwatch::ALL_THREADS);
sw.start();
Status status = GenerateInsertRows(client, table_name,
- &total_row_count, &total_err_count);
+ &num_rows_generated,
+ &num_rows_write_error);
sw.stop();
- const double total = sw.elapsed().wall_millis();
+ const double time_total_ms = sw.elapsed().wall_millis();
cout << endl << "Generator report" << endl
- << " time total : " << total << " ms" << endl;
- if (total_row_count != 0) {
- cout << " time per row: " << total / total_row_count << " ms" << endl;
+ << " time total : " << time_total_ms << " ms" << endl;
+ if (num_rows_generated != 0 && num_rows_write_error == 0) {
+ // Report per-row timings only if there were no write errors, otherwise the
+ // readings do not make much sense.
+ cout << " time per row: " << time_total_ms / num_rows_generated << " ms"
+ << endl;
}
- if (!status.ok() || total_err_count != 0) {
+ if (!status.ok() || num_rows_write_error != 0) {
string err_str;
if (!status.ok()) {
SubstituteAndAppend(&err_str, status.ToString());
}
- if (total_err_count != 0) {
+ if (num_rows_write_error != 0) {
if (!status.ok()) {
SubstituteAndAppend(&err_str, "; ");
}
SubstituteAndAppend(&err_str, "Encountered $0 write operation errors",
- total_err_count);
+ num_rows_write_error);
}
return Status::RuntimeError(err_str);
}
if (FLAGS_run_scan) {
- // Run a table scan to count inserted rows.
+ // In case if no write errors encountered, run a table scan to make sure
+ // the number of inserted rows matches the results of the scan.
uint64_t count = 0;
RETURN_NOT_OK(CountTableRows(client, table_name, &count));
cout << endl << "Scanner report" << endl
- << " expected rows: " << total_row_count << endl
+ << " expected rows: " << num_rows_generated << endl
<< " actual rows : " << count << endl;
- if (count != total_row_count) {
+ if (count != num_rows_generated) {
return Status::RuntimeError(
Substitute("Row count mismatch: expected $0, actual $1",
- total_row_count, count));
+ num_rows_generated, count));
}
}