Return-Path: X-Original-To: apmail-jackrabbit-dev-archive@www.apache.org Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8951F7872 for ; Thu, 1 Dec 2011 14:51:28 +0000 (UTC) Received: (qmail 65281 invoked by uid 500); 1 Dec 2011 14:51:28 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 65233 invoked by uid 500); 1 Dec 2011 14:51:28 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Received: (qmail 65226 invoked by uid 99); 1 Dec 2011 14:51:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Dec 2011 14:51:28 +0000 X-ASF-Spam-Status: No, hits=-1.6 required=5.0 tests=RCVD_IN_DNSWL_MED,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [64.18.1.187] (HELO exprod6og104.obsmtp.com) (64.18.1.187) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Dec 2011 14:51:18 +0000 Received: from outbound-smtp-1.corp.adobe.com ([192.150.11.134]) by exprod6ob104.postini.com ([64.18.5.12]) with SMTP ID DSNKTteUUB8EJcEYy01+OzNkRbbkasxMzZW3@postini.com; Thu, 01 Dec 2011 06:50:57 PST Received: from inner-relay-4.eur.adobe.com (inner-relay-4.adobe.com [193.104.215.14]) by outbound-smtp-1.corp.adobe.com (8.12.10/8.12.10) with ESMTP id pB1EnA8G014662 for ; Thu, 1 Dec 2011 06:49:11 -0800 (PST) Received: from nahub02.corp.adobe.com (nahub02.corp.adobe.com [10.8.189.98]) by inner-relay-4.eur.adobe.com (8.12.10/8.12.9) with ESMTP id pB1EoJRO017295 for ; Thu, 1 Dec 2011 06:50:54 -0800 (PST) Received: from eurhub01.eur.adobe.com (10.128.4.30) by nahub02.corp.adobe.com (10.8.189.98) with Microsoft SMTP Server (TLS) id 8.3.192.1; Thu, 1 Dec 2011 06:50:24 -0800 Received: from susi.local (10.136.169.101) by eurhub01.eur.adobe.com (10.128.4.111) with Microsoft SMTP Server id 8.3.192.1; Thu, 1 Dec 2011 14:50:15 +0000 Message-ID: <4ED79426.6070605@apache.org> Date: Thu, 1 Dec 2011 14:50:14 +0000 From: =?ISO-8859-1?Q?Michael_D=FCrig?= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Subject: Re: [jr3 microkernel] Write skew References: <4ED63BEE.6010904@apache.org> <4ED751DC.8070606@apache.org> <4ED76F55.3030001@apache.org> <4ED7806E.5010402@apache.org> In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org On 1.12.11 14:25, Jukka Zitting wrote: >> Eventually consistent approaches are IMO very hard to get right with JCR >> since most operation are assumed to be persisted after dispatch. One >> solution I see is to have changes caused by conflict resolution (i.e. during >> convergence) to appear as normal changes as if they where done by other >> sessions (see [1]). This would however require changing the revision model >> of the microkernel from linear shaped to tree shaped. > > This to me sounds like the best approach to take if only there's a way > to solve the problems you mention. The main benefit of an eventually > consistent model is that a save() call can safely return without the > repository having to synchronizes with other cluster nodes or > ultimately even other threads within a single node. I think the toughest question here is how to merge conflicting commits. There are some quite pathological cases [1]: consider the case where a node x is moved such that it becomes a child of node y in one session and at them same time node y is moved such that it becomes a child of node x in another session. The situation is inherently symmetric and neither move can follow the other. On merge there seems to be no better way than to undo one (or both?) of the changes of the sessions. Michael [1] http://wiki.apache.org/jackrabbit/Clustering%20the%20Microkernel#Replication