diff options
Diffstat (limited to 'src/third_party/wiredtiger/bench/wtperf/idle_table_cycle.c')
-rw-r--r-- | src/third_party/wiredtiger/bench/wtperf/idle_table_cycle.c | 101 |
1 files changed, 51 insertions, 50 deletions
diff --git a/src/third_party/wiredtiger/bench/wtperf/idle_table_cycle.c b/src/third_party/wiredtiger/bench/wtperf/idle_table_cycle.c index 3c079bb560f..13fa55e86f5 100644 --- a/src/third_party/wiredtiger/bench/wtperf/idle_table_cycle.c +++ b/src/third_party/wiredtiger/bench/wtperf/idle_table_cycle.c @@ -29,28 +29,25 @@ #include "wtperf.h" static int -check_timing(CONFIG *cfg, +check_timing(WTPERF *wtperf, const char *name, struct timespec start, struct timespec *stop) { + CONFIG_OPTS *opts; uint64_t last_interval; - int ret; - if ((ret = __wt_epoch(NULL, stop)) != 0) { - lprintf(cfg, ret, 0, - "Get time failed in cycle_idle_tables."); - cfg->error = ret; - return (ret); - } + opts = wtperf->opts; + + __wt_epoch(NULL, stop); last_interval = (uint64_t)(WT_TIMEDIFF_SEC(*stop, start)); - if (last_interval > cfg->idle_table_cycle) { - lprintf(cfg, ret, 0, + if (last_interval > opts->idle_table_cycle) { + lprintf(wtperf, ETIMEDOUT, 0, "Cycling idle table failed because %s took %" PRIu64 " seconds which is longer than configured acceptable" " maximum of %" PRIu32 ".", - name, last_interval, cfg->idle_table_cycle); - cfg->error = ETIMEDOUT; + name, last_interval, opts->idle_table_cycle); + wtperf->error = true; return (ETIMEDOUT); } return (0); @@ -64,64 +61,62 @@ static void * cycle_idle_tables(void *arg) { struct timespec start, stop; - CONFIG *cfg; - WT_SESSION *session; + CONFIG_OPTS *opts; + WTPERF *wtperf; WT_CURSOR *cursor; + WT_SESSION *session; int cycle_count, ret; char uri[512]; - cfg = (CONFIG *)arg; + wtperf = (WTPERF *)arg; + opts = wtperf->opts; cycle_count = 0; - if ((ret = cfg->conn->open_session( - cfg->conn, NULL, cfg->sess_config, &session)) != 0) { - lprintf(cfg, ret, 0, - "Error opening a session on %s", cfg->home); + if ((ret = wtperf->conn->open_session( + wtperf->conn, NULL, opts->sess_config, &session)) != 0) { + lprintf(wtperf, ret, 0, + "Error opening a session on %s", wtperf->home); return (NULL); } - for (cycle_count = 0; cfg->idle_cycle_run; ++cycle_count) { - snprintf(uri, 512, "%s_cycle%07d", cfg->uris[0], cycle_count); + for (cycle_count = 0; wtperf->idle_cycle_run; ++cycle_count) { + snprintf(uri, sizeof(uri), + "%s_cycle%07d", wtperf->uris[0], cycle_count); /* Don't busy cycle in this loop. */ __wt_sleep(1, 0); /* Setup a start timer. */ - if ((ret = __wt_epoch(NULL, &start)) != 0) { - lprintf(cfg, ret, 0, - "Get time failed in cycle_idle_tables."); - cfg->error = ret; - return (NULL); - } + __wt_epoch(NULL, &start); /* Create a table. */ if ((ret = session->create( - session, uri, cfg->table_config)) != 0) { + session, uri, opts->table_config)) != 0) { if (ret == EBUSY) continue; - lprintf(cfg, ret, 0, + lprintf(wtperf, ret, 0, "Table create failed in cycle_idle_tables."); - cfg->error = ret; + wtperf->error = true; return (NULL); } - if (check_timing(cfg, "create", start, &stop) != 0) + if (check_timing(wtperf, "create", start, &stop) != 0) return (NULL); start = stop; /* Open and close cursor. */ if ((ret = session->open_cursor( session, uri, NULL, NULL, &cursor)) != 0) { - lprintf(cfg, ret, 0, + lprintf(wtperf, ret, 0, "Cursor open failed in cycle_idle_tables."); - cfg->error = ret; + wtperf->error = true; return (NULL); } if ((ret = cursor->close(cursor)) != 0) { - lprintf(cfg, ret, 0, + lprintf(wtperf, ret, 0, "Cursor close failed in cycle_idle_tables."); - cfg->error = ret; + wtperf->error = true; return (NULL); } - if (check_timing(cfg, "cursor", start, &stop) != 0) + if (check_timing(wtperf, "cursor", start, &stop) != 0) return (NULL); start = stop; @@ -134,12 +129,12 @@ cycle_idle_tables(void *arg) __wt_sleep(1, 0); if (ret != 0 && ret != EBUSY) { - lprintf(cfg, ret, 0, + lprintf(wtperf, ret, 0, "Table drop failed in cycle_idle_tables."); - cfg->error = ret; + wtperf->error = true; return (NULL); } - if (check_timing(cfg, "drop", start, &stop) != 0) + if (check_timing(wtperf, "drop", start, &stop) != 0) return (NULL); } @@ -154,20 +149,23 @@ cycle_idle_tables(void *arg) * initialization isn't necessary. */ int -start_idle_table_cycle(CONFIG *cfg, pthread_t *idle_table_cycle_thread) +start_idle_table_cycle(WTPERF *wtperf, pthread_t *idle_table_cycle_thread) { + CONFIG_OPTS *opts; pthread_t thread_id; int ret; - if (cfg->idle_table_cycle == 0) + opts = wtperf->opts; + + if (opts->idle_table_cycle == 0) return (0); - cfg->idle_cycle_run = true; + wtperf->idle_cycle_run = true; if ((ret = pthread_create( - &thread_id, NULL, cycle_idle_tables, cfg)) != 0) { - lprintf( - cfg, ret, 0, "Error creating idle table cycle thread."); - cfg->idle_cycle_run = false; + &thread_id, NULL, cycle_idle_tables, wtperf)) != 0) { + lprintf(wtperf, + ret, 0, "Error creating idle table cycle thread."); + wtperf->idle_cycle_run = false; return (ret); } *idle_table_cycle_thread = thread_id; @@ -176,17 +174,20 @@ start_idle_table_cycle(CONFIG *cfg, pthread_t *idle_table_cycle_thread) } int -stop_idle_table_cycle(CONFIG *cfg, pthread_t idle_table_cycle_thread) +stop_idle_table_cycle(WTPERF *wtperf, pthread_t idle_table_cycle_thread) { + CONFIG_OPTS *opts; int ret; - if (cfg->idle_table_cycle == 0 || !cfg->idle_cycle_run) + opts = wtperf->opts; + + if (opts->idle_table_cycle == 0 || !wtperf->idle_cycle_run) return (0); - cfg->idle_cycle_run = false; + wtperf->idle_cycle_run = false; if ((ret = pthread_join(idle_table_cycle_thread, NULL)) != 0) { lprintf( - cfg, ret, 0, "Error joining idle table cycle thread."); + wtperf, ret, 0, "Error joining idle table cycle thread."); return (ret); } return (0); |