[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#7971) LMDB: Uncarefully appointment when beginning a readonly txn.
- To: openldap-its@OpenLDAP.org
- Subject: Re: (ITS#7971) LMDB: Uncarefully appointment when beginning a readonly txn.
- From: hyc@symas.com
- Date: Sat, 18 Oct 2014 06:15:22 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
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/