[
https://issues.apache.org/jira/browse/DIRSTUDIO-1100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15344364#comment-15344364
]
Václav Havlík commented on DIRSTUDIO-1100:
------------------------------------------
But does not the RunnableContextRunner.run()
run the InitializeAttributesRunnable in a new thread, eventually in
ModalContext.run() ? Because "fork" is harcoded to true inside
RunnableContextRunner.run( ) .
So we don't wait, in fact?
> Race condition.
> ---------------
>
> Key: DIRSTUDIO-1100
> URL: https://issues.apache.org/jira/browse/DIRSTUDIO-1100
> Project: Directory Studio
> Issue Type: Bug
> Components: studio-ldapbrowser
> Affects Versions: 2.0.0-M10 (2.0.0.v20151221-M10)
> Environment: x86_64, Linux Debian 8, GTK
> Reporter: Václav Havlík
> Assignee: Stefan Seelmann
> Priority: Minor
> Fix For: 2.0.0-M11
>
>
> Hello,
> perhaps I am wrong, but I suspect myself of seeing a bug in Apache Directory
> Studio 2.0.0.v20151221-M10.
> In method EntryEditorManager.updateAutoSaveSharedReferenceCopy (runs in main
> thread):
> Firstly:
> -> EntryEditorUtils.ensureAttributesInitialized(entry);
> -> StudioBrowserJob runs InitializeAttributesRunnable in a thread
> -> InitializeAttributesRunnable.run
> -> initializeAttributes( entry, monitor ) -> initializeAttributes(
> entry, returningAttributes, true, monitor )
> -> entry.deleteAttribute( oldAttribute ) ->
> ai.attributeMap.remove(Strings.toLowerCase(oidString));
> Secondly:
> -> new CompoundModification().replaceAttributes(entry, workingCopy, this);
> -> fromEntry.getAttributes() -> ai.attributeMap.values()
> Thus, the 1st thread modifies ai.attributeMap and at the same time the 2nd
> thread reads it. Only initializeAttributes is synchronized, but on its class
> object.
> Is it not a race condition?
> Thank you. With regards Vaclav Havlik.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)