You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@karaf.apache.org by Jean-Baptiste Onofré <jb...@nanthrax.net> on 2014/11/11 14:41:43 UTC

[PROPOSAL] Cellar behaviour change for Cellar 2.3.4/3.0.1/2.4.0/4.0.0.M1

Hi all,

Currently, we see some annoying side effects when using Cellar (with its 
default configuration), especially some bundles stopped whereas they 
should not, and sync issue when new nodes join.

I would like to propose the following change in the Cellar behaviour:

1/ Currently, Cellar use "listeners" that get the local node changes 
(like installation of a bundle, a feature, etc), and broadcast the 
changes to the entire cluster. The problem with that is that it sync 
"bad" events (like bundles stop when you stop the node for instance). I 
would like to disable the listeners by default, and "force" the users to 
use the cluster:* dedicated commands to update the cluster state.
Of course, the user can use a flag to enable the listeners, but at his 
own risk ;)

2/ When a new node joins the cluster, Cellar uses a synchronizer (per 
resource, one for features, one for bundles, etc) to "merge" the local 
node state and the cluster state (it's push/pull for the state). But, 
actually, this "merge" doesn't really make sense for joining node. I 
think the first node of the cluster should push his state to the 
cluster, but the new joining nodes state should be overwritten by the 
cluster (the cluster should be the master). I propose to introduce a 
configuration flag defining who is the master (cluster or node): if it's 
the cluster, the synchronizer overwrites the local node state with the 
cluster state, if it's the node, the synchronizer overwrite the cluster 
state with the local node state.

3/ I added new HTTP support in Cellar, allowing to sync the HTTP session 
and load balance the request on the different nodes of the cluster. I 
will blog about this to explain how it works.

4/ I added also some new centralized feature in Cellar (like central log 
view, etc). I will blog about this as well.

I already created the Jira about that.

My question is more about the Cellar 2.3.4 and 3.0.1 releases. I think 
it makes sense to include those changes asap so that's why I would like 
to push (of course documenting and announcing the changes) in the next 
Cellar minor releases.

WDYT ?

Thanks
Regards
JB
-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: [PROPOSAL] Cellar behaviour change for Cellar 2.3.4/3.0.1/2.4.0/4.0.0.M1

Posted by Achim Nierbeck <bc...@googlemail.com>.
Hi JB,

+1 from my side, cause right now the sync issue is more then annoying.
Sometimes the complete cluster starts to swing back and forth between start
and stop eventually crashing.

regards, Achim

2014-11-11 14:41 GMT+01:00 Jean-Baptiste Onofré <jb...@nanthrax.net>:

> Hi all,
>
> Currently, we see some annoying side effects when using Cellar (with its
> default configuration), especially some bundles stopped whereas they should
> not, and sync issue when new nodes join.
>
> I would like to propose the following change in the Cellar behaviour:
>
> 1/ Currently, Cellar use "listeners" that get the local node changes (like
> installation of a bundle, a feature, etc), and broadcast the changes to the
> entire cluster. The problem with that is that it sync "bad" events (like
> bundles stop when you stop the node for instance). I would like to disable
> the listeners by default, and "force" the users to use the cluster:*
> dedicated commands to update the cluster state.
> Of course, the user can use a flag to enable the listeners, but at his own
> risk ;)
>
> 2/ When a new node joins the cluster, Cellar uses a synchronizer (per
> resource, one for features, one for bundles, etc) to "merge" the local node
> state and the cluster state (it's push/pull for the state). But, actually,
> this "merge" doesn't really make sense for joining node. I think the first
> node of the cluster should push his state to the cluster, but the new
> joining nodes state should be overwritten by the cluster (the cluster
> should be the master). I propose to introduce a configuration flag defining
> who is the master (cluster or node): if it's the cluster, the synchronizer
> overwrites the local node state with the cluster state, if it's the node,
> the synchronizer overwrite the cluster state with the local node state.
>
> 3/ I added new HTTP support in Cellar, allowing to sync the HTTP session
> and load balance the request on the different nodes of the cluster. I will
> blog about this to explain how it works.
>
> 4/ I added also some new centralized feature in Cellar (like central log
> view, etc). I will blog about this as well.
>
> I already created the Jira about that.
>
> My question is more about the Cellar 2.3.4 and 3.0.1 releases. I think it
> makes sense to include those changes asap so that's why I would like to
> push (of course documenting and announcing the changes) in the next Cellar
> minor releases.
>
> WDYT ?
>
> Thanks
> Regards
> JB
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>



-- 

Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>

Software Architect / Project Manager / Scrum Master

Re: [PROPOSAL] Cellar behaviour change for Cellar 2.3.4/3.0.1/2.4.0/4.0.0.M1

Posted by Christian Schneider <ch...@die-schneider.net>.
+1 to 1 and 2

I hope this can make cellar act in a more predictable manner.
I think 3-4 are more informative for us. Anyway they also sound good.

Christian

On 11.11.2014 14:41, Jean-Baptiste Onofré wrote:
> Hi all,
>
> Currently, we see some annoying side effects when using Cellar (with 
> its default configuration), especially some bundles stopped whereas 
> they should not, and sync issue when new nodes join.
>
> I would like to propose the following change in the Cellar behaviour:
>
> 1/ Currently, Cellar use "listeners" that get the local node changes 
> (like installation of a bundle, a feature, etc), and broadcast the 
> changes to the entire cluster. The problem with that is that it sync 
> "bad" events (like bundles stop when you stop the node for instance). 
> I would like to disable the listeners by default, and "force" the 
> users to use the cluster:* dedicated commands to update the cluster 
> state.
> Of course, the user can use a flag to enable the listeners, but at his 
> own risk ;)
>
> 2/ When a new node joins the cluster, Cellar uses a synchronizer (per 
> resource, one for features, one for bundles, etc) to "merge" the local 
> node state and the cluster state (it's push/pull for the state). But, 
> actually, this "merge" doesn't really make sense for joining node. I 
> think the first node of the cluster should push his state to the 
> cluster, but the new joining nodes state should be overwritten by the 
> cluster (the cluster should be the master). I propose to introduce a 
> configuration flag defining who is the master (cluster or node): if 
> it's the cluster, the synchronizer overwrites the local node state 
> with the cluster state, if it's the node, the synchronizer overwrite 
> the cluster state with the local node state.
>
> 3/ I added new HTTP support in Cellar, allowing to sync the HTTP 
> session and load balance the request on the different nodes of the 
> cluster. I will blog about this to explain how it works.
>
> 4/ I added also some new centralized feature in Cellar (like central 
> log view, etc). I will blog about this as well.
>
> I already created the Jira about that.
>
> My question is more about the Cellar 2.3.4 and 3.0.1 releases. I think 
> it makes sense to include those changes asap so that's why I would 
> like to push (of course documenting and announcing the changes) in the 
> next Cellar minor releases.
>
> WDYT ?
>
> Thanks
> Regards
> JB


-- 
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com


Re: [PROPOSAL] Cellar behaviour change for Cellar 2.3.4/3.0.1/2.4.0/4.0.0.M1

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi all,

FYI,

I implemented the behaviours change on Cellar master (3.0.1-SNAPSHOT).

The tests look good.

I'm moving forward in some cleanup/refactorings/improvements (especially 
the HTTP part).
When done, I will merge on Cellar 2.3.x.

If you have some time to do tests on your side, that would be great.

Thanks !
Regards
JB

On 11/11/2014 02:41 PM, Jean-Baptiste Onofré wrote:
> Hi all,
>
> Currently, we see some annoying side effects when using Cellar (with its
> default configuration), especially some bundles stopped whereas they
> should not, and sync issue when new nodes join.
>
> I would like to propose the following change in the Cellar behaviour:
>
> 1/ Currently, Cellar use "listeners" that get the local node changes
> (like installation of a bundle, a feature, etc), and broadcast the
> changes to the entire cluster. The problem with that is that it sync
> "bad" events (like bundles stop when you stop the node for instance). I
> would like to disable the listeners by default, and "force" the users to
> use the cluster:* dedicated commands to update the cluster state.
> Of course, the user can use a flag to enable the listeners, but at his
> own risk ;)
>
> 2/ When a new node joins the cluster, Cellar uses a synchronizer (per
> resource, one for features, one for bundles, etc) to "merge" the local
> node state and the cluster state (it's push/pull for the state). But,
> actually, this "merge" doesn't really make sense for joining node. I
> think the first node of the cluster should push his state to the
> cluster, but the new joining nodes state should be overwritten by the
> cluster (the cluster should be the master). I propose to introduce a
> configuration flag defining who is the master (cluster or node): if it's
> the cluster, the synchronizer overwrites the local node state with the
> cluster state, if it's the node, the synchronizer overwrite the cluster
> state with the local node state.
>
> 3/ I added new HTTP support in Cellar, allowing to sync the HTTP session
> and load balance the request on the different nodes of the cluster. I
> will blog about this to explain how it works.
>
> 4/ I added also some new centralized feature in Cellar (like central log
> view, etc). I will blog about this as well.
>
> I already created the Jira about that.
>
> My question is more about the Cellar 2.3.4 and 3.0.1 releases. I think
> it makes sense to include those changes asap so that's why I would like
> to push (of course documenting and announcing the changes) in the next
> Cellar minor releases.
>
> WDYT ?
>
> Thanks
> Regards
> JB

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com