diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index 01795e79..d1d30e2c 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -2048,28 +2048,20 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { finalLocalFilePath,localTempDirPath,req.getChunkTotal(),localMergeSuccess); } - // 同步调用 - try { - Boolean merge = minioService.merge(chunkBucket, tempDirPath, chunkBucket, req.getObjectKey()); - if(!merge){ - // 删除分片临时数据 - deleteTempFileAfterFailed(tempDirPath,chunkBucket); - log.error("合并分片失败:{}",tempDirPath); - return buildFailedResponse(resp,"文件合并失败",req); - } - // 4. 合并完成后删除临时目录 + // 3. 全部分片已经上传 => 自动合并 + String finalFileName = req.getObjectKey(); + Boolean merge = minioService.merge(chunkBucket, tempDirPath, chunkBucket, finalFileName); + if(!merge){ deleteTempFileAfterFailed(tempDirPath,chunkBucket); - } catch (Exception e) { - log.error("合并分片 error:{}",e.getMessage()); - }finally { + log.error("合并分片失败:{}",tempDirPath); // 删除分片上传的处理中状态 commonStatusUtil.end(CommonStatusUtil.CHUNK_UPLOAD_FILE+req.getBusinessId()); + return buildFailedResponse(resp,req.getSourceFileName()+"合并分片失败",req); } - asyncMerge(req.getObjectKey(),chunkBucket,tempDirPath,req.getBusinessId()); - // 分片文件已经上传完成,提前返回,异步合并数据 -// CompletableFuture.runAsync(() -> { -// asyncMerge(req.getObjectKey(),chunkBucket,tempDirPath,req.getBusinessId()); -// }); + // 4. 合并完成后删除临时目录 + deleteTempFileAfterFailed(tempDirPath,chunkBucket); + // 删除分片上传的处理中状态 + commonStatusUtil.end(CommonStatusUtil.CHUNK_UPLOAD_FILE+req.getBusinessId()); return buildSuccessResponse(resp,req,tempDirPath); }