jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Guggisberg (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-685) Remove some synchronization on CachingNamespaceResolver
Date Wed, 20 Dec 2006 13:20:22 GMT
    [ http://issues.apache.org/jira/browse/JCR-685?page=comments#action_12459931 ] 
            
Stefan Guggisberg commented on JCR-685:
---------------------------------------

the following methods are synchronized on the CachingNamespaceResolver 
instance:

QName retrieveName(String jcrName) 
String retrieveName(QName name) 
 
this potentially leads to monitor contention since those methods are 
indirectly called by a lot of jcr api methods (such as Node.getProperty() etc).

a possible solution would be to replace the internal LRUMap's with 
something that's optimized for concurrent read access (e.g.  an LRUMap
implementation that is based on doug lea's ConcurrentReaderHashMap).

> Remove some synchronization on CachingNamespaceResolver
> -------------------------------------------------------
>
>                 Key: JCR-685
>                 URL: http://issues.apache.org/jira/browse/JCR-685
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.1, 1.1.1
>            Reporter: Marcel Reutegger
>            Priority: Minor
>             Fix For: 1.2
>
>
> The methods getQName() and getJCRName() are unnecessarily synchronized and cause monitor
contention with concurrent calls to the methods of the NameCache interface (those are also
synchronized).
> I propose the following change:
> Index: CachingNamespaceResolver.java
> ===================================================================
> --- CachingNamespaceResolver.java	(revision 488245)
> +++ CachingNamespaceResolver.java	(working copy)
> @@ -84,7 +84,7 @@
>      /**
>       * @deprecated use {@link NameFormat#parse(String, NamespaceResolver)}
>       */
> -    public synchronized QName getQName(String name)
> +    public QName getQName(String name)
>              throws IllegalNameException, UnknownPrefixException {
>          return NameFormat.parse(name, this);
>      }
> @@ -92,7 +92,7 @@
>      /**
>       * @deprecated use {@link NameFormat#format(QName, NamespaceResolver)}
>       */
> -    public synchronized String getJCRName(QName name)
> +    public String getJCRName(QName name)
>              throws NoPrefixDeclaredException {
>          return NameFormat.format(name, this);
>      }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message