For my $0.02, I really think it would be nice if ZK supported
"lightweight transactions". By that, I simply mean that a batch of
create/update/delete requests could be submitted in a single request,
and be processed atomically (if any of the requests would fail, none
are applied).
I know transactions have been discussed before and discarded as adding
too much complexity, but I think a simple version of transactions
would be extremely helpful. A significant portion of our code is
cleanup/workarounds for the inability to make several updates
atomically. Should the time allow for me to work on any single
feature, that's probably the one I would pick, although I'm concerned
that there would be resistance to accepting upstream.

-Dave Wright

On Mon, Aug 23, 2010 at 6:51 PM, Gustavo Niemeyer <gust...@niemeyer.net> wrote:
> Hi Mahadev,
>
>>  Usually the paradigm I like to suggest is to have something like
>>
>> /A/init
>>
>> Every client watches for the existence of this node and this node is only
>> created after /A has been initialized with the creation of /A/C or other
>> stuff.
>>
>> Would that work for you?
>
> Yeah, this is what I referred to as "liveness nodes" in my prior
> ramblings, but I'm a bit sad about the amount of boilerplate work that
> will have to be done to put use something like this.  It feels like as
> the size of the problem increases, it might become a bit hard to keep
> the whole picture in mind.
>
> Here is a slightly more realistic example (still significantly
> reduced), to give you an idea of the problem size:
>
> /services/wordpress/settings
> /services/wordpress/units/wordpress-0/agent-connected
> /services/wordpress/units/wordpress-1
> /machines/machine-0/agent-connected
> /machines/machine-0/units/wordpress-1
> /machines/machine-1/units/wordpress-0
>
> There are quite a few dynamic nodes here which are created and
> initialized on demand.  If we use these liveness nodes, we'll have to
> not only set watches in several places, but also have some kind of
> recovering daemon to heal a half-created state, and also filter
> user-oriented feedback to avoid showing nodes which may be dead.  All
> of that would be avoided if there was a way to have multi-step atomic
> actions.  I'm almost pondering about a journal-like system on top of
> the basic API, to avoid having to deal with this manually.
>
> --
> Gustavo Niemeyer
> http://niemeyer.net
> http://niemeyer.net/blog
> http://niemeyer.net/twitter
>

Reply via email to