[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#7971) LMDB: Uncarefully appointment when beginning a readonly txn.



Committed to mdb.master

> commit ff0bde6a95bb8ab2355324b65f451216d5ef2a0e
> Author: Leo Yuriev <leo@yuriev.ru>
> Date:   2014-10-18 02:00:37 +0400
>
>      ITS#7971 for LMDB: clarification in  mdb_txn_renew0().
>
> diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
> index 83a15c1..1e766af 100644
> --- a/libraries/liblmdb/mdb.c
> +++ b/libraries/liblmdb/mdb.c
> @@ -2507,15 +2507,16 @@ mdb_txn_renew0(MDB_txn *txn)
>    UNLOCK_MUTEX_R(env);
>    return MDB_READERS_FULL;
>    }
> - ti->mti_readers[i].mr_pid = pid;
> - ti->mti_readers[i].mr_tid = tid;
> + r = &ti->mti_readers[i];
> + r->mr_txnid = (txnid_t)-1;
> + r->mr_tid = tid;
> + r->mr_pid = pid; /* should be written last, see ITS#. */
>    if (i == nr)
>    ti->mti_numreaders = ++nr;
>    /* Save numreaders for un-mutexed mdb_env_close() */
>    env->me_numreaders = nr;
>    UNLOCK_MUTEX_R(env);
>
> - r = &ti->mti_readers[i];
>    new_notls = (env->me_flags & MDB_NOTLS);
>    if (!new_notls && (rc=pthread_setspecific(env->me_txkey, r))) {
>    r->mr_pid = 0;
>
>
>
>


-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/