Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 343286 - [evaluator] Support parallel execution
Summary: [evaluator] Support parallel execution
Status: NEW
Alias: None
Product: OCL
Classification: Modeling
Component: Core (show other bugs)
Version: 3.1.0   Edit
Hardware: PC Windows Vista
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: OCL Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-04-19 12:22 EDT by Ed Willink CLA
Modified: 2018-08-07 11:54 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ed Willink CLA 2011-04-19 12:22:01 EDT
Java 7 provides a multithreading API. Use it for evaluation, but beware that OCL or EvaluationEnvironment or EnvironmentFactopry or EMF may not necessarily be thread safe without EMF transactions.
Comment 1 Ed Willink CLA 2018-01-08 05:14:28 EST
While the Pivot code nominally supports thread safe concurrent execution, it has never been tested and there is no design  approach to enforce safety.

Recent work on Bug 529484 suggests that Notifier.eAdapters may be a particular fragile area. It was possible for a new EnvironmentFactory consumer to rescue it while it was being disposed.
Comment 2 Ed Willink CLA 2018-06-17 03:08:58 EDT
Work on Bug 535888 identifies that ExpressionInOCL.ownedBody etc are assigned lazily but without a synchronization. User can worjaround with a warm up that fully assigns metamodel/library transients.
Comment 3 Ed Willink CLA 2018-06-17 03:17:59 EDT
(In reply to Ed Willink from comment #2)
> ExpressionInOCL.ownedBody etc ... without a synchronization

ParserContext would appear to have the lifetime to arbitrate thread-lockout via a passkey.
Comment 4 Ed Willink CLA 2018-08-07 11:54:39 EDT
Work on an autogenerated loader (Bug 535888) executing in C identifies the need to synthesize access code and if we are interested in multi-threaded execution this needs to be threadsafe. Two problems to solve at once.

We can potentially have a single C/Java autogenerator to realize:

a) immutable data such as XxxTables can be static PODs in C, or statically constructed in Java

b) cached data such as ObjectState needs a full/idiomatic autogenerator

c) model accessors for 'eGet'/eSet' need an idiomatic generator