On Thu, Aug 27, 2009 at 8:47 PM, Andreas Veithen
<andreas.veit...@gmail.com>wrote:

> >>
> > In Axis2, specially in production hot deployment is not something people
> > are going to use regularly. So downtown or hot-update is not an big
> > issues (rather they will turn off both hot-deployment and hot-update)
>
> Does the Axis2 deployment mechanism lack this kind of features because
> people don't use it regularly, or do people not use it regularly
> because it lacks these features?


In my experience so far, people do use / leave hot deployment around but the
deployment processes effectively disable it. That is, in no production
setting is the developer allowed to update the config of a running server by
logging into it :). In one case I know of someone who's updating the
(Synapse) system config multiple times a day but does it by putting their
servers into "service mode" in a round-robin fashion but that's the type of
care someone must take to "hot update" a production system. In service mode
the server doesn't accept any more messages but processes the messages that
were in flight before doing system updates. So effectively he brings a node
in a cluster down without affecting service response. However, it does
result in a period of time where the servers have different versions of
stuff deployed (I think).

However, for developers this is very useful ... its like being able to edit
a JSP and just refresh the page. Imagine if you had to redeploy the war file
to get that to work?!

IMO the deployer interface needs an update() method which the deployment
logic calls after it determines (somehow) that the service needs to be
updated. If we're changing the signature then we might as well do ti right
rather than hacking it in (by passing a filename).

Then there's the question of how to do the update - ideal is to let messages
that are already being processed be processed by the still active version
and to direct new messages to the new version. I'm not sure that's
implementable though .. or it would require one to bring that concept into
dispatchers etc. to do the right thing. Ideal is for it to be burnt into the
AxisConfig but that's a *huge* change. If its considered a developer level
feature then the current style is ok - just yank the old one and put the new
one in.

So to answer your question - IMO its because its VERY hard to hot update a
system and not have weird/inconsistent behavior. If you absolutely need 24x7
operation with zero (scheduled) downtime then of course you need to do
something like what I explained above and then clearly understand the issues
related to different nodes having different versions of the service around.
Its much easier to have a scheduled downtime.

Sanjiva.
-- 
Sanjiva Weerawarana, Ph.D.
Founder, Director & Chief Scientist; Lanka Software Foundation;
http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/

Blog: http://sanjiva.weerawarana.org/

Reply via email to