A methodical makeover for CTDB

WhoMartin Schwenke, Amitay Isaacs
WhereLinux.conf.au 2015, Auckland, New Zealand
WhenJanuary 2015

CTDB is the Clustered Trivial Database (TDB) and is used to provide clustering support for Samba. CTDB is a monolithic daemon that provides several different services: clustered database, service monitoring, management of a pool of IP addresses for NAS services, various types of consistency checking... and logging. It isn't exactly monolithic - there are 2 main daemons but functionality isn't cleanly split and there is duplication. Additionally, the protocols are not well defined: just structs on the wire. Things could be better.

In an ideal world we would stop everything else we're doing for a few months, define protocols, restructure everything and, after some time, suddenly release a shiny, brand new version of CTDB. However, that's not going to happen. So, is it possible to do a major restructure of CTDB, with new protocols, in a methodical, step-by-step manner, maintaining some amount of backward compatibility as we go? With CTDB now merged into the Samba source tree, we can't break the Samba build at any stage.

What is the plan? What are the really clever ideas? Is this really possible? Join us on a hacker's tale where we describe where we started, the problems we encountered, where we got to before Linux.conf.au 2015... and what still needs to be done.

SlidesPDF (512.7 kB)