[tarantool-patches] [PATCH v2 2/2] Track wal vclock changes instead of copying
Vladimir Davydov
vdavydov.dev at gmail.com
Thu Feb 14 17:04:54 MSK 2019
On Wed, Feb 13, 2019 at 11:35:17AM +0300, Georgy Kirichenko wrote:
> +/*
> + * Assign lsn and replica identifier for local writes and track
> + * row into vclock_diff.
> + */
> static void
> -wal_assign_lsn(struct vclock *vclock, struct xrow_header **row,
> +wal_assign_lsn(struct vclock *vclock_diff, struct vclock *base,
> + struct xrow_header **row,
> struct xrow_header **end)
> {
> /** Assign LSN to all local rows. */
> for ( ; row < end; row++) {
> if ((*row)->replica_id == 0) {
> - (*row)->lsn = vclock_inc(vclock, instance_id);
> + (*row)->lsn = vclock_inc(vclock_diff, instance_id) +
> + vclock_get(base, instance_id);
> (*row)->replica_id = instance_id;
> } else {
> - vclock_follow_xrow(vclock, *row);
> + vclock_follow(vclock_diff, (*row)->replica_id,
> + (*row)->lsn - vclock_get(base,
> + (*row)->replica_id));
vclock_follow_xrow() checks that LSN doesn't go backwards and panics if
it does.
vclock_follow() doesn't have such check.
More information about the Tarantool-patches
mailing list