Return-Path: Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: (qmail 62445 invoked from network); 30 Jan 2009 08:00:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 30 Jan 2009 08:00:59 -0000 Received: (qmail 51377 invoked by uid 500); 30 Jan 2009 08:00:57 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 51346 invoked by uid 500); 30 Jan 2009 08:00:57 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 51335 invoked by uid 99); 30 Jan 2009 08:00:57 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Jan 2009 00:00:57 -0800 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=FS_REPLICA,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of jchris@gmail.com designates 209.85.221.21 as permitted sender) Received: from [209.85.221.21] (HELO mail-qy0-f21.google.com) (209.85.221.21) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Jan 2009 08:00:48 +0000 Received: by qyk14 with SMTP id 14so484725qyk.11 for ; Fri, 30 Jan 2009 00:00:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to :content-type:content-transfer-encoding; bh=WoTwZ/NlgBe0XKvPZ+Jxom2+XUoyALbo+vP4C+Vffe4=; b=pX3KR0W9xNwagU2B5WCetilB+G43XWzx/7A8k/q0Kgd2tVywVq+i8O8AoK0mVzw2eJ KdKuFgZ0yjOJcaL/pP3Lkt8YNG9vPg4d10hNRSr6qTh2zjkq8QDzNRk/xx9FlA4hbv2O bflgHpCk4dHmc7UEVJxSCvsSBPIbQCYlUH2TM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; b=Cx5m1ixUURYLxnd49g4vGNFPJTP8u8y3cfnA7GuHmpRpW1koHLJMb5jvxDJr/z0Em9 Tfku0EBJMMIf23k3Is+wf3ZcGuHC42DXOyrI2c+YoNvNf75ekSy0lEade8SmYDKMo9+f pKatgpmpC99T6KhKGzWOPuoonSqkYKgNCMnOo= MIME-Version: 1.0 Sender: jchris@gmail.com Received: by 10.215.41.2 with SMTP id t2mr1662191qaj.371.1233302426910; Fri, 30 Jan 2009 00:00:26 -0800 (PST) In-Reply-To: References: <20090128153026.GA12384@uk.tiscali.com> <91CE1D9D-2D5A-40BA-8D20-D24559BBA0F0@apache.org> <20090129210009.GC28166@uk.tiscali.com> <06CD9F6F-D8E8-4057-8454-DE85CA4D1C87@gmail.com> <832E01A3-CD2B-4DA0-98FC-4908FE962396@gmail.com> Date: Fri, 30 Jan 2009 00:00:26 -0800 X-Google-Sender-Auth: 80b510fe7b32e1d8 Message-ID: Subject: Re: Trouble with replication From: Chris Anderson To: user@couchdb.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org On Thu, Jan 29, 2009 at 10:56 PM, Antony Blakey wrote: > > Extending this to update functions means that conflict resolution is no > longer globally deterministic, because it depends on the propagation pattern > of the update function. Same with validation and authentication. > > This will only affect some use cases, but it's a very difficult problem in > meshes. Ahh, I didn't consider the validation function as being replicated as well. I suppose I'm imagining that validation functions will define the borders of applications, and thinking of these data flows as within a particular application. This is a straightforward consequence of the fact that design docs are documents just like any other, which of course has so many good effects that it's hard to find fault with the system because of edge cases like this. Another edge case from validation functions (which can happen even on a single node) is that documents which have been added to a db, can be invalidated by the addition of a validation function after they have been saved. Having a view of all newly-invalid docs will definitely be useful. It seems like if you want to ensure that your system follows some of the stricter principles you outlined, you'll have to avoid use of (changing) validation functions in your applications. Or at least be very thoughtful about code roll-outs. This may be a logical fallacy, but finding an "inconsistency" like this, encourages me that we maybe dealing with a "complete" system. I'd rather have something powerful enough to generate inconsistencies than something so meager that it can't. -- Chris Anderson http://jchris.mfdz.com