Tweak mdb_stat(1)

Don't obtain reader txn before displaying reader table. Exit
after reader table if no other DB query options were given.
This commit is contained in:
Howard Chu 2013-07-18 08:33:24 -07:00
parent 49289f0d2e
commit 360d0492db
2 changed files with 14 additions and 7 deletions

View File

@ -7926,7 +7926,7 @@ int mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx)
if (!env || !func)
return -1;
if (!env->me_txns) {
return func("No reader locks\n", ctx);
return func("(no reader locks)\n", ctx);
}
rdrs = env->me_numreaders;
mr = env->me_txns->mti_readers;
@ -7949,6 +7949,9 @@ int mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx)
return rc;
}
}
if (first) {
func("(no active readers)\n", ctx);
}
return 0;
}
/** @} */

View File

@ -31,7 +31,7 @@ static void prstat(MDB_stat *ms)
static void usage(char *prog)
{
fprintf(stderr, "usage: %s dbpath [-e] [-f[f[f]]] [-n] [-a|-s subdb] [-r]\n", prog);
fprintf(stderr, "usage: %s dbpath [-n] [-e] [-r] | [-f[f[f]]] [-a|-s subdb]\n", prog);
exit(EXIT_FAILURE);
}
@ -56,6 +56,7 @@ int main(int argc, char *argv[])
* -s: print stat of only the named subDB
* -e: print env info
* -f: print freelist info
* -r: print reader info
* -n: use NOSUBDIR flag on env_open
* (default) print stat of only the main DB
*/
@ -103,11 +104,6 @@ int main(int argc, char *argv[])
printf("mdb_env_open failed, error %d %s\n", rc, mdb_strerror(rc));
goto env_close;
}
rc = mdb_txn_begin(env, NULL, MDB_RDONLY, &txn);
if (rc) {
printf("mdb_txn_begin failed, error %d %s\n", rc, mdb_strerror(rc));
goto env_close;
}
if (envinfo) {
rc = mdb_env_stat(env, &mst);
@ -126,6 +122,14 @@ int main(int argc, char *argv[])
if (rdrinfo) {
printf("Reader Table Status\n");
rc = mdb_reader_list(env, (MDB_msg_func *)fputs, stdout);
if (!(subname || alldbs || freinfo))
goto env_close;
}
rc = mdb_txn_begin(env, NULL, MDB_RDONLY, &txn);
if (rc) {
printf("mdb_txn_begin failed, error %d %s\n", rc, mdb_strerror(rc));
goto env_close;
}
if (freinfo) {