Return-Path: X-Original-To: apmail-jackrabbit-oak-dev-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BE8F810C4B for ; Thu, 6 Jun 2013 13:02:01 +0000 (UTC) Received: (qmail 87716 invoked by uid 500); 6 Jun 2013 13:02:00 -0000 Delivered-To: apmail-jackrabbit-oak-dev-archive@jackrabbit.apache.org Received: (qmail 87683 invoked by uid 500); 6 Jun 2013 13:01:59 -0000 Mailing-List: contact oak-dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-dev@jackrabbit.apache.org Received: (qmail 87671 invoked by uid 99); 6 Jun 2013 13:01:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Jun 2013 13:01:59 +0000 X-ASF-Spam-Status: No, hits=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED X-Spam-Check-By: apache.org Received-SPF: error (athena.apache.org: local policy) Received: from [64.18.1.241] (HELO exprod6og123.obsmtp.com) (64.18.1.241) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Jun 2013 13:01:53 +0000 Received: from outbound-smtp-2.corp.adobe.com ([193.104.215.16]) by exprod6ob123.postini.com ([64.18.5.12]) with SMTP ID DSNKUbCIGEp37cTBTDbhUoEDYX3UywRg4pSC@postini.com; Thu, 06 Jun 2013 06:01:32 PDT Received: from inner-relay-2.corp.adobe.com (inner-relay-2.corp.adobe.com [153.32.1.52]) by outbound-smtp-2.corp.adobe.com (8.12.10/8.12.10) with ESMTP id r56D19AI017032 for ; Thu, 6 Jun 2013 06:01:10 -0700 (PDT) Received: from nacas03.corp.adobe.com (nacas03.corp.adobe.com [10.8.189.121]) by inner-relay-2.corp.adobe.com (8.12.10/8.12.10) with ESMTP id r56D18w7020679 for ; Thu, 6 Jun 2013 06:01:08 -0700 (PDT) Received: from eurhub01.eur.adobe.com (10.128.4.30) by nacas03.corp.adobe.com (10.8.189.121) with Microsoft SMTP Server (TLS) id 8.3.298.1; Thu, 6 Jun 2013 06:01:08 -0700 Received: from susi.local (10.136.131.72) by eurhub01.eur.adobe.com (10.128.4.111) with Microsoft SMTP Server id 8.3.298.1; Thu, 6 Jun 2013 14:01:07 +0100 Message-ID: <51B08812.9070700@apache.org> Date: Thu, 6 Jun 2013 14:01:06 +0100 From: =?UTF-8?B?TWljaGFlbCBEw7xyaWc=?= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 MIME-Version: 1.0 To: Subject: Re: svn commit: r1490258 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java References: <20130606124129.2F45D23889BB@eris.apache.org> In-Reply-To: <20130606124129.2F45D23889BB@eris.apache.org> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org On 6.6.13 13:41, jukka@apache.org wrote: > Author: jukka > Date: Thu Jun 6 12:41:28 2013 > New Revision: 1490258 > > URL: http://svn.apache.org/r1490258 > Log: > OAK-781: Clarify / fix effects of MISSING_NODE as base state of NodeBuilder > > Fix the performance issue of a ConnectedHead never actually updating > the head state after a rebase. It would just repeatedly create new > UnconnectedHead instances without ever setting the head field. This > commit makes updating the head field the responsibility of the head() > method, which by centralizing the state transition should help avoid > potential other similar issues. Thanks for finding this. Looks better now. > Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java > URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java?rev=1490258&r1=1490257&r2=1490258&view=diff > ============================================================================== > --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java (original) > +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java Thu Jun 6 12:41:28 2013 > @@ -142,7 +142,11 @@ public class MemoryNodeBuilder implement > * @return head of this builder > */ > private Head head() { > - return head.update(); > + Head newHead = head.update(); > + if (newHead != head) { > + head = newHead; > + } > + return newHead; > } Isn't this the same as return head = head.update() ?? Michael