From 39670ab94b7811f7f8462e1cd92d9ed9490beee8 Mon Sep 17 00:00:00 2001 From: Barry Perlman Date: Tue, 16 Apr 2013 23:59:15 -0400 Subject: [PATCH] Allow logger status with no logger. git-svn-id: file:///svn/toku/tokudb@20495 c7de825b-a66e-492c-adef-691d508d4ae1 --- buildheader/db.h_4_1 | 4 ++++ buildheader/db.h_4_3 | 4 ++++ buildheader/db.h_4_4 | 4 ++++ buildheader/db.h_4_5 | 4 ++++ buildheader/db.h_4_6 | 4 ++++ buildheader/make_db_h.c | 4 ++++ buildheader/tdb.h | 4 ++++ include/db.h | 4 ++++ newbrt/logger.c | 14 ++++++++++---- src/ydb.c | 11 +++++++++++ 10 files changed, 53 insertions(+), 4 deletions(-) diff --git a/buildheader/db.h_4_1 b/buildheader/db.h_4_1 index d015d52e439..ddadd29dd2e 100644 --- a/buildheader/db.h_4_1 +++ b/buildheader/db.h_4_1 @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/buildheader/db.h_4_3 b/buildheader/db.h_4_3 index 775b43b39de..796d73c713a 100644 --- a/buildheader/db.h_4_3 +++ b/buildheader/db.h_4_3 @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/buildheader/db.h_4_4 b/buildheader/db.h_4_4 index 1659129fe1c..99bf64ce501 100644 --- a/buildheader/db.h_4_4 +++ b/buildheader/db.h_4_4 @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/buildheader/db.h_4_5 b/buildheader/db.h_4_5 index e23da2e6f38..c59394677c9 100644 --- a/buildheader/db.h_4_5 +++ b/buildheader/db.h_4_5 @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/buildheader/db.h_4_6 b/buildheader/db.h_4_6 index 78c19e7e58a..239a0315cd4 100644 --- a/buildheader/db.h_4_6 +++ b/buildheader/db.h_4_6 @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/buildheader/make_db_h.c b/buildheader/make_db_h.c index 84815756397..2e4ccedb693 100644 --- a/buildheader/make_db_h.c +++ b/buildheader/make_db_h.c @@ -506,6 +506,10 @@ int main (int argc __attribute__((__unused__)), char *const argv[] __attribute__ printf(" u_int32_t loader_max; /* max number of loaders extant simultaneously */ \n"); printf(" u_int64_t logsuppress; /* number of times logging is suppressed */ \n"); printf(" u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ \n"); + printf(" u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ \n"); + printf(" u_int64_t upgrade_header; /* how many brt headers were upgraded? */ \n"); + printf(" u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ \n"); + printf(" u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ \n"); printf("} ENGINE_STATUS;\n"); print_dbtype(); diff --git a/buildheader/tdb.h b/buildheader/tdb.h index 1901047ff8d..9f57dafb631 100644 --- a/buildheader/tdb.h +++ b/buildheader/tdb.h @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/include/db.h b/include/db.h index 1901047ff8d..9f57dafb631 100644 --- a/include/db.h +++ b/include/db.h @@ -143,6 +143,10 @@ typedef struct __toku_engine_status { u_int32_t loader_max; /* max number of loaders extant simultaneously */ u_int64_t logsuppress; /* number of times logging is suppressed */ u_int64_t logsuppressfail; /* number of times logging cannot be suppressed */ + u_int64_t upgrade_env_status; /* Was an environment upgrade done? What was done? */ + u_int64_t upgrade_header; /* how many brt headers were upgraded? */ + u_int64_t upgrade_nonleaf; /* how many brt nonleaf nodes were upgraded? */ + u_int64_t upgrade_leaf; /* how many brt leaf nodes were upgraded? */ } ENGINE_STATUS; typedef enum { DB_BTREE=1, diff --git a/newbrt/logger.c b/newbrt/logger.c index f5f84ae1c9d..fcd62a322e0 100644 --- a/newbrt/logger.c +++ b/newbrt/logger.c @@ -1247,8 +1247,14 @@ toku_logger_call_remove_finalize_callback(TOKULOGGER logger, DICTIONARY_ID dict_ void toku_logger_get_status(TOKULOGGER logger, LOGGER_STATUS s) { - s->ilock_ctr = logger->input_lock_ctr; - s->olock_ctr = logger->output_condition_lock_ctr; - s->swap_ctr = logger->swap_ctr; + if (logger) { + s->ilock_ctr = logger->input_lock_ctr; + s->olock_ctr = logger->output_condition_lock_ctr; + s->swap_ctr = logger->swap_ctr; + } + else { + s->ilock_ctr = 0; + s->olock_ctr = 0; + s->swap_ctr = 0; + } } - diff --git a/src/ydb.c b/src/ydb.c index 24c3f6eb477..6dc333fdbec 100644 --- a/src/ydb.c +++ b/src/ydb.c @@ -1663,6 +1663,13 @@ env_get_engine_status(DB_ENV * env, ENGINE_STATUS * engstat) { engstat->logsuppress = logsuppress; engstat->logsuppressfail = logsuppressfail; } + { + // dummy values until upgrade logic is complete and counters are available + engstat->upgrade_env_status = 1; + engstat->upgrade_header = 2; + engstat->upgrade_nonleaf = 3; + engstat->upgrade_leaf = 4; + } } return r; } @@ -1760,6 +1767,10 @@ env_get_engine_status_text(DB_ENV * env, char * buff, int bufsiz) { n += snprintf(buff + n, bufsiz - n, "loader_max %"PRIu32"\n", engstat.loader_max); n += snprintf(buff + n, bufsiz - n, "logsuppress %"PRIu64"\n", engstat.logsuppress); n += snprintf(buff + n, bufsiz - n, "logsuppressfail %"PRIu64"\n", engstat.logsuppressfail); + n += snprintf(buff + n, bufsiz - n, "upgrade_env_status %"PRIu64"\n", engstat.upgrade_env_status); + n += snprintf(buff + n, bufsiz - n, "upgrade_header %"PRIu64"\n", engstat.upgrade_header); + n += snprintf(buff + n, bufsiz - n, "upgrade_nonleaf %"PRIu64"\n", engstat.upgrade_nonleaf); + n += snprintf(buff + n, bufsiz - n, "upgrade_leaf %"PRIu64"\n", engstat.upgrade_leaf); if (n > bufsiz) { char * errmsg = "BUFFER TOO SMALL\n"; int len = strlen(errmsg) + 1;