diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java index 6a0e16aa..45ae505a 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filedb/FileDatabaseService.java @@ -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) { diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filetemplate/FileTemplateApiController.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filetemplate/FileTemplateApiController.java index ec77811c..15a8e48c 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filetemplate/FileTemplateApiController.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/filetemplate/FileTemplateApiController.java @@ -81,14 +81,14 @@ public class FileTemplateApiController implements FileTemplateApi { public CommonResponse copy(CopyNodeRequest request) { log.info("copy request:{}", request); Future future = indexManager.asyncCopy(request.getCode(), request.getDestParentCode()); - return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝等待超时, 任务在后台运行, 请稍后刷新查看").getCode()); + return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝").getCode()); } @Override public CommonResponse move(MoveNodeRequest request) { log.info("move request:{}", request); Future future = indexManager.asyncMove(request.getCode(), request.getDestParentCode()); - return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动等待超时, 任务在后台运行, 请稍后刷新查看").getCode()); + return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动").getCode()); } @Override diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseApiController.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseApiController.java index ebab1f42..027c73c8 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseApiController.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/templatedb/TemplateDatabaseApiController.java @@ -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 copy(CopyNodeRequest request) { log.info("copy request:{}", request); Future future = indexManager.asyncCopy(request.getCode(), request.getDestParentCode()); - return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝等待超时, 拷贝任务仍在后台运行, 请稍后刷新查看").getCode()); + return CommonResponse.success(asyncUtils.getOrTimeout(future, "拷贝").getCode()); } @Override public CommonResponse move(MoveNodeRequest request) { log.info("move request:{}", request); Future future = indexManager.asyncMove(request.getCode(), request.getDestParentCode()); - return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动等待超时, 移动任务仍在后台运行, 请稍后刷新查看").getCode()); + return CommonResponse.success(asyncUtils.getOrTimeout(future, "移动").getCode()); } @Override diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/AsyncUtils.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/AsyncUtils.java index d75de3a6..ae47849a 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/AsyncUtils.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/AsyncUtils.java @@ -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 getOrTimeout(Future future, String timeoutMessage) { + public T getOrTimeout(Future 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);