Skip to content

Commit

Permalink
[fix](Nereids) remove db readlock before get table from db (apache#38660
Browse files Browse the repository at this point in the history
)

pick from master apache#38660

insert will hold readlock of target table before planning. if nereids
need db readlock after it, will lead to dead lock. because other
statement need to hold db lock before get table lock

for example:

insert: target table read lock -> database read lock
drop table: database write lock -> target table write lock
  • Loading branch information
morrySnow committed Aug 1, 2024
1 parent 4d980b8 commit f1c6366
Showing 1 changed file with 6 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -552,16 +552,13 @@ public TableIf getTable(String ctlName, String dbName, String tableName, Env env
if (db == null) {
throw new RuntimeException("Database [" + dbName + "] does not exist in catalog [" + ctlName + "].");
}
db.readLock();
try {
TableIf table = db.getTableNullable(tableName);
if (table == null) {
throw new RuntimeException("Table [" + tableName + "] does not exist in database [" + dbName + "].");
}
return table;
} finally {
db.readUnlock();

TableIf table = db.getTableNullable(tableName);
if (table == null) {
throw new RuntimeException("Table [" + tableName + "] does not exist in database [" + dbName + "].");
}
return table;

}

/**
Expand Down

0 comments on commit f1c6366

Please sign in to comment.