Bug 574171 - Fix deadlock when updating meta index

When meta index is tried to update from another thread through a
synchronized method on IndexManager, while the indexing thread which
holds the meta index RW lock tries to call a synchronize method on
IndexManager, they end up in a deadlock. This happens in situations
where files are requested to be removed from index.

To avoid this the fix tries to push such meta index updates which are
coming from non indexing threads into the indexing thread and run as
soon as possible to avoid ordering issues.

Change-Id: Ie7af1efd2f908f6f06c76f4b817e53247f2e95f7
Signed-off-by: Gayan Perera <gayanper@gmail.com>
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/181878
Tested-by: JDT Bot <jdt-bot@eclipse.org>
Reviewed-by: Andrey Loskutov <loskutov@gmx.de>
4 files changed
tree: 2e3ba4439787cc02db59b9cb86c8eed7fafd5cb4
  1. JCL/
  2. modules/
  3. org.eclipse.jdt.annotation/
  4. org.eclipse.jdt.annotation_v1/
  5. org.eclipse.jdt.apt.core/
  6. org.eclipse.jdt.apt.pluggable.core/
  7. org.eclipse.jdt.apt.pluggable.tests/
  8. org.eclipse.jdt.apt.tests/
  9. org.eclipse.jdt.apt.ui/
  10. org.eclipse.jdt.compiler.apt/
  11. org.eclipse.jdt.compiler.apt.tests/
  12. org.eclipse.jdt.compiler.tool/
  13. org.eclipse.jdt.compiler.tool.tests/
  14. org.eclipse.jdt.core/
  15. org.eclipse.jdt.core.ecj.validation/
  16. org.eclipse.jdt.core.formatterapp/
  17. org.eclipse.jdt.core.internal.tools/
  18. org.eclipse.jdt.core.tests.builder/
  19. org.eclipse.jdt.core.tests.compiler/
  20. org.eclipse.jdt.core.tests.model/
  21. org.eclipse.jdt.core.tests.performance/
  22. org.eclipse.jdt.tests.latestBREE/
  23. tests-pom/
  24. .gitignore
  25. CONTRIBUTING
  26. LICENSE
  27. NOTICE
  28. pom.xml
  29. README.md
README.md

JDT Core

This is the core part of Eclipse's Java development tools. It contains the non-UI support for compiling and working with Java code, including the following:

  • an incremental or batch Java compiler that can run standalone or as part of the Eclipse IDE
  • Java source and class file indexer and search infrastructure
  • a Java source code formatter
  • APIs for code assist, access to the AST and structured manipulation of Java source.

For more information and important links, refer to the [JDT wiki page] 1 or the [JDT project overview page] 2.

License

Eclipse Public License (EPL) v2.0