[Tarantool-patches] [PATCH] relay: move relay_schedule_pending_gc before status update

Kirill Yukhin kyukhin at tarantool.org
Thu Apr 16 15:37:27 MSK 2020


Hello,

On 16 апр 15:06, Serge Petrenko wrote:
> relay_schedule_pending_gc() is executed after relay status update,
> which made perfect sense before we've introduced local spaces rework, making
> local space operations use a special instance id: 0.
> Relay status update is performed only when the remote instance has
> reported a bigger vclock, than its previous one. However, we may have an
> entire WAL file filled with local space changes, in which case the
> changes won't be transmitted to replica, and it will report the same
> vclock as before, postponing the scheduled gc until a non-local row is
> created on master.
> 
> Fix this by reordering relay_schedule_pending_gc() and relay status
> update. In case nothing new is added to pending_gc queue and replica
> clock is not updated, relay_schedule_pending_gc() will exit on the first
> loop iteration, so it doesn't add an overhead.
> 
> Also make relay_schedule_pending_gc() use vclock_compare_ignore0() instead
> of plain vclock_compare().
> 
> Follow-up #4114
> ---
> This code was present in v5 of the patchset regarding local space replication
> rework, but I accidentally threw it  away during the review. Sorry.
> The letter was "[PATCH v5 2/4] replication: hide 0-th vclock components in
> replication responses"
> 
> Branch:  https://github.com/tarantool/tarantool/tree/sp/relay-gc-fix

LGTM.
I've checked your patch into 2.3 and master.

--
Regards, Kirill Yukhin


More information about the Tarantool-patches mailing list