* [Cluster-devel] [RFC] Killing ccs for good
@ 2007-10-23 7:33 Fabio Massimo Di Nitto
2007-10-23 7:39 ` Fabio Massimo Di Nitto
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Fabio Massimo Di Nitto @ 2007-10-23 7:33 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi everybody,
a few months ago David tickled me with the idea of killing ccs, so I started
poking around for fun here and there and I think that I am at a point where
we can start looking at the work it has been done so far.
What does killing ccs buy us?
- remove of another daemon from the stack with everything that comes with it
(less code to handle, less open ports on the network, less stuff to
synchronize, etc.)
- the option to design a new more useful API.
- add your reason here.
I created a git branch at git.fugedabout.it sandbox to work on this project:
http://git.fugedabout.it/?p=people/fabbione/cluster-noccs.git;a=shortlog;h=noccs
You want to remember that this is a test/private branch and it gets rebased once
in a while (breaking the classic git pull) and it is on a sandbox == *absolutely
no guarantee it will exists in forever*
So far we have:
- removed completely ccs/ from the tree.
- implemented a small libcman API that:
(high level)
- reads random cluster.conf files.
- loads them.
- query them.
(low level)
- handle config conversion from buf to conf and viceversa.
- download/upload the config from/to cman aisexec.
- implemented the basic bits in cman/aisexec.
- converted all services to use the new API (except rgmanager - see below)
The libcman API is not final yet. There might be changes related to the way in
which we upload/download config. The API is missing a bunch of ccs_*
functionalities that would be seen as regression if missing (even tho i doubt
there are that many users out there).
The new API so far offers some interesting bits compared to the ccs_ one
specially on the query front. The way in which queries are done is the same, but
the results are passed in a slightly different way that will help to clean up
all those endless query loops in various services.
The cman/aisexec implementation is really basic at the moment. It doesn't
support downloading of the configuration from the network yet and I have just
spotted a lot of duplicated code that can be simplified by being all in the same
place (and not splitted between ccs and cman).
The patch set in git is not as atomic as it could be. This work started in a
private CVS branch and imported into git almost in one shot. Some commits are
just too big to be of understandable as they should.
We tested the overall with simple configurations and everything seems to work so
far.
What we would like to do next:
- first of all we need to gather consensus if we all want to kill ccs. I have
done enough work now to make a decision but i don't plan to spend more time on
this unless we all agree on what direction to take.
and assuming we have consensus:
- get people to start testing the tree. I expect bugs and regressions even with
those simple changes. This will give us enough input to see if what we have as a
basic start is solid. At this point i don't expect much code review but just
some plain testing in your setups.
- start a general review of the implemented API bits and rgmanager conversion.
This will be a very useful way to force somebody (hi Lon! :)) to review the
entire API in details and use an extra pairs of eyes to smash down what's
missing. rgmanager exercises a lot also external bits like ccs_tools that needs
to be re-implemented in a compatibility form.
- add service config call back: this is going to be a major win over ccs where a
service will register a call back that will be invoked each time there is a
config change. It will simplify a lot the need to config sync as it stands now.
- at the same time that somebody (hi again Lon! ;)) will convert rgmanager, we
will implement the missing ccs bits into cman.
Once the API is stable and tested:
- move the config handler to its own openais service. This will be totally
transparent to the applications and we will rework most of the internal bits
to use the aisexec db.
Thanks
Fabio
PS I am aware of a regression in fence for a recent bug fix that Ryan committed
by adding a new call to ccs_lib. Patrick and I did discuss it on IRC and the
same data are already available in some form within the aisexec / cman db but we
had to no time to convert it yet. This will happen in CVS HEAD as well (if i
understood Patrick correctly as there is no point to store or query the same
information twice).
--
I'm going to make him an offer he can't refuse.
^ permalink raw reply [flat|nested] 7+ messages in thread* [Cluster-devel] [RFC] Killing ccs for good
2007-10-23 7:33 [Cluster-devel] [RFC] Killing ccs for good Fabio Massimo Di Nitto
@ 2007-10-23 7:39 ` Fabio Massimo Di Nitto
2007-10-23 13:17 ` Kevin Anderson
2007-10-23 14:34 ` David Teigland
2 siblings, 0 replies; 7+ messages in thread
From: Fabio Massimo Di Nitto @ 2007-10-23 7:39 UTC (permalink / raw)
To: cluster-devel.redhat.com
For who doesn't want to use git:
http://people.ubuntu.com/~fabbione/noccs.diff
this is based on today's CVS (it's about 380K) so it can't go to the mailing list.
diffstat noccs.diff
b/.gitignore | 1
b/Makefile | 16
b/cman/cman_tool/Makefile | 4
b/cman/cman_tool/cman_tool.h | 2
b/cman/cman_tool/join.c | 10
b/cman/cman_tool/main.c | 5
b/cman/daemon/Makefile | 6
b/cman/daemon/ais.c | 51 -
b/cman/daemon/ais.h | 4
b/cman/daemon/cmanconf.c | 698 ++++++++++++++++++
b/cman/daemon/cmanconf.h | 14
b/cman/daemon/cnxman-private.h | 7
b/cman/daemon/cnxman-socket.h | 2
b/cman/daemon/commands.c | 240 +++++-
b/cman/daemon/commands.h | 4
b/cman/daemon/config.c | 117 +--
b/cman/daemon/daemon.c | 59 +
b/cman/daemon/daemon.h | 4
b/cman/init.d/cman | 62 -
b/cman/lib/Makefile | 19
b/cman/lib/libcman.c | 104 ++
b/cman/lib/libcman.h | 51 +
b/cman/lib/test.c | 159 ++++
b/cman/lib/xml.c | 187 ++++
b/cman/man/cman.5 | 4
b/cman/man/cman_tool.8 | 26
b/cman/qdisk/Makefile | 4
b/cman/qdisk/clulog.c | 1
b/cman/qdisk/main.c | 207 ++---
b/cman/qdisk/score.c | 66 -
b/cman/qdisk/score.h | 4
b/configure | 21
b/dlm/tool/Makefile | 1
b/fence/agents/drac/fence_drac.pl | 2
b/fence/agents/xvm/Makefile | 8
b/fence/agents/xvm/README | 3
b/fence/agents/xvm/fence_xvmd.c | 4
b/fence/agents/xvm/options-cman.c | 119 +++
b/fence/agents/xvm/options.c | 8
b/fence/agents/xvm/options.h | 8
b/fence/fence_node/Makefile | 4
b/fence/fence_node/fence_node.c | 42 -
b/fence/fence_tool/Makefile | 4
b/fence/fence_tool/fence_tool.c | 3
b/fence/fenced/Makefile | 4
b/fence/fenced/agent.c | 159 ++--
b/fence/fenced/fd.h | 8
b/fence/fenced/main.c | 126 +--
b/fence/fenced/member_cman.c | 38
b/fence/fenced/recover.c | 11
b/fence/man/fence_node.8 | 8
b/fence/man/fence_xvmd.8 | 10
b/fence/man/fenced.8 | 2
b/gfs/man/gfs_mount.8 | 1
b/gfs2/man/gfs2_mount.8 | 1
b/group/dlm_controld/Makefile | 4
b/group/dlm_controld/action.c | 254 ++----
b/group/dlm_controld/dlm_controld.h | 5
b/group/dlm_controld/dlm_daemon.h | 2
b/group/dlm_controld/main.c | 12
b/group/dlm_controld/member_cman.c | 11
b/group/gfs_controld/Makefile | 4
b/group/gfs_controld/recover.c | 41 -
b/make/defines.mk.input | 4
ccs/Makefile | 16
ccs/ccs_test/Makefile | 46 -
ccs/ccs_test/ccs_test.c | 195 -----
ccs/ccs_tool/Makefile | 52 -
ccs/ccs_tool/ccs_tool.c | 132 ---
ccs/ccs_tool/editconf.c | 1251 --------------------------------
ccs/ccs_tool/editconf.h | 20
ccs/ccs_tool/old_parser.c | 700 ------------------
ccs/ccs_tool/old_parser.h | 64 -
ccs/ccs_tool/update.c | 684 -----------------
ccs/ccs_tool/update.h | 18
ccs/ccs_tool/upgrade.c | 270 ------
ccs/ccs_tool/upgrade.h | 18
ccs/common/log.c | 23
ccs/common/log.h | 98 --
ccs/daemon/Makefile | 52 -
ccs/daemon/ccsd.c | 906 -----------------------
ccs/daemon/cluster_mgr.c | 699 ------------------
ccs/daemon/cluster_mgr.h | 17
ccs/daemon/cnx_mgr.c | 1392 ------------------------------------
ccs/daemon/cnx_mgr.h | 19
ccs/daemon/globals.c | 30
ccs/daemon/globals.h | 35
ccs/daemon/misc.c | 161 ----
ccs/daemon/misc.h | 30
ccs/include/comm_headers.h | 60 -
ccs/include/debug.h | 24
ccs/lib/Makefile | 47 -
ccs/lib/ccs.h | 25
ccs/lib/libccs.c | 799 --------------------
ccs/man/Makefile | 31
ccs/man/ccs.7 | 28
ccs/man/ccs_test.8 | 138 ---
ccs/man/ccs_tool.8 | 192 ----
ccs/man/ccsd.8 | 78 --
ccs/man/cluster.conf.5 | 65 -
cman/daemon/cmanccs.c | 722 ------------------
cman/daemon/cmanccs.h | 14
fence/agents/xvm/options-ccs.c | 115 --
103 files changed, 2208 insertions(+), 10128 deletions(-)
--
I'm going to make him an offer he can't refuse.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Cluster-devel] [RFC] Killing ccs for good
2007-10-23 7:33 [Cluster-devel] [RFC] Killing ccs for good Fabio Massimo Di Nitto
2007-10-23 7:39 ` Fabio Massimo Di Nitto
@ 2007-10-23 13:17 ` Kevin Anderson
2007-10-23 17:05 ` Fabio Massimo Di Nitto
2007-10-30 9:54 ` Patrick Caulfield
2007-10-23 14:34 ` David Teigland
2 siblings, 2 replies; 7+ messages in thread
From: Kevin Anderson @ 2007-10-23 13:17 UTC (permalink / raw)
To: cluster-devel.redhat.com
On Tue, 2007-10-23 at 09:33 +0200, Fabio Massimo Di Nitto wrote:
> Hi everybody,
>
> a few months ago David tickled me with the idea of killing ccs, so I started
> poking around for fun here and there and I think that I am at a point where
> we can start looking at the work it has been done so far.
>
> What does killing ccs buy us?
>
> - remove of another daemon from the stack with everything that comes with it
> (less code to handle, less open ports on the network, less stuff to
> synchronize, etc.)
> - the option to design a new more useful API.
> - add your reason here.
>
> I created a git branch at git.fugedabout.it sandbox to work on this project:
>
> http://git.fugedabout.it/?p=people/fabbione/cluster-noccs.git;a=shortlog;h=noccs
>
> You want to remember that this is a test/private branch and it gets rebased once
> in a while (breaking the classic git pull) and it is on a sandbox == *absolutely
> no guarantee it will exists in forever*
>
> So far we have:
>
> - removed completely ccs/ from the tree.
> - implemented a small libcman API that:
> (high level)
> - reads random cluster.conf files.
> - loads them.
> - query them.
> (low level)
> - handle config conversion from buf to conf and viceversa.
> - download/upload the config from/to cman aisexec.
> - implemented the basic bits in cman/aisexec.
> - converted all services to use the new API (except rgmanager - see below)
>
> The libcman API is not final yet. There might be changes related to the way in
> which we upload/download config. The API is missing a bunch of ccs_*
> functionalities that would be seen as regression if missing (even tho i doubt
> there are that many users out there).
Some of the "hidden" features of ccs are the ability to create the
configuration files through command line scripting. You could at least
create a cluster and add nodes, although doesn't provide the ability to
do everything the cluster.conf file. A command line interface to the
cluster configuration that covers all aspects of the cluster.conf file
would be needed before we can remove ccs from the system. One of the
things missing from the ccs_tool are adding rgmanager services, am sure
we are missing other features as well.
Kevin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20071023/ef6891d6/attachment.htm>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Cluster-devel] [RFC] Killing ccs for good
2007-10-23 13:17 ` Kevin Anderson
@ 2007-10-23 17:05 ` Fabio Massimo Di Nitto
2007-10-30 9:54 ` Patrick Caulfield
1 sibling, 0 replies; 7+ messages in thread
From: Fabio Massimo Di Nitto @ 2007-10-23 17:05 UTC (permalink / raw)
To: cluster-devel.redhat.com
Kevin Anderson wrote:
>>
>> The libcman API is not final yet. There might be changes related to the way in
>> which we upload/download config. The API is missing a bunch of ccs_*
>> functionalities that would be seen as regression if missing (even tho i doubt
>> there are that many users out there).
>
> Some of the "hidden" features of ccs are the ability to create the
> configuration files through command line scripting. You could at least
> create a cluster and add nodes, although doesn't provide the ability to
> do everything the cluster.conf file. A command line interface to the
> cluster configuration that covers all aspects of the cluster.conf file
> would be needed before we can remove ccs from the system. One of the
> things missing from the ccs_tool are adding rgmanager services, am sure
> we are missing other features as well.
Yes I am aware of the stuff that ccs_tool does and most of them will require
porting to the new API. Thing is that given the stage where we are now, we can
adapt the API and the tools to be more powerful. Something that is difficult to
achieve with ccs_tool because we don't exactly know how many clients it has out
there and we don't want to break them.
With a well known API change in the process we can expect that those tools will
be ported and as a benefit we can get rid of old compatibility bits that we are
carrying around.
Fabio
--
I'm going to make him an offer he can't refuse.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Cluster-devel] [RFC] Killing ccs for good
2007-10-23 13:17 ` Kevin Anderson
2007-10-23 17:05 ` Fabio Massimo Di Nitto
@ 2007-10-30 9:54 ` Patrick Caulfield
1 sibling, 0 replies; 7+ messages in thread
From: Patrick Caulfield @ 2007-10-30 9:54 UTC (permalink / raw)
To: cluster-devel.redhat.com
Kevin Anderson wrote:
> On Tue, 2007-10-23 at 09:33 +0200, Fabio Massimo Di Nitto wrote:
>> Hi everybody,
>>
>> a few months ago David tickled me with the idea of killing ccs, so I started
>> poking around for fun here and there and I think that I am at a point where
>> we can start looking at the work it has been done so far.
>>
>> What does killing ccs buy us?
>>
>> - remove of another daemon from the stack with everything that comes with it
>> (less code to handle, less open ports on the network, less stuff to
>> synchronize, etc.)
>> - the option to design a new more useful API.
>> - add your reason here.
>>
>> I created a git branch at git.fugedabout.it sandbox to work on this project:
>>
>> http://git.fugedabout.it/?p=people/fabbione/cluster-noccs.git;a=shortlog;h=noccs
>>
>> You want to remember that this is a test/private branch and it gets rebased once
>> in a while (breaking the classic git pull) and it is on a sandbox == *absolutely
>> no guarantee it will exists in forever*
>>
>> So far we have:
>>
>> - removed completely ccs/ from the tree.
>> - implemented a small libcman API that:
>> (high level)
>> - reads random cluster.conf files.
>> - loads them.
>> - query them.
>> (low level)
>> - handle config conversion from buf to conf and viceversa.
>> - download/upload the config from/to cman aisexec.
>> - implemented the basic bits in cman/aisexec.
>> - converted all services to use the new API (except rgmanager - see below)
>>
>> The libcman API is not final yet. There might be changes related to the way in
>> which we upload/download config. The API is missing a bunch of ccs_*
>> functionalities that would be seen as regression if missing (even tho i doubt
>> there are that many users out there).
>
> Some of the "hidden" features of ccs are the ability to create the
> configuration files through command line scripting. You could at least
> create a cluster and add nodes, although doesn't provide the ability to
> do everything the cluster.conf file. A command line interface to the
> cluster configuration that covers all aspects of the cluster.conf file
> would be needed before we can remove ccs from the system. One of the
> things missing from the ccs_tool are adding rgmanager services, am sure
> we are missing other features as well.
Actually the bit of ccs_tool reads and writes the XML file directly and will
need very minimal porting. The only ccs API it uses is to notify ccsd that the
config file has changed.
--
Patrick
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street,
Windsor, Berkshire, SL4 ITE, UK.
Registered in England and Wales under Company Registration No. 3798903
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Cluster-devel] [RFC] Killing ccs for good
2007-10-23 7:33 [Cluster-devel] [RFC] Killing ccs for good Fabio Massimo Di Nitto
2007-10-23 7:39 ` Fabio Massimo Di Nitto
2007-10-23 13:17 ` Kevin Anderson
@ 2007-10-23 14:34 ` David Teigland
2007-10-23 17:10 ` Fabio Massimo Di Nitto
2 siblings, 1 reply; 7+ messages in thread
From: David Teigland @ 2007-10-23 14:34 UTC (permalink / raw)
To: cluster-devel.redhat.com
On Tue, Oct 23, 2007 at 09:33:17AM +0200, Fabio Massimo Di Nitto wrote:
>
> Hi everybody,
>
> a few months ago David tickled me with the idea of killing ccs, so I started
> poking around for fun here and there and I think that I am at a point where
> we can start looking at the work it has been done so far.
>
> What does killing ccs buy us?
>
> - remove of another daemon from the stack with everything that comes with it
> (less code to handle, less open ports on the network, less stuff to
> synchronize, etc.)
> - the option to design a new more useful API.
> - add your reason here.
Getting rid of the artificial separation between cman and ccs was
definately one of the motivations. The other big one was to separate
basic cluster.conf queries from the remote update/syncing mechanisms.
I'd like to see a completely new (and simple!) method of updating/syncing
cluster.conf files around the cluster, that's completely separate from the
code that supports cluster.conf queries.
> We tested the overall with simple configurations and everything seems to
> work so far.
>
> What we would like to do next:
...
> - move the config handler to its own openais service. This will be totally
> transparent to the applications and we will rework most of the internal bits
> to use the aisexec db.
I think we should get this last bit done before investing too much time in
the apps... just in case this transition to openais involves more change
than we anticipate.
Thanks for tackling all this, it's looking great.
Dave
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Cluster-devel] [RFC] Killing ccs for good
2007-10-23 14:34 ` David Teigland
@ 2007-10-23 17:10 ` Fabio Massimo Di Nitto
0 siblings, 0 replies; 7+ messages in thread
From: Fabio Massimo Di Nitto @ 2007-10-23 17:10 UTC (permalink / raw)
To: cluster-devel.redhat.com
David Teigland wrote:
> Getting rid of the artificial separation between cman and ccs was
> definately one of the motivations. The other big one was to separate
> basic cluster.conf queries from the remote update/syncing mechanisms.
> I'd like to see a completely new (and simple!) method of updating/syncing
> cluster.conf files around the cluster, that's completely separate from the
> code that supports cluster.conf queries.
This is somewhat achieved already. queries and handling of the conf is all done
in the library. cman/aisexec takes care of synchronizing.
You can already upload new configs and they are propagate through the cluster.
See the cman/lib/test.c code snippets that i did check in by mistake :)
it has one update_config example in 3/4 calls.
>> - move the config handler to its own openais service. This will be totally
>> transparent to the applications and we will rework most of the internal bits
>> to use the aisexec db.
>
> I think we should get this last bit done before investing too much time in
> the apps... just in case this transition to openais involves more change
> than we anticipate.
While i would generally agree on this bit, we are somewhat pending some changes
in the aisexec db that is still lacking some functionalities. I would prefer to
see a reliable and functional backend before switching.
Anyway 90% of the apps are ported.. modulo rgmanager and bugs..
> Thanks for tackling all this, it's looking great.
No problem :) it's fun.. really
Fabio
--
I'm going to make him an offer he can't refuse.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-10-30 9:54 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-23 7:33 [Cluster-devel] [RFC] Killing ccs for good Fabio Massimo Di Nitto
2007-10-23 7:39 ` Fabio Massimo Di Nitto
2007-10-23 13:17 ` Kevin Anderson
2007-10-23 17:05 ` Fabio Massimo Di Nitto
2007-10-30 9:54 ` Patrick Caulfield
2007-10-23 14:34 ` David Teigland
2007-10-23 17:10 ` Fabio Massimo Di Nitto
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).