[Tarantool-patches] [PATCH v11 1/8] box: fix bootstrap comment

Cyrill Gorcunov gorcunov at gmail.com
Sun Apr 5 10:56:22 MSK 2020


On Sun, Apr 05, 2020 at 10:31:40AM +0300, Konstantin Osipov wrote:
> * Cyrill Gorcunov <gorcunov at gmail.com> [20/04/05 05:06]:
> > We're not starting new master node but
> > a new instance instead. The comment simply
> > leftover from older modifications.
> 
> I wrote it and it had a meaning. If we call bootstrap, it's
> definitely a new master here, because we're creating a new
> replicaset uuid.

Wait, this looks vague. Here what we have inside

/**
 * Bootstrap a new instance either as the first master in a
 * replica set or as a replica of an existing master.
 *
 * @param[out] is_bootstrap_leader  set if this instance is
 *                                  the leader of a new cluster
 */
static void
bootstrap(const struct tt_uuid *instance_uuid,
	  const struct tt_uuid *replicaset_uuid,
	  bool *is_bootstrap_leader)
{
	...
	/* Use the first replica by URI as a bootstrap leader */
	struct replica *master = replicaset_leader();
	assert(master == NULL || master->applier != NULL);

	if (master != NULL && !tt_uuid_is_equal(&master->uuid, &INSTANCE_UUID)) {
		bootstrap_from_master(master);
		/* Check replica set UUID */
		if (!tt_uuid_is_nil(replicaset_uuid) &&
		    !tt_uuid_is_equal(replicaset_uuid, &REPLICASET_UUID)) {
			tnt_raise(ClientError, ER_REPLICASET_UUID_MISMATCH,
				  tt_uuid_str(replicaset_uuid),
				  tt_uuid_str(&REPLICASET_UUID));
		}
	} else {
		bootstrap_master(replicaset_uuid);
		*is_bootstrap_leader = true;
	}
	...
}

Either comment in the function description is wrong, either the
comment I modified was wrong. Or maybe I don't understand terminology.
Who is master and who is slave node?


More information about the Tarantool-patches mailing list