Skip to content

Commit a6e8493

Browse files
authored
Optimized the lock for encoding & compressor's invalidate cache (apache#16733)
* fix * jr
1 parent 468a91a commit a6e8493

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterEncodingCompressorProcedure.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ protected Flow executeFromState(
132132
break;
133133
case CLEAR_CACHE:
134134
LOGGER.info("Invalidate cache of timeSeries {}", requestMessage);
135-
invalidateCache(env, patternTreeBytes, requestMessage, this::setFailure);
135+
invalidateCache(env, patternTreeBytes, requestMessage, this::setFailure, false);
136136
collectPayload4Pipe(env);
137137
return Flow.NO_MORE_STATE;
138138
default:

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteTimeSeriesProcedure.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ protected Flow executeFromState(
122122
}
123123
case CLEAN_DATANODE_SCHEMA_CACHE:
124124
LOGGER.info("Invalidate cache of timeSeries {}", requestMessage);
125-
invalidateCache(env, patternTreeBytes, requestMessage, this::setFailure);
125+
invalidateCache(env, patternTreeBytes, requestMessage, this::setFailure, true);
126126
setNextState(DeleteTimeSeriesState.DELETE_DATA);
127127
break;
128128
case DELETE_DATA:
@@ -202,13 +202,14 @@ public static void invalidateCache(
202202
final ConfigNodeProcedureEnv env,
203203
final ByteBuffer patternTreeBytes,
204204
final String requestMessage,
205-
final Consumer<ProcedureException> setFailure) {
205+
final Consumer<ProcedureException> setFailure,
206+
final boolean needLock) {
206207
final Map<Integer, TDataNodeLocation> dataNodeLocationMap =
207208
env.getConfigManager().getNodeManager().getRegisteredDataNodeLocations();
208209
final DataNodeAsyncRequestContext<TInvalidateMatchedSchemaCacheReq, TSStatus> clientHandler =
209210
new DataNodeAsyncRequestContext<>(
210211
CnToDnAsyncRequestType.INVALIDATE_MATCHED_SCHEMA_CACHE,
211-
new TInvalidateMatchedSchemaCacheReq(patternTreeBytes),
212+
new TInvalidateMatchedSchemaCacheReq(patternTreeBytes).setNeedLock(needLock),
212213
dataNodeLocationMap);
213214
CnToDnInternalServiceAsyncRequestManager.getInstance().sendAsyncRequestWithRetry(clientHandler);
214215
final Map<Integer, TSStatus> statusMap = clientHandler.getResponseMap();

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,10 @@ public TSStatus rollbackSchemaBlackList(TRollbackSchemaBlackListReq req) {
708708
@Override
709709
public TSStatus invalidateMatchedSchemaCache(final TInvalidateMatchedSchemaCacheReq req) {
710710
final TreeDeviceSchemaCacheManager cache = TreeDeviceSchemaCacheManager.getInstance();
711-
DataNodeSchemaLockManager.getInstance().takeWriteLock(SchemaLockType.VALIDATE_VS_DELETION_TREE);
711+
if (req.needLock || !req.isSetNeedLock()) {
712+
DataNodeSchemaLockManager.getInstance()
713+
.takeWriteLock(SchemaLockType.VALIDATE_VS_DELETION_TREE);
714+
}
712715
try {
713716
cache.takeWriteLock();
714717
try {
@@ -717,8 +720,10 @@ public TSStatus invalidateMatchedSchemaCache(final TInvalidateMatchedSchemaCache
717720
cache.releaseWriteLock();
718721
}
719722
} finally {
720-
DataNodeSchemaLockManager.getInstance()
721-
.releaseWriteLock(SchemaLockType.VALIDATE_VS_DELETION_TREE);
723+
if (req.needLock || !req.isSetNeedLock()) {
724+
DataNodeSchemaLockManager.getInstance()
725+
.releaseWriteLock(SchemaLockType.VALIDATE_VS_DELETION_TREE);
726+
}
722727
}
723728
return RpcUtils.SUCCESS_STATUS;
724729
}

iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ struct TRollbackSchemaBlackListReq {
440440

441441
struct TInvalidateMatchedSchemaCacheReq {
442442
1: required binary pathPatternTree
443+
2: optional bool needLock
443444
}
444445

445446
struct TFetchSchemaBlackListReq {

0 commit comments

Comments
 (0)