Return-Path: Delivered-To: apmail-incubator-jackrabbit-commits-archive@www.apache.org Received: (qmail 88649 invoked from network); 1 Nov 2005 10:32:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 1 Nov 2005 10:32:36 -0000 Received: (qmail 18562 invoked by uid 500); 1 Nov 2005 10:32:35 -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 18551 invoked by uid 500); 1 Nov 2005 10:32:35 -0000 Delivered-To: apmail-incubator-jackrabbit-cvs@incubator.apache.org Received: (qmail 18545 invoked by uid 99); 1 Nov 2005 10:32:35 -0000 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 01 Nov 2005 02:32:35 -0800 Received: (qmail 88592 invoked by uid 65534); 1 Nov 2005 10:32:14 -0000 Message-ID: <20051101103214.88586.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r330018 - /incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java Date: Tue, 01 Nov 2005 10:32:14 -0000 To: jackrabbit-cvs@incubator.apache.org From: stefan@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: stefan Date: Tue Nov 1 02:32:10 2005 New Revision: 330018 URL: http://svn.apache.org/viewcvs?rev=330018&view=rev Log: fixed potential ConcurrentModificationException in RepositoryImpl.shutdown() Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=330018&r1=330017&r2=330018&view=diff ============================================================================== --- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java (original) +++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java Tue Nov 1 02:32:10 2005 @@ -705,10 +705,7 @@ } /** - * Shuts down this repository. Note that this method is called automatically - * through a shutdown hook. - * - * @see Runtime#addShutdownHook(Thread) + * Shuts down this repository. */ public synchronized void shutdown() { // check status of this instance @@ -718,10 +715,17 @@ } // close active user sessions - for (Iterator it = activeSessions.values().iterator(); it.hasNext();) { - SessionImpl session = (SessionImpl) it.next(); - session.removeListener(this); - session.logout(); + // (copy sessions to array to avoid ConcurrentModificationException) + int cnt = 0; + SessionImpl[] sa = new SessionImpl[activeSessions.size()]; + for (Iterator it = activeSessions.values().iterator(); it.hasNext(); cnt++) { + sa[cnt] = (SessionImpl) it.next(); + } + for (int i = 0; i < sa.length; i++) { + if (sa[i] != null) { + sa[i].removeListener(this); + sa[i].logout(); + } } activeSessions.clear();