Re: [tabled patch 3/3] Fix metadata replication

Jeff Garzik <[email protected]> Tue, 10 Aug 2010 15:14:19 -0400
Newsgroups org.kernel.vger.hail-devel
Message-ID <[email protected]>
On 08/05/2010 11:40 PM, Pete Zaitcev wrote:
> The metadata replication in tabled nominally existed, but did not
> worked. There were a couple of small bugs (such as an attempt to
> boot directly into Slave state would lead to a hang). However, the
> biggest problem was how the identity of nodes in Replication Manager
> API had to be the same as hostname. When doing so, repmgr code
> used the hostname to bind instead of a wildcard socket. But when
> doing so, on any stock Fedora or RHEL system it would end listening
> on loopback only, because the /etc/hosts aliased the hostname to
> loopback address. Thus running any replication required addition
> host configuration that can cause any kind of unexpected consequences.
> In addition it's impossible to run two nodes on one host for testing.
>
> This patch does away with the Replication Manager and uses Base API
> instead. This way, issues with host aliasing are addressed, and
> the state transitions occur much faster because there is no voting.
>
> Note that the provision is added to run peers on the same host,
> using a configuration clause TDBRepName. I was unable to come up with
> a reliable way to make persistent, nonconflicting identifiers that
> would replace hostnames. Fortunately, this should only be used
> for build tests, where we probably can live with it.
>
> The resulting replication feature was tested to work. Not sure if
> it is enough to trust it with one's data, but it's better than before.
>
> Signed-off-by: Pete Zaitcev<[email protected]>
>
> ---
>   doc/etc.tabled.conf |    8
>   doc/setup.txt       |   13 +
>   include/tdb.h       |   15 -
>   lib/tdb.c           |  130 ++++++-------
>   server/Makefile.am  |    2
>   server/bucket.c     |   34 +--
>   server/cldu.c       |  416 ++++++++++++++++++++++++++++++++++++------
>   server/config.c     |   10 +
>   server/object.c     |   22 +-
>   server/replica.c    |    8
>   server/server.c     |  404 ++++++++++++++++++++++++++++++++++++----
>   server/tabled.h     |   97 +++++++++
>   server/tdbadm.c     |   51 +----
>   13 files changed, 963 insertions(+), 247 deletions(-)

Including metarep.c would be helpful ;-)

Will wait on release for this...