Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 54026 invoked from network); 20 Sep 2007 17:59:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 20 Sep 2007 17:59:56 -0000 Received: (qmail 27955 invoked by uid 500); 20 Sep 2007 17:59:47 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 27927 invoked by uid 500); 20 Sep 2007 17:59:47 -0000 Mailing-List: contact commits-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 commits@jackrabbit.apache.org Received: (qmail 27545 invoked by uid 99); 20 Sep 2007 17:59:47 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Sep 2007 10:59:45 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Sep 2007 18:01:53 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5D72E1A9832; Thu, 20 Sep 2007 10:59:31 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r577840 - /jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java Date: Thu, 20 Sep 2007 17:59:31 -0000 To: commits@jackrabbit.apache.org From: jukka@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20070920175931.5D72E1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jukka Date: Thu Sep 20 10:59:30 2007 New Revision: 577840 URL: http://svn.apache.org/viewvc?rev=577840&view=rev Log: 1.3: Merged revision 563900 (JCR-1039) Modified: jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java Modified: jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java?rev=577840&r1=577839&r2=577840&view=diff ============================================================================== --- jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java (original) +++ jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java Thu Sep 20 10:59:30 2007 @@ -26,7 +26,6 @@ import org.apache.jackrabbit.core.state.NodeReferences; import org.apache.jackrabbit.core.persistence.PMContext; import org.apache.jackrabbit.core.persistence.AbstractPersistenceManager; -import org.apache.jackrabbit.core.persistence.bundle.util.TrackingInputStream; import org.apache.jackrabbit.core.persistence.bundle.util.DbNameIndex; import org.apache.jackrabbit.core.persistence.bundle.util.NodePropBundle; import org.apache.jackrabbit.core.persistence.bundle.util.BundleBinding; @@ -73,7 +72,6 @@ *

* Configuration:
*

    - *
  • <param name="{@link #setExternalBLOBs(String)} externalBLOBs}" value="false"/> *
  • <param name="{@link #setBundleCacheSize(String) bundleCacheSize}" value="8"/> *
  • <param name="{@link #setConsistencyCheck(String) consistencyCheck}" value="false"/> *
  • <param name="{@link #setConsistencyFix(String) consistencyFix}" value="false"/> @@ -867,7 +865,7 @@ throws ItemStateException { PreparedStatement stmt = bundleSelect; ResultSet rs = null; - DataInputStream din = null; + InputStream in = null; try { setKey(stmt, id.getUUID(), 1); stmt.execute(); @@ -876,17 +874,24 @@ return null; } Blob b = rs.getBlob(1); - TrackingInputStream cin = new TrackingInputStream(b.getBinaryStream()); - din = new DataInputStream(cin); + // JCR-1039: pre-fetch/buffer blob data + long length = b.length(); + byte[] bytes = new byte[(int) length]; + in = b.getBinaryStream(); + int read, pos = 0; + while ((read = in.read(bytes, pos, bytes.length - pos)) > 0) { + pos += read; + } + DataInputStream din = new DataInputStream(new ByteArrayInputStream(bytes)); NodePropBundle bundle = binding.readBundle(din, id); - bundle.setSize(cin.getPosition()); + bundle.setSize(length); return bundle; } catch (Exception e) { String msg = "failed to read bundle: " + id + ": " + e; log.error(msg); throw new ItemStateException(msg, e); } finally { - closeStream(din); + closeStream(in); closeResultSet(rs); resetStatement(stmt); }