You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by vanzin <gi...@git.apache.org> on 2017/12/12 00:21:26 UTC

[GitHub] spark pull request #18801: SPARK-10878 Fix race condition when multiple clie...

Github user vanzin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/18801#discussion_r156240364
  
    --- Diff: core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala ---
    @@ -1216,7 +1216,36 @@ private[spark] object SparkSubmitUtils {
     
       /** A nice function to use in tests as well. Values are dummy strings. */
       def getModuleDescriptor: DefaultModuleDescriptor = DefaultModuleDescriptor.newDefaultInstance(
    -    ModuleRevisionId.newInstance("org.apache.spark", "spark-submit-parent", "1.0"))
    +    // Include timestamp in module name, so multiple clients resolving maven coordinates at the
    +    // same time do not modify the same resolution file concurrently.
    +    ModuleRevisionId.newInstance("org.apache.spark",
    +      "spark-submit-parent-" + System.currentTimeMillis().toString,
    +      "1.0"))
    +
    +  /**
    +   * clear ivy resolution from current launch. The resolution file is usually at
    +   * ~/.ivy2/org.apache.spark-spark-submit-parent-$timestamp-default.xml,
    +   * ~/.ivy2/resolved-org.apache.spark-spark-submit-parent-$timestamp-1.0.xml, and
    +   * ~/.ivy2/resolved-org.apache.spark-spark-submit-parent-$timestamp-1.0.properties.
    +   * Since each launch will have its own resolution files created, delete them after
    +   * each resolution to prevent accumulation of these files in the ivy cache dir.
    +   */
    +  private def clearIvyResolutionFiles(
    +      mdId: ModuleRevisionId,
    +      ivySettings: IvySettings,
    +      ivyConfName: String): Unit = {
    +    val currentResolutionFiles = Seq[File](
    +      new File(ivySettings.getDefaultCache,
    +        s"${mdId.getOrganisation}-${mdId.getName}-$ivyConfName.xml"),
    +      new File(ivySettings.getDefaultCache,
    +        s"resolved-${mdId.getOrganisation}-${mdId.getName}-${mdId.getRevision}.xml"),
    +      new File(ivySettings.getDefaultCache,
    +        s"resolved-${mdId.getOrganisation}-${mdId.getName}-${mdId.getRevision}.properties")
    +    )
    +    currentResolutionFiles.foreach{ file =>
    --- End diff --
    
    space before `{`


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org