From f72879f671a92498b08478de696ce85ffdb5b520 Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Tue, 26 Jun 2018 13:35:28 -0400 Subject: [PATCH 1/3] Log resolving errors --- .../repository/LibraryClasspathContainerResolverService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java b/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java index 2bd4282861..038552744f 100644 --- a/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java +++ b/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java @@ -37,6 +37,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.concurrent.Callable; +import java.util.logging.Level; import java.util.logging.Logger; import org.apache.maven.artifact.Artifact; import org.eclipse.core.runtime.CoreException; @@ -158,6 +159,7 @@ public IStatus resolveContainer( } else { library = CloudLibraries.getLibrary(libraryId); } + if (library != null) { List sourceAttacherJobs = new ArrayList<>(); LibraryClasspathContainer container = @@ -175,6 +177,7 @@ public IStatus resolveContainer( } return Status.OK_STATUS; } catch (CoreException | IOException ex) { + logger.log(Level.SEVERE, "Could not resolve container: " + containerPath, ex); return StatusUtil.error( this, Messages.getString("TaskResolveContainerError", containerPath), ex); } From c571849e6b583183a92cd05644dffcd45f0b511b Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Wed, 27 Jun 2018 11:23:50 -0400 Subject: [PATCH 2/3] Do not serialize out container cache when locked --- .../LibraryClasspathContainerResolverService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java b/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java index 038552744f..4b48c6e9aa 100644 --- a/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java +++ b/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java @@ -170,7 +170,13 @@ public IStatus resolveContainer( new IJavaProject[] {javaProject}, new IClasspathContainer[] {container}, subMonitor.newChild(1)); - serializer.saveContainer(javaProject, container); + if (!javaProject.getProject().getWorkspace().isTreeLocked()) { + // The classpath container update may have been triggered as part of a resource change + // in which case the workspace is locked and so we cannot serialize out our + // container cache. There will be other opportunities. + // https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/3181 + serializer.saveContainer(javaProject, container); + } for (Job job : sourceAttacherJobs) { job.schedule(); } From 26e0f7bb8a3051dd1a4d6967cd89c4fc691e144f Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Thu, 28 Jun 2018 16:16:53 -0400 Subject: [PATCH 3/3] Punt the source attacher jobs too --- .../LibraryClasspathContainerResolverService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java b/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java index 4b48c6e9aa..1320929366 100644 --- a/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java +++ b/plugins/com.google.cloud.tools.eclipse.appengine.libraries/src/com/google/cloud/tools/eclipse/appengine/libraries/repository/LibraryClasspathContainerResolverService.java @@ -176,9 +176,9 @@ public IStatus resolveContainer( // container cache. There will be other opportunities. // https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/3181 serializer.saveContainer(javaProject, container); - } - for (Job job : sourceAttacherJobs) { - job.schedule(); + for (Job job : sourceAttacherJobs) { + job.schedule(); + } } } return Status.OK_STATUS;