Return-Path: Delivered-To: apmail-lucene-dev-archive@www.apache.org Received: (qmail 2021 invoked from network); 30 Nov 2010 20:00:42 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 30 Nov 2010 20:00:42 -0000 Received: (qmail 45565 invoked by uid 500); 30 Nov 2010 20:00:39 -0000 Delivered-To: apmail-lucene-dev-archive@lucene.apache.org Received: (qmail 45509 invoked by uid 500); 30 Nov 2010 20:00:39 -0000 Mailing-List: contact dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list dev@lucene.apache.org Received: (qmail 45502 invoked by uid 99); 30 Nov 2010 20:00:39 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Nov 2010 20:00:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Nov 2010 20:00:38 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id oAUK0Iia020886 for ; Tue, 30 Nov 2010 20:00:18 GMT Message-ID: <24086540.33541291147218082.JavaMail.jira@thor> Date: Tue, 30 Nov 2010 15:00:18 -0500 (EST) From: "Uwe Schindler (JIRA)" To: dev@lucene.apache.org Subject: [jira] Commented: (LUCENE-2779) Use ConcurrentHashMap in RAMDirectory In-Reply-To: <10750696.314731290706214515.JavaMail.jira@thor> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/LUCENE-2779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12965396#action_12965396 ] Uwe Schindler commented on LUCENE-2779: --------------------------------------- Code looks good, I would only chnage the comment to simply say, that: {code} return fileMap.keySet().toArray(new String[0]); {code} only works correct in Suns JVM. The thing with new ArrayList(Collection) or any other thing is implemented different in every JVM (even new HashSet(Collection) can be broken if it uses toArray() for some weird reason). But just to note, according to the JDK documentation the above code should work - period. So we should only document that and say, that this is broken. > Use ConcurrentHashMap in RAMDirectory > ------------------------------------- > > Key: LUCENE-2779 > URL: https://issues.apache.org/jira/browse/LUCENE-2779 > Project: Lucene - Java > Issue Type: Improvement > Components: Store > Reporter: Shai Erera > Assignee: Shai Erera > Priority: Minor > Fix For: 3.1, 4.0 > > Attachments: LUCENE-2779-backwardsfix.patch, LUCENE-2779.patch, LUCENE-2779.patch, LUCENE-2779.patch, TestCHM.java > > > RAMDirectory synchronizes on its instance in many places to protect access to map of RAMFiles, in addition to updating the sizeInBytes member. In many places the sync is done for 'read' purposes, while only in few places we need 'write' access. This looks like a perfect use case for ConcurrentHashMap > Also, syncing around sizeInBytes is unnecessary IMO, since it's an AtomicLong ... > I'll post a patch shortly. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org For additional commands, e-mail: dev-help@lucene.apache.org