[
https://issues.apache.org/jira/browse/CMIS-432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13108750#comment-13108750
]
Florian Müller commented on CMIS-432:
-------------------------------------
See also http://chemistry.apache.org/java/developing/dev-server.html
> 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
> Labels: concurrency, multithread, thread-safety
>
> 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