Skip to content

Commit c4ec2d5

Browse files
committed
Use AtomicBoolean
1 parent d9e0ec7 commit c4ec2d5

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

sql/core/src/main/scala/org/apache/spark/sql/internal/SharedState.scala

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package org.apache.spark.sql.internal
2020
import java.net.URL
2121
import java.util.{Locale, UUID}
2222
import java.util.concurrent.ConcurrentHashMap
23+
import java.util.concurrent.atomic.AtomicBoolean
2324
import javax.annotation.concurrent.GuardedBy
2425

2526
import scala.reflect.ClassTag
@@ -194,26 +195,20 @@ private[sql] class SharedState(
194195
}
195196

196197
object SharedState extends Logging {
198+
private val fsUrlStreamHandlerFactoryInitialized = new AtomicBoolean(false)
199+
197200
private def setFsUrlStreamHandlerFactory(conf: SparkConf): Unit = {
198-
if (conf.get(DEFAULT_URL_STREAM_HANDLER_FACTORY_ENABLED) && factory.isEmpty) {
199-
synchronized {
200-
if (factory.isEmpty) {
201-
try {
202-
URL.setURLStreamHandlerFactory(defaultFactory)
203-
factory = Some(defaultFactory)
204-
} catch {
205-
case NonFatal(_) =>
206-
logWarning("URL.setURLStreamHandlerFactory failed to set FsUrlStreamHandlerFactory")
207-
}
208-
}
201+
if (conf.get(DEFAULT_URL_STREAM_HANDLER_FACTORY_ENABLED) &&
202+
fsUrlStreamHandlerFactoryInitialized.compareAndSet(false, true)) {
203+
try {
204+
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory())
205+
} catch {
206+
case NonFatal(_) =>
207+
logWarning("URL.setURLStreamHandlerFactory failed to set FsUrlStreamHandlerFactory")
209208
}
210209
}
211210
}
212211

213-
@volatile private var factory: Option[FsUrlStreamHandlerFactory] = None
214-
215-
private lazy val defaultFactory = new FsUrlStreamHandlerFactory()
216-
217212
private val HIVE_EXTERNAL_CATALOG_CLASS_NAME = "org.apache.spark.sql.hive.HiveExternalCatalog"
218213

219214
private def externalCatalogClassName(conf: SparkConf): String = {

0 commit comments

Comments
 (0)