[PATCH] vclock: fix big lsn handling

Vladimir Davydov vdavydov.dev at gmail.com
Thu Mar 7 19:11:37 MSK 2019


On Thu, Mar 07, 2019 at 05:58:58PM +0300, Vladimir Davydov wrote:
> Fixes commit 8031071efa94 ("Lightweight vclock_create and vclock_copy").
> 
> Closes #4033
> ---
> https://github.com/tarantool/tarantool/issues/4033
> https://github.com/tarantool/tarantool/commits/dv/gh-4033-fix-crash-on-big-lsn
> 
>  src/box/vclock.h             |  2 +-
>  test/xlog-py/big_lsn.result  | 29 +++++++++++++++++++++++++++++
>  test/xlog-py/big_lsn.test.py | 39 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 69 insertions(+), 1 deletion(-)
>  create mode 100644 test/xlog-py/big_lsn.result
>  create mode 100644 test/xlog-py/big_lsn.test.py
> 
> diff --git a/src/box/vclock.h b/src/box/vclock.h
> index 1a174c1e..f9633ac9 100644
> --- a/src/box/vclock.h
> +++ b/src/box/vclock.h
> @@ -165,7 +165,7 @@ vclock_get(const struct vclock *vclock, uint32_t replica_id)
>  	 */
>  	replica_id &= VCLOCK_MAX - 1;
>  	/* Evaluate a bitmask to avoid branching. */
> -	int64_t mask = 0 - ((vclock->map >> replica_id) & 0x1);
> +	int64_t mask = 0ULL - ((vclock->map >> replica_id) & 0x1);
>  	return mask & vclock->lsn[replica_id];
>  }

Trivial. Pushed to 2.1 and 1.10.



More information about the Tarantool-patches mailing list