[ https://issues.apache.org/jira/browse/SPARK-17535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sean Owen resolved SPARK-17535. ------------------------------- Resolution: Won't Fix I don't think volatile matters here. It's not the point I was making actually; it was about the fact that this makes it possible to make this code un-thread-safe later if you happened to do extra init after the reference was set. It's not worth the complexity if there's no problem.a > Performance Improvement of Signleton pattern in SparkContext > ------------------------------------------------------------ > > Key: SPARK-17535 > URL: https://issues.apache.org/jira/browse/SPARK-17535 > Project: Spark > Issue Type: Improvement > Components: Spark Core > Affects Versions: 2.0.0 > Reporter: Jianfei Wang > Labels: easyfix, performance > > I think the singleton pattern of SparkContext is inefficient if there are > many request to get the SparkContext, > So we can write the singleton pattern as below,The second way if more > efficient when there are many request to get the SparkContext. > {code} > // the current version > def getOrCreate(): SparkContext = { > SPARK_CONTEXT_CONSTRUCTOR_LOCK.synchronized { > if (activeContext.get() == null) { > setActiveContext(new SparkContext(), allowMultipleContexts = false) > } > activeContext.get() > } > } > // by myself > def getOrCreate(): SparkContext = { > if (activeContext.get() == null) { > SPARK_CONTEXT_CONSTRUCTOR_LOCK.synchronized { > if(activeContext.get == null) { > @volatile val sparkContext = new SparkContext() > setActiveContext(sparkContext, allowMultipleContexts = false) > } > } > activeContext.get() > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org