[SPARK-34800][SQL] Use fine-grained lock in SessionCatalog.tableExists
### What changes were proposed in this pull request? Use fine-grained lock in SessionCatalog.tableExists, in order to lock currentDB variable rather than lock `tableExists` method which will block inner external catalog's behaviour. ### Why are the changes needed? We have modified the underlying hive meta store which a different hive database is placed in its own shard for performance. However, we found that the synchronized lock limits the concurrency. ### How was this patch tested? Existing tests. Closes #31891 from woyumen4597/SPARK-34800. Authored-by: woyumen4597 <woyumen4597@gmail.com> Signed-off-by: Wenchen Fan <wenchen@databricks.com>
This commit is contained in:
parent
7953fcdb56
commit
f44608a8c0
|
@ -460,8 +460,8 @@ class SessionCatalog(
|
|||
* Return whether a table/view with the specified name exists. If no database is specified, check
|
||||
* with current database.
|
||||
*/
|
||||
def tableExists(name: TableIdentifier): Boolean = synchronized {
|
||||
val db = formatDatabaseName(name.database.getOrElse(currentDb))
|
||||
def tableExists(name: TableIdentifier): Boolean = {
|
||||
val db = formatDatabaseName(name.database.getOrElse(getCurrentDatabase))
|
||||
val table = formatTableName(name.table)
|
||||
externalCatalog.tableExists(db, table)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue