Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 338987

Summary: [repository] Remove the synchronization on executeBatch
Product: [Eclipse Project] Equinox Reporter: Ian Bull <irbull>
Component: p2Assignee: Ian Bull <irbull>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: P3 CC: jeffmcaffer, pascal.rapicault, pascal
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard: stalebug
Bug Depends on:    
Bug Blocks: 329313    
Attachments:
Description Flags
Patch v1
none
mylyn/context/zip none

Description Ian Bull CLA 2011-03-04 22:43:07 EST
Right now we synchronize executeBatch. This can lead to a deadlock if the runnable spawns other threads which intended to act on the repository. We should remove this and simple use an entry / exit counter to determine when to save.
Comment 1 Ian Bull CLA 2011-03-29 16:51:08 EDT
Created attachment 192138 [details]
Patch v1

This removes the synchronization block from execute batch and instead uses a reference counter to determine when to save.

We still synchronize when we setup / teardown the execute batch (i.e. create the file level lock, save, count references, etc...).

FWIW, I changed the engine#perform method to use executeBatch and all the test cases pass.  That's not included in this patch, and not something we should do for 3.7, but interesting none-the-less.
Comment 2 Ian Bull CLA 2011-03-29 16:51:12 EDT
Created attachment 192139 [details]
mylyn/context/zip
Comment 3 Ian Bull CLA 2011-04-21 13:33:22 EDT
Moving out.
Comment 4 Thomas Watson CLA 2011-06-08 11:31:13 EDT
Move all 3.8 bugs to Juno.
Comment 5 Eclipse Genie CLA 2019-06-10 18:02:31 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.