Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 76707 invoked from network); 12 Mar 2007 09:19:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Mar 2007 09:19:22 -0000 Received: (qmail 11456 invoked by uid 500); 12 Mar 2007 09:19:30 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 11433 invoked by uid 500); 12 Mar 2007 09:19:30 -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 11424 invoked by uid 99); 12 Mar 2007 09:19:30 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Mar 2007 02:19:30 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME 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; Mon, 12 Mar 2007 02:19:21 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id C4B811A9838; Mon, 12 Mar 2007 02:19:00 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r517141 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal: AbstractJournal.java FileJournal.java Date: Mon, 12 Mar 2007 09:19:00 -0000 To: commits@jackrabbit.apache.org From: dpfister@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070312091900.C4B811A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dpfister Date: Mon Mar 12 02:18:59 2007 New Revision: 517141 URL: http://svn.apache.org/viewvc?view=rev&rev=517141 Log: JCR-785 - Updates to multiple workspaces (e.g. in a transaction) locked in cluster journal Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/AbstractJournal.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/AbstractJournal.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/AbstractJournal.java?view=diff&rev=517141&r1=517140&r2=517141 ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/AbstractJournal.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/AbstractJournal.java Mon Mar 12 02:18:59 2007 @@ -17,7 +17,7 @@ package org.apache.jackrabbit.core.journal; import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock; -import EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock; +import EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock; import java.util.Map; import java.util.HashMap; @@ -29,7 +29,7 @@ import org.apache.jackrabbit.name.NamespaceResolver; /** - * Base implementation for a journal. + * Base journal implementation. */ public abstract class AbstractJournal implements Journal { @@ -59,9 +59,10 @@ private final Map producers = new HashMap(); /** - * Read + * Journal lock, allowing multiple readers (synchronizing their contents) + * but only one writer (appending a new entry). */ - private final ReadWriteLock rwLock = new WriterPreferenceReadWriteLock(); + private final ReadWriteLock rwLock = new ReentrantWriterPreferenceReadWriteLock(); /** * {@inheritDoc} @@ -208,6 +209,7 @@ /** * Return an iterator over all records after the specified revision. + * Subclass responsibility. * * @param startRevision start point (exlusive) * @throws JournalException if an error occurs Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java?view=diff&rev=517141&r1=517140&r2=517141 ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java Mon Mar 12 02:18:59 2007 @@ -28,7 +28,17 @@ import java.io.IOException; /** - * Default file-based journal implementation. + * File-based journal implementation that appends journal records to a single + * file.

+ * It is configured through the following properties: + *

    + *
  • directory: the directory where to keep the journal file as + * well as the rotated files; this is a required property with no default value
  • + *
  • basename: the basename of journal files; the default + * value is {@link #DEFAULT_BASENAME}
  • + *
  • maximumSize: the maximum size of an active journal file + * before rotating it: the default value is {@link #DEFAULT_MAXSIZE}
  • + *
*/ public class FileJournal extends AbstractJournal {