[ 
https://issues.apache.org/jira/browse/UIMA-4013?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marshall Schor resolved UIMA-4013.
----------------------------------
    Resolution: Fixed
      Assignee: Marshall Schor

> Reduce unneeded fixed flow controller sync contention
> -----------------------------------------------------
>
>                 Key: UIMA-4013
>                 URL: https://issues.apache.org/jira/browse/UIMA-4013
>             Project: UIMA
>          Issue Type: Improvement
>          Components: Core Java Framework
>    Affects Versions: 2.6.0SDK
>            Reporter: Marshall Schor
>            Assignee: Marshall Schor
>            Priority: Minor
>             Fix For: 2.6.1SDK
>
>
> The Fixed Flow Controller is designed to allow one instance to be used by 
> multiple copies of a UIMA pipeline, initialized from the same context.   In 
> this case, only one initialize call is done; the others are no-ops.  The 
> instance contains one update-able ArrayList - the list of delegates.  This 
> array is normally only "read", but there are two defined interfaces to allow 
> dynamically altering it (addAnalysisEngines, and removeAnalysisEngines). The 
> current impl of this is a synchronized list.  For the 99.99% of cases 
> (reading), this sync is not necessary, and causes some observable sync 
> contention.  
> Change this to a non-sync'ed "CopyOnWrite" implementation, to avoid this 
> contention.  The downside is that current Flow objects in use while after 
> this call occurs will not see the update, but new ones will. This is probably 
> a good thing, because it seems that incorrect flows might occur if this was 
> changed while flows were in-progress.  The documentation currently says these 
> methods are not currently called because UIMA doesn't support dynamically 
> adding or removing analysis engines to/from an aggregate.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to