Return-Path: Delivered-To: apmail-incubator-couchdb-user-archive@locus.apache.org Received: (qmail 11500 invoked from network); 4 Oct 2008 00:31:40 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Oct 2008 00:31:40 -0000 Received: (qmail 20182 invoked by uid 500); 4 Oct 2008 00:31:38 -0000 Delivered-To: apmail-incubator-couchdb-user-archive@incubator.apache.org Received: (qmail 20151 invoked by uid 500); 4 Oct 2008 00:31:38 -0000 Mailing-List: contact couchdb-user-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: couchdb-user@incubator.apache.org Delivered-To: mailing list couchdb-user@incubator.apache.org Received: (qmail 20140 invoked by uid 99); 4 Oct 2008 00:31:38 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Oct 2008 17:31:38 -0700 X-ASF-Spam-Status: No, hits=3.2 required=10.0 tests=HTML_MESSAGE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: 209.85.200.169 is neither permitted nor denied by domain of ayende@ayende.com) Received: from [209.85.200.169] (HELO wf-out-1314.google.com) (209.85.200.169) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Oct 2008 00:30:32 +0000 Received: by wf-out-1314.google.com with SMTP id 27so2049746wfd.21 for ; Fri, 03 Oct 2008 17:30:57 -0700 (PDT) Received: by 10.143.14.6 with SMTP id r6mr604314wfi.144.1223080257343; Fri, 03 Oct 2008 17:30:57 -0700 (PDT) Received: by 10.142.163.18 with HTTP; Fri, 3 Oct 2008 17:30:57 -0700 (PDT) Message-ID: <27d8d0930810031730w306fcc2fmfc57cd9e100091b2@mail.gmail.com> Date: Sat, 4 Oct 2008 03:30:57 +0300 From: "Ayende Rahien" To: couchdb-user@incubator.apache.org Subject: Re: couch_util:new_uuid problem? In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_12724_13328007.1223080257326" References: <27d8d0930810031649h3fa3d5deyd16f373527aae472@mail.gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_12724_13328007.1223080257326 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline The problem is with the guarantees that the method does. This is a valid implementation for random number generator: http://xkcd.com/221/ A UUID isn't going to be duplicated, because it is unique to the machine and time it was generated, and there is care taken to ensure that even if you have two thread creating the a guid on the same micro second, you'll get two different guids. There is no such guarantees for random numbers. On Sat, Oct 4, 2008 at 3:06 AM, Paul Davis wrote: > Ayende, > > Perhaps I'm missing something, but I don't see the problem. > > I suppose you could technically claim that we're not setting the > version bits properly but that seems rather not important given that > we have the revision protection. Also unless I'm mistaken this would > only be a problem if someone is using an external UUID generation > scheme that happens to be extremely not random. Which while possible, > would still send up red flags on constant collisions on document > creation. > > Paul > > On Fri, Oct 3, 2008 at 7:49 PM, Ayende Rahien wrote: > > Looking at the method implementation, it looks like there might be a > problem > > here. > > > > new_uuid() -> > > list_to_binary(to_hex(crypto:rand_bytes(16))). > > > > In particular, we aren't actually guaranteed to have a unique value. > > You can read more about what needs to be done to get unique guids: here: > > http://blogs.msdn.com/oldnewthing/archive/2008/06/27/8659071.aspx > > > ------=_Part_12724_13328007.1223080257326--