]> git.saurik.com Git - redis.git/commit - src/redis.h
REPLCONF internal command introduced.
authorantirez <antirez@gmail.com>
Tue, 26 Jun 2012 07:47:47 +0000 (09:47 +0200)
committerantirez <antirez@gmail.com>
Sat, 7 Jul 2012 15:24:33 +0000 (17:24 +0200)
commitdbd8c753c43b83fd326acc7974768261589b239e
tree679f04ad482c9dd7faa6ee8a984f516ae1b4335d
parentb3f28b90d29f28458d4cb00382ff988a98750d05
REPLCONF internal command introduced.

The REPLCONF command is an internal command (not designed to be directly
used by normal clients) that allows a slave to set some replication
related state in the master before issuing SYNC to start the
replication.

The initial motivation for this command, and the only reason currently
it is used by the implementation, is to let the slave instance
communicate its listening port to the slave, so that the master can
show all the slaves with their listening ports in the "replication"
section of the INFO output.

This allows clients to auto discover and query all the slaves attached
into a master.

Currently only a single option of the REPLCONF command is supported, and
it is called "listening-port", so the slave now starts the replication
process with something like the following chat:

    REPLCONF listening-prot 6380
    SYNC

Note that this works even if the master is an older version of Redis and
does not understand REPLCONF, because the slave ignores the REPLCONF
error.

In the future REPLCONF can be used for partial replication and other
replication related features where there is the need to exchange
information between master and slave.

NOTE: This commit also fixes a bug: the INFO outout already carried
information about slaves, but the port was broken, and was obtained
with getpeername(2), so it was actually just the ephemeral port used
by the slave to connect to the master as a client.
src/networking.c
src/redis.c
src/redis.h
src/replication.c