Copilot commented on code in PR #16869:
URL: https://github.com/apache/iotdb/pull/16869#discussion_r2616021116
##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/AbstractNodeAllocationStrategy.java:
##########
@@ -49,14 +49,24 @@ protected AbstractNodeAllocationStrategy() {
new FolderManager(
Arrays.asList(commonConfig.getWalDirs()),
DirectoryStrategyType.SEQUENCE_STRATEGY);
} catch (DiskSpaceInsufficientException e) {
+ // folderManager remains null when disk space is insufficient during
initialization
+ // It will be lazily initialized later when disk space becomes available
logger.error(
"Fail to create wal node allocation strategy because all disks of
wal folders are full.",
e);
}
}
- protected IWALNode createWALNode(String identifier) {
+ protected synchronized IWALNode createWALNode(String identifier) {
Review Comment:
Synchronizing the entire method causes unnecessary performance overhead
after folderManager is initialized. Every call to createWALNode will acquire a
lock, even when folderManager is already non-null. Consider using
double-checked locking: check if folderManager is null outside the synchronized
block first, and only synchronize for the initialization. This requires making
folderManager volatile to ensure proper visibility across threads.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]