REQ-3540: 解决依赖问题

This commit is contained in:
yanglin 2025-03-20 16:48:18 +08:00
parent 94948ef38b
commit 2c2b025c8f
4 changed files with 21 additions and 14 deletions

View File

@ -79,7 +79,7 @@ public class FileDatabaseService {
IndexNode templateRoot = checkTemplateDatabaseNode(request.getTemplateDatabaseCode());
FileDatabase db = transaction.execute(unused -> addWorkspace0(request));
Future<?> future = asyncCopySubtree(db, templateRoot, null);
asyncUtils.getOrTimeout(future, "添加等待超时, 添加任务在后台运行, 请稍后刷新查看");
asyncUtils.getOrTimeout(future, "添加租户");
}
private FileDatabase addWorkspace0(FileDatabaseAddWorkspaceRequest request) {
@ -115,7 +115,7 @@ public class FileDatabaseService {
return;
IndexNode templateRoot = checkTemplateDatabaseNode(db.getTemplateDatabaseCode());
Future<?> future = asyncCopySubtree(db, templateRoot, () -> updateCapacity(request).update());
asyncUtils.getOrTimeout(future, "激活等待超时, 激活任务在后台运行, 请稍后刷新查看");
asyncUtils.getOrTimeout(future, "激活");
}
private Future<?> asyncCopySubtree(FileDatabase db, IndexNode templateRoot, Runnable nullablePostProcessor) {

View File

@ -81,14 +81,14 @@ public class FileTemplateApiController implements FileTemplateApi {
public CommonResponse<String> copy(CopyNodeRequest request) {
log.info("copy request:{}", request);
Future<IndexNode> future = indexManager.asyncCopy(request.getCode(), request.getDestParentCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝等待超时, 任务在后台运行, 请稍后刷新查看").getCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝").getCode());
}
@Override
public CommonResponse<String> move(MoveNodeRequest request) {
log.info("move request:{}", request);
Future<IndexNode> future = indexManager.asyncMove(request.getCode(), request.getDestParentCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动等待超时, 任务在后台运行, 请稍后刷新查看").getCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动").getCode());
}
@Override

View File

@ -4,8 +4,6 @@ package cn.axzo.nanopart.doc.file.templatedb;
import java.util.List;
import java.util.concurrent.Future;
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseSearchRequest;
import org.springframework.web.bind.annotation.RestController;
import cn.axzo.basics.common.BeanMapper;
@ -18,18 +16,20 @@ import cn.axzo.nanopart.doc.api.index.request.IndexNodeSearchRequest;
import cn.axzo.nanopart.doc.api.index.request.MoveNodeRequest;
import cn.axzo.nanopart.doc.api.index.request.RenameNodeRequest;
import cn.axzo.nanopart.doc.api.templatedb.TemplateDatabaseApi;
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDatabaseRequest;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateDirRequest;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseCreateFileRequest;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseGetDatabaseOrDirInfoRequest;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseSearchRequest;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseUpdateDatabaseOrDirInfoRequest;
import cn.axzo.nanopart.doc.api.templatedb.reqeust.TemplateDatabaseUploadFileRequest;
import cn.axzo.nanopart.doc.api.templatedb.response.TemplateDatabaseGetDatabaseOrDirInfoResponse;
import cn.axzo.nanopart.doc.entity.IndexNode;
import cn.axzo.nanopart.doc.file.index.IndexManager;
import cn.axzo.nanopart.doc.file.index.IndexQueryService;
import cn.axzo.nanopart.doc.utils.IndexNodeTreeUtils;
import cn.axzo.nanopart.doc.utils.AsyncUtils;
import cn.axzo.nanopart.doc.utils.IndexNodeTreeUtils;
import cn.azxo.framework.common.model.CommonResponse;
import cn.azxo.framework.common.model.Page;
import lombok.RequiredArgsConstructor;
@ -85,14 +85,14 @@ public class TemplateDatabaseApiController implements TemplateDatabaseApi {
public CommonResponse<String> copy(CopyNodeRequest request) {
log.info("copy request:{}", request);
Future<IndexNode> future = indexManager.asyncCopy(request.getCode(), request.getDestParentCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝等待超时, 拷贝任务仍在后台运行, 请稍后刷新查看").getCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝").getCode());
}
@Override
public CommonResponse<String> move(MoveNodeRequest request) {
log.info("move request:{}", request);
Future<IndexNode> future = indexManager.asyncMove(request.getCode(), request.getDestParentCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动等待超时, 移动任务仍在后台运行, 请稍后刷新查看").getCode());
return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动").getCode());
}
@Override

View File

@ -1,18 +1,19 @@
package cn.axzo.nanopart.doc.utils;
import static cn.axzo.nanopart.doc.api.util.BizAssertions.fail;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.dao.CannotAcquireLockException;
import org.springframework.stereotype.Component;
import cn.axzo.nanopart.doc.config.DocProps;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import static cn.axzo.nanopart.doc.api.util.BizAssertions.fail;
/**
* @author yanglin
*/
@ -23,13 +24,19 @@ public class AsyncUtils {
private final DocProps docProps;;
public <T> T getOrTimeout(Future<T> future, String timeoutMessage) {
public <T> T getOrTimeout(Future<T> future, String op) {
try {
return future.get(docProps.getAsyncTimeoutSeconds(), TimeUnit.SECONDS);
}
catch (CannotAcquireLockException e) {
String message = String.format("%s等待超时, 可能正在移动节点, 请稍后刷新页面重试", op);
log.warn(message, e);
throw fail(message);
}
catch (TimeoutException e) {
log.warn(timeoutMessage, e);
throw fail(timeoutMessage);
String message = String.format("%s等待超时, 任务在后台运行, 请稍后刷新查看", op);
log.warn(message, e);
throw fail(message);
}
catch (Exception e) {
log.warn(e.getMessage(), e);