Tweak mdb_envinfo numreaders
authorHoward Chu <hyc@symas.com>
Mon, 29 Jul 2013 00:02:51 +0000 (17:02 -0700)
committerHoward Chu <hyc@symas.com>
Mon, 29 Jul 2013 00:02:51 +0000 (17:02 -0700)
Return the actual shared reader count when it exists, not
just the current process env's reader count.

libraries/liblmdb/mdb.c

index 23f1ecd..595cb65 100644 (file)
@@ -7682,7 +7682,12 @@ mdb_env_info(MDB_env *env, MDB_envinfo *arg)
        arg->me_mapaddr = (env->me_flags & MDB_FIXEDMAP) ? env->me_map : 0;
        arg->me_mapsize = env->me_mapsize;
        arg->me_maxreaders = env->me_maxreaders;
-       arg->me_numreaders = env->me_numreaders;
+
+       /* me_numreaders may be zero if this process never used any readers. Use
+        * the shared numreader count if it exists.
+        */
+       arg->me_numreaders = env->me_txns ? env->me_txns->mti_numreaders : env->me_numreaders;
+
        arg->me_last_pgno = env->me_metas[toggle]->mm_last_pg;
        arg->me_last_txnid = env->me_metas[toggle]->mm_txnid;
        return MDB_SUCCESS;