@@ -196,25 +196,25 @@ private[sql] class DDLParser(
196196
197197private [sql] object ResolvedDataSource extends Logging {
198198
199- private lazy val loader = Utils .getContextOrSparkClassLoader
200- private lazy val serviceLoader = ServiceLoader .load(classOf [DataSourceRegister ], loader)
201-
202199 /** Tries to load the particular class */
203- private def tryLoad (provider : String ): Option [Class [_]] = try {
200+ private def tryLoad (loader : ClassLoader , provider : String ): Option [Class [_]] = try {
204201 Some (loader.loadClass(provider))
205202 } catch {
206203 case cnf : ClassNotFoundException => None
207204 }
208205
209206 /** Given a provider name, look up the data source class definition. */
210207 def lookupDataSource (provider : String ): Class [_] = {
208+ val loader = Utils .getContextOrSparkClassLoader
209+ val serviceLoader = ServiceLoader .load(classOf [DataSourceRegister ], loader)
210+
211211 serviceLoader.iterator().filter(_.format() == provider).toList match {
212- case Nil => tryLoad(provider).orElse(tryLoad(s " $provider.DefaultSource " )).getOrElse(
213- if (provider.startsWith(" org.apache.spark.sql.hive.orc" )) {
214- sys.error(" The ORC data source must be used with Hive support enabled." )
215- } else {
216- sys.error(s " Failed to load class for data source: $provider" )
217- })
212+ case Nil => tryLoad(loader, provider).orElse(tryLoad(loader, s " $provider.DefaultSource " ))
213+ .getOrElse( if (provider.startsWith(" org.apache.spark.sql.hive.orc" )) {
214+ sys.error(" The ORC data source must be used with Hive support enabled." )
215+ } else {
216+ sys.error(s " Failed to load class for data source: $provider" )
217+ })
218218 case head :: Nil => head.getClass
219219 case sources => sys.error(s " Multiple sources found for $provider, " +
220220 s " ( ${sources.map(_.getClass.getName).mkString(" , " )}), " +
0 commit comments