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.
vmware
Howard Chu 12 years ago
parent 49289f0d2e
commit 360d0492db
  1. 5
      libraries/liblmdb/mdb.c
  2. 16
      libraries/liblmdb/mdb_stat.c

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

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

Loading…
Cancel
Save