AbstractCmisService is not thread safe
--------------------------------------

                 Key: CMIS-432
                 URL: https://issues.apache.org/jira/browse/CMIS-432
             Project: Chemistry
          Issue Type: Improvement
          Components: opencmis-commons
    Affects Versions: OpenCMIS 0.5.0
            Reporter: Carlo Sciolla


The use of an unsynchronized HashMap for storing 
AbstractCmisService.objectInfoMap (see AbstractCmisService.getObjectInfoMap) 
makes it inherently thread unsafe. When extending that class, we ran in busy 
waits on HashMap.get, which we fixed overriding the following two methods to 
which we added the {{syncronized}} bit:

{code:java}
    @Override
    public synchronized ObjectInfo getObjectInfo(String repositoryId, String 
objectId) {
        return super.getObjectInfo(repositoryId, objectId);
    }

    @Override
    public synchronized void addObjectInfo(ObjectInfo objectInfo) {
        super.addObjectInfo(objectInfo);
    }
{code}

It would still be nice if thread safety is provided by the library itself 
without the need for external synchronization.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to