On Sun, Oct 19, 2014 at 3:35 AM, Bruno Gonzalez (aka stenyak)
<sten...@stenyak.com> wrote:
> Renamed keys for user-facing dicts, and application lambdas for
> user-hidden dicts sounds reasonable to me.
>
> What about different lambdas affecting each other while they run? E.g.
> two client-side lambdas trying to solve the same conflict. Or also,
> since lambdas can potentially do *anything* in the json data,
> server-side lambdas may affect other concurrent lambdas that weren't
> even working on the very same conflict. Would a global conflict lock be
> used to prevent it, or is there any strategy to guarantee these issues
> won't happen?

I don't think so. And remember, these lambdas will need to run on both
the client and the server, and they need to produce the exact same
result. Preferably they should do that without access to the document
itself. (In all other cases transform doesn't need access to the
document itself, and the document isn't passed in).

A conflict lock here is the wrong tool. It'd add way more complexity
than I'm comfortable with to solve this problem. Also the point of OT
that you don't need locks.

> I'm assuming ditching json for a simpler format (just lists of lists),
> delegating dictionary implementation to each application, is either a
> dumb idea, or just another variant of same original problem (since I
> guess we would end up providing a dictionary emulation library using
> lists of (key,value) lists anyway, which applications may or may not
> use, so exactly like current situation with lists and dicts).

Yeah - thats what I'm worried about. Overwrite semantics are only
dangerous for non-unique keys. ... but they are basically always the
wrong outcome when someone does a move operation.

-J

Reply via email to