[
https://issues.apache.org/jira/browse/LUCENE-2779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12965303#action_12965303
]
Uwe Schindler edited comment on LUCENE-2779 at 11/30/10 12:43 PM:
------------------------------------------------------------------
The only performant variant of that code that works around all these bugs is
the code snippet in Java SE6 JavaDocs, which is published by Sun as
"works-as-if-implemented-as" in their JavaDocs:
{code}
Set<String> set = #####.keySet();
List<String> list = new ArrayList<String>(set.size());
for (String s : set) list.add(s);
return list.toArray(new String[0]);
{code}
But I still don't think we should do this, its a bug outside Lucene in a seldom
used JVM! Sun Java 5 and Sun Java 6 work 100% correct and never throw
exceptions (by using techniques like above).
was (Author: thetaphi):
The only performant variant of that code that works around all these bugs
is the code snippet in Java SE6 JavaDocs, which is published by Sun as
"works-as-if-implemented-as" in their JavaDocs:
{code}
Set<String> set = #####.keySet();
List<String> list = new ArrayList<String>(set.size());
for (String s : set) list.add(s);
return list.toArray(new String[0]);
{code}
But I still don't think we should do this, its a bug outside Lucene in a seldom
used JVM!
> 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: [email protected]
For additional commands, e-mail: [email protected]