aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Armbrust <michael@databricks.com>2014-07-15 00:13:51 -0700
committerAaron Davidson <aaron@databricks.com>2014-07-15 00:14:07 -0700
commit53a6399e54b1843528e1a0b45de5996694747957 (patch)
tree9d80d33a570cde9bdc892e82c1a2196851bd9f97
parent0e2727959a4c2eac41bb6ec70054a1e467637099 (diff)
downloadspark-53a6399e54b1843528e1a0b45de5996694747957.tar.gz
spark-53a6399e54b1843528e1a0b45de5996694747957.tar.bz2
spark-53a6399e54b1843528e1a0b45de5996694747957.zip
[SPARK-2485][SQL] Lock usage of hive client.
Author: Michael Armbrust <michael@databricks.com> Closes #1412 from marmbrus/lockHiveClient and squashes the following commits: 4bc9d5a [Michael Armbrust] protected[hive] 22e9177 [Michael Armbrust] Add comments. 7aa8554 [Michael Armbrust] Don't lock on hive's object. a6edc5f [Michael Armbrust] Lock usage of hive client. (cherry picked from commit c7c7ac83392b10abb011e6aead1bf92e7c73695e) Signed-off-by: Aaron Davidson <aaron@databricks.com>
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala5
1 files changed, 3 insertions, 2 deletions
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala
index 28ccd6db89..c64cad3805 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala
@@ -44,14 +44,15 @@ import scala.collection.JavaConversions._
private[hive] class HiveMetastoreCatalog(hive: HiveContext) extends Catalog with Logging {
import HiveMetastoreTypes._
- val client = Hive.get(hive.hiveconf)
+ /** Connection to hive metastore. Usages should lock on `this`. */
+ protected[hive] val client = Hive.get(hive.hiveconf)
val caseSensitive: Boolean = false
def lookupRelation(
db: Option[String],
tableName: String,
- alias: Option[String]): LogicalPlan = {
+ alias: Option[String]): LogicalPlan = synchronized {
val (dbName, tblName) = processDatabaseAndTableName(db, tableName)
val databaseName = dbName.getOrElse(hive.sessionState.getCurrentDatabase)
val table = client.getTable(databaseName, tblName)