Return-Path: Delivered-To: apmail-incubator-jackrabbit-commits-archive@www.apache.org Received: (qmail 87641 invoked from network); 17 Jun 2005 07:42:47 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 17 Jun 2005 07:42:47 -0000 Received: (qmail 19832 invoked by uid 500); 17 Jun 2005 07:42:46 -0000 Mailing-List: contact jackrabbit-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jackrabbit-dev@incubator.apache.org Delivered-To: mailing list jackrabbit-commits@incubator.apache.org Received: (qmail 19813 invoked by uid 500); 17 Jun 2005 07:42:46 -0000 Delivered-To: apmail-incubator-jackrabbit-cvs@incubator.apache.org Received: (qmail 19802 invoked by uid 99); 17 Jun 2005 07:42:46 -0000 X-ASF-Spam-Status: No, hits=0.2 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 17 Jun 2005 00:42:45 -0700 Received: (qmail 42108 invoked by uid 65534); 17 Jun 2005 06:42:21 -0000 Message-ID: <20050617064221.42107.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: svn commit: r191092 - in /incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core: ItemManager.java state/LocalItemStateManager.java state/SharedItemStateManager.java Date: Fri, 17 Jun 2005 06:42:20 -0000 To: jackrabbit-cvs@incubator.apache.org From: tripod@apache.org X-Mailer: svnmailer-1.0.0-dev X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: tripod Date: Thu Jun 16 23:42:18 2005 New Revision: 191092 URL: http://svn.apache.org/viewcvs?rev=3D191092&view=3Drev Log: [JCR-136] Cached item could be lost in cache Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemMana= ger.java incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/state/Lo= calItemStateManager.java incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/state/Sh= aredItemStateManager.java Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/It= emManager.java URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/= apache/jackrabbit/core/ItemManager.java?rev=3D191092&r1=3D191091&r2=3D19109= 2&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemMana= ger.java (original) +++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemMana= ger.java Thu Jun 16 23:42:18 2005 @@ -275,9 +275,7 @@ // check privileges if (!session.getAccessManager().isGranted(id, AccessManager.RE= AD)) { // clear cache - if (isCached(id)) { - evictItem(id); - } + evictItem(id); // item exists but the session has not been granted read a= ccess return false; } @@ -310,9 +308,7 @@ // check privileges if (!session.getAccessManager().isGranted(id, AccessManager.RE= AD)) { // clear cache - if (isCached(id)) { - evictItem(id); - } + evictItem(id); // item exists but the session has not been granted read a= ccess return false; } @@ -362,24 +358,22 @@ // check privileges if (!session.getAccessManager().isGranted(id, AccessManager.READ))= { // clear cache - if (isCached(id)) { - evictItem(id); - } + evictItem(id); throw new AccessDeniedException("cannot read item " + id); } =20 // check cache - if (isCached(id)) { - return retrieveItem(id); - } - - // shortcut - if (id.denotesNode() && id.equals(rootNodeId)) { - return getRoot(); + ItemImpl item =3D retrieveItem(id); + if (item =3D=3D null) { + // shortcut + if (id.denotesNode() && id.equals(rootNodeId)) { + item =3D getRoot(); + } else { + // create instance of item using its state object + item =3D createItemInstance(id); + } } - - // create instance of item using its state object - return createItemInstance(id); + return item; } =20 /** @@ -592,15 +586,6 @@ } =20 //---------------------------------------------------< item cache meth= ods > - /** - * Checks if there's a cache entry for the specified id. - * - * @param id the id to be checked - * @return true if there's a corresponding cache entry, otherwise fals= e=2E - */ - private boolean isCached(ItemId id) { - return itemCache.containsKey(id); - } =20 /** * Returns an item reference from the cache. Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/st= ate/LocalItemStateManager.java URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/= apache/jackrabbit/core/state/LocalItemStateManager.java?rev=3D191092&r1=3D1= 91091&r2=3D191092&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/state/Lo= calItemStateManager.java (original) +++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/state/Lo= calItemStateManager.java Thu Jun 16 23:42:18 2005 @@ -160,16 +160,16 @@ =20 // check cache. synchronized to ensure an entry is not created twi= ce. synchronized (cacheMonitor) { - if (isCached(id)) { - return retrieve(id); - } - - // regular behaviour - if (id.denotesNode()) { - return getNodeState((NodeId) id); - } else { - return getPropertyState((PropertyId) id); + state =3D retrieve(id); + if (state =3D=3D null) { + // regular behaviour + if (id.denotesNode()) { + state =3D getNodeState((NodeId) id); + } else { + state =3D getPropertyState((PropertyId) id); + } } + return state; } } =20 Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/st= ate/SharedItemStateManager.java URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/= apache/jackrabbit/core/state/SharedItemStateManager.java?rev=3D191092&r1=3D= 191091&r2=3D191092&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/state/Sh= aredItemStateManager.java (original) +++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/state/Sh= aredItemStateManager.java Thu Jun 16 23:42:18 2005 @@ -254,14 +254,16 @@ =20 // check cache. synchronized to ensure an entry is not created twi= ce. synchronized (cacheMonitor) { - if (isCached(id)) { - return retrieve(id); - } - if (id.denotesNode()) { - return getNodeState((NodeId) id); - } else { - return getPropertyState((PropertyId) id); + ItemState state =3D retrieve(id); + if (state =3D=3D null) { + // regular behaviour + if (id.denotesNode()) { + state =3D getNodeState((NodeId) id); + } else { + state =3D getPropertyState((PropertyId) id); + } } + return state; } } =20