eclipse-sisu / sisu-project

Sisu Inject
https://www.eclipse.org/sisu
Eclipse Public License 2.0
17 stars 15 forks source link

Avoid calling mediators while holding the locator lock (Bugzilla Bug 539379) #28

Closed mcculls closed 2 years ago

mcculls commented 2 years ago

This issue was created automatically with bugzilla2github

Bugzilla Bug 539379

Date: 2018-09-24 08:23:14 -0400 From: Stuart McCulloch <mcculls@gmail.com> To: Project Inbox <sisu-inbox@eclipse.org>

Last updated: 2018-09-24 08:30:49 -0400

Comment 2981172

Date: 2018-09-24 08:23:14 -0400 From: Stuart McCulloch <mcculls@gmail.com>

Currently we maintain a lock on the locator when calling out to mediators (a variation on the listener pattern). This can lead to deadlocks when a mediator needs to lock a component, and at exactly the same time another thread already in that component calls back into the locator.

This bug will investigate ways to avoid holding onto the lock while calling out to external code.

Comment 2981176

Date: 2018-09-24 08:30:49 -0400 From: Stuart McCulloch <mcculls@gmail.com>

Until this is fixed implementations affected by this bug (which should be limited to those that work on activating other components) can replace their internal lock with the locator lock as a workaround. Since the affected calls are calling back into the locator, this is effectively hoisting that lock into the component to avoid the lock order issue.