Skip to content

Commit

Permalink
Fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Caideyipi committed Oct 21, 2024
1 parent f9925fc commit 76aa028
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ public DataPartition getOrCreateDataPartition(
DataPartition dataPartition = partitionCache.getDataPartition(sgNameToQueryParamsMap);
if (null == dataPartition) {
// Do not use data partition cache
try (ConfigNodeClient client =
try (final ConfigNodeClient client =
configNodeClientManager.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
final TDataPartitionTableResp dataPartitionTableResp =
client.getOrCreateDataPartitionTable(constructDataPartitionReq(sgNameToQueryParamsMap));
Expand All @@ -259,15 +259,15 @@ public DataPartition getOrCreateDataPartition(
@Override
public DataPartition getOrCreateDataPartition(
final List<DataPartitionQueryParam> dataPartitionQueryParams, final String userName) {
DataPartition dataPartition;
try (final ConfigNodeClient client =
configNodeClientManager.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
final Map<String, List<DataPartitionQueryParam>> splitDataPartitionQueryParams =
splitDataPartitionQueryParam(
dataPartitionQueryParams, config.isAutoCreateSchemaEnabled(), userName);
dataPartition = partitionCache.getDataPartition(splitDataPartitionQueryParams);

final Map<String, List<DataPartitionQueryParam>> splitDataPartitionQueryParams =
splitDataPartitionQueryParam(
dataPartitionQueryParams, config.isAutoCreateSchemaEnabled(), userName);
DataPartition dataPartition = partitionCache.getDataPartition(splitDataPartitionQueryParams);

if (null == dataPartition) {
try (final ConfigNodeClient client =
configNodeClientManager.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
if (null == dataPartition) {
final TDataPartitionReq req = constructDataPartitionReq(splitDataPartitionQueryParams);
final TDataPartitionTableResp dataPartitionTableResp =
client.getOrCreateDataPartitionTable(req);
Expand All @@ -282,10 +282,10 @@ public DataPartition getOrCreateDataPartition(
dataPartitionTableResp.getStatus().getMessage(),
dataPartitionTableResp.getStatus().getCode()));
}
} catch (final ClientManagerException | TException e) {
throw new StatementAnalyzeException(
"An error occurred when executing getOrCreateDataPartition():" + e.getMessage());
}
} catch (final ClientManagerException | TException | DatabaseModelException e) {
throw new StatementAnalyzeException(
"An error occurred when executing getOrCreateDataPartition():" + e.getMessage());
}
return dataPartition;
}
Expand Down Expand Up @@ -347,7 +347,7 @@ private SchemaPartition getOrCreateSchemaPartition(
}
}
return schemaPartition;
} catch (final ClientManagerException | TException e) {
} catch (final ClientManagerException | TException | DatabaseModelException e) {
throw new StatementAnalyzeException(
"An error occurred when executing getSchemaPartition():" + e.getMessage());
}
Expand All @@ -370,7 +370,8 @@ public SchemaPartition getSchemaPartition(final String database) {
private Map<String, List<DataPartitionQueryParam>> splitDataPartitionQueryParam(
final List<DataPartitionQueryParam> dataPartitionQueryParams,
final boolean isAutoCreate,
final String userName) {
final String userName)
throws DatabaseModelException {
final List<IDeviceID> deviceIDs = new ArrayList<>();
for (final DataPartitionQueryParam dataPartitionQueryParam : dataPartitionQueryParams) {
deviceIDs.add(dataPartitionQueryParam.getDeviceID());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,10 +204,16 @@ private String getDatabaseName(final IDeviceID deviceID) throws DatabaseModelExc
* @param database name
* @return {@code true} if this database exists
*/
private boolean containsDatabase(final String database) {
private boolean containsDatabase(final String database) throws DatabaseModelException {
try {
databaseCacheLock.readLock().lock();
return databaseCache.containsKey(database);
if (databaseCache.containsKey(database)) {
if (Boolean.FALSE.equals(databaseCache.get(database))) {
throw new DatabaseModelException(PathUtils.unQualifyDatabaseName(database), false);
}
return true;
}
return false;
} finally {
databaseCacheLock.readLock().unlock();
}
Expand Down Expand Up @@ -492,7 +498,8 @@ private void getDatabaseCacheResult(
}

public void checkAndAutoCreateDatabase(
final String database, final boolean isAutoCreate, final String userName) {
final String database, final boolean isAutoCreate, final String userName)
throws DatabaseModelException {
boolean isExisted = containsDatabase(database);
if (!isExisted) {
try {
Expand Down

0 comments on commit 76aa028

Please sign in to comment.