REQ-3540: 惹名scope的子节点名可以重复

This commit is contained in:
yanglin 2025-03-19 14:04:49 +08:00
parent 7883095db0
commit bed0b664bc

View File

@ -54,13 +54,13 @@ public class IndexManager {
@BizTransactional
public IndexNode createDatabase(NodeCreate create) {
maybeEnsureChildNameNotUsed(create, IndexNodeType.DATABASE, true);
ensureChildNameNotUsed(create, IndexNodeType.DATABASE, true);
return indexSupport.createNode(create, IndexNodeType.DATABASE);
}
@BizTransactional
public IndexNode createDir(NodeCreate create) {
maybeEnsureChildNameNotUsed(create, IndexNodeType.DIRECTORY, true);
ensureChildNameNotUsed(create, IndexNodeType.DIRECTORY, true);
return indexSupport.createNode(create, IndexNodeType.DIRECTORY);
}
@ -68,7 +68,7 @@ public class IndexManager {
BizAssertions.assertTrue(format.creatable(), "无法创建: {}", format.readableName());
BizAssertions.assertFalse(TransactionSynchronizationManager.isActualTransactionActive(), "不能在事务中使用");
// check without lock
maybeEnsureChildNameNotUsed(create, IndexNodeType.FILE, false);
ensureChildNameNotUsed(create, IndexNodeType.FILE, false);
String fullFileName = String.format("%s.%s", create.name(), format.createFileExtension());
String ossFileKey = ossClient.copy(docProps.createFileOssFileKey(format), fullFileName);
return OssFile.create(format, format.createFileExtension(), 0, ossFileKey);
@ -92,7 +92,7 @@ public class IndexManager {
return transaction.execute(unused -> {
try {
// check with lock
maybeEnsureChildNameNotUsed(create, IndexNodeType.FILE, true);
ensureChildNameNotUsed(create, IndexNodeType.FILE, true);
}
catch (NameUsedException e) {
deleteOssFile.set(true);
@ -115,7 +115,7 @@ public class IndexManager {
}
}
private void maybeEnsureChildNameNotUsed(NodeCreate create, IndexNodeType nodeType, boolean withLock) {
private void ensureChildNameNotUsed(NodeCreate create, IndexNodeType nodeType, boolean withLock) {
if (create.nodeScope().isChildrenNameDuplicatable())
return;
if (withLock)