[tarantool-patches] Re: [PATCH 9/9] wal: trigger checkpoint if there are too many WALs
Konstantin Osipov
kostja at tarantool.org
Mon Dec 3 23:34:17 MSK 2018
* Vladimir Davydov <vdavydov.dev at gmail.com> [18/11/28 19:16]:
Please avoid using 0 for infinity: Tarantool doesn't use 0 to mean
anything special.
> Closes #1082
>
> @TarantoolBot document
> Title: Document box.cfg.checkpoint_wal_threshold
Please document the default value of the new variable.
Please add checks for the range of valid values of the new
variable, as well as tests for these.
> + int64_t checkpoint_wal_size;
> + /**
> + * If greater than 0
Ugh.
> + , this variable sets a limit on the
> + * total size of WAL files written since the last checkpoint.
> + * Exceeding it will trigger auto checkpointing in tx.
> + */
> + int64_t checkpoint_threshold;
> + bool checkpoint_threshold_signalled;
> + bool checkpoint_threshold_exceeded;
If you had the checkpoint object wit hall the messages in
the wal writer signleton, then the entire checkpoint state,
including this variable, could be easily observed in a single
place. Now that I see this flag I'm more inclined to insist
on having a singleton wal_checkpoint object, inside struct
wal_writer or standalone.
> +void
> +wal_set_checkpoint_threshold(int64_t checkpoint_threshold)
> +{
> + struct wal_writer *writer = &wal_writer_singleton;
> + if (writer->wal_mode == WAL_NONE)
> + return;
> + struct wal_set_checkpoint_threshold_msg msg;
> + msg.checkpoint_threshold = checkpoint_threshold;
> + bool cancellable = fiber_set_cancellable(false);
> + cbus_call(&wal_thread.wal_pipe, &wal_thread.tx_prio_pipe,
> + &msg.base, wal_set_checkpoint_threshold_f, NULL,
> + TIMEOUT_INFINITY);
> + fiber_set_cancellable(cancellable);
> +}
Please add a comment explaining that WAL_NONE is also set when wal
is not yet initialized.
I don't see where you calculate the value of the variable upon
server start. Did I miss this hunk?
--
Konstantin Osipov, Moscow, Russia, +7 903 626 22 32
http://tarantool.io - www.twitter.com/kostja_osipov
More information about the Tarantool-patches
mailing list