From ca9257c064d77b1bd15be8d4c31b6b95bc5e30a3 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 4 Mar 2015 12:04:10 -0500 Subject: [PATCH] OOM handling. #1763 --- .../scala/sbt/ivyint/CachedResolutionResolveEngine.scala | 3 ++- main/src/main/scala/sbt/Defaults.scala | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index 56a84fc8b..4fbda057b 100644 --- a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -24,6 +24,7 @@ private[sbt] object CachedResolutionResolveCache { def createID(organization: String, name: String, revision: String) = ModuleRevisionId.newInstance(organization, name, revision) def sbtOrgTemp = "org.scala-sbt.temp" + def graphVersion = "0.13.8" } private[sbt] class CachedResolutionResolveCache() { @@ -88,7 +89,7 @@ private[sbt] class CachedResolutionResolveCache() { val moduleLevel = s"""dependencyOverrides=${os.mkString(",")};moduleExclusions=$mesStr""" val depsString = s"""$mrid;${confMap.mkString(",")};isForce=${dd.isForce};isChanging=${dd.isChanging};isTransitive=${dd.isTransitive};""" + s"""exclusions=${exclusions.mkString(",")};inclusions=${inclusions.mkString(",")};explicitArtifacts=${explicitArtifacts.mkString(",")};$moduleLevel;""" - val sha1 = Hash.toHex(Hash(depsString)) + val sha1 = Hash.toHex(Hash(s"""graphVersion=${CachedResolutionResolveCache.graphVersion};$depsString""")) val md1 = new DefaultModuleDescriptor(createID(sbtOrgTemp, "temp-resolve-" + sha1, "1.0"), "release", null, false) with ArtificialModuleDescriptor { def targetModuleRevisionId: ModuleRevisionId = mrid } diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index d171e1765..bb12ba97b 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1408,6 +1408,11 @@ object Classpaths { r.toString.lines foreach { log.warn(_) } log.trace(e) r + case e: OutOfMemoryError => + val r = work(in) + log.warn("Update task has failed to cache the report due to OutOfMemoryError.") + log.trace(e) + r } } val f = if (skip && !force) skipWork else doWork