Browse Source

修复 StoreService#getMediaInfo 方法

reghao 3 weeks ago
parent
commit
722d060d42

+ 1 - 1
oss-api/src/main/java/cn/reghao/oss/api/iface/StoreService.java

@@ -17,6 +17,6 @@ public interface StoreService {
     List<DiskVolume> getDiskVolumes();
     String getPartialMd5(String absolutePath, long offset, int length);
     void deleteFile(String absolutePath);
-    MediaProps getMediaInfo(String objectId, String sha256sum);
+    MediaProps getMediaInfo(String objectId, long size, String sha256sum);
     ImageInfo getImageInfo(String objectId, String absolutePath);
 }

+ 0 - 1
oss-mgr/src/main/java/cn/reghao/oss/mgr/db/repository/ObjectRepository.java

@@ -90,7 +90,6 @@ public class ObjectRepository {
 
     @Cacheable(cacheNames = "oss:store:objectMeta", key = "#objectName", unless = "#result == null")
     public ObjectMeta getObjectMetaByName(String objectName, long owner) {
-        log.info("cache miss {}", objectName);
         ObjectMeta objectMeta = fileMetaMapper.findObjectMetaByName(objectName, owner);
         return objectMeta;
     }

+ 2 - 1
oss-mgr/src/main/java/cn/reghao/oss/mgr/service/OssClientService.java

@@ -296,10 +296,11 @@ public class OssClientService {
         int httpPort = uploadTask.getHttpPort();
         String absolutePath = "";
         String sha256sum = fileMeta.getSha256sum();
+        long size = fileMeta.getSize();
 
         StoreNode storeNode = storeNodeService.getStoreNode(host, httpPort);
         StoreService storeService = rpcService.getStoreService(storeNode);
-        MediaProps mediaProps = storeService.getMediaInfo(objectId, sha256sum);
+        MediaProps mediaProps = storeService.getMediaInfo(objectId, size, sha256sum);
         if (mediaProps.getVideoProps() == null) {
             throw new RuntimeException(String.format("object with id %s not contain VideoProps", objectId));
         }

+ 1 - 1
oss-sdk/src/test/java/OssClientTest.java

@@ -78,7 +78,7 @@ public class OssClientTest {
         }*/
 
         File file = new File("");
-        UploadFileRet uploadFileRet = ossClient.postObject(101, file);
+        UploadFileRet uploadFileRet = ossClient.postObject(serverInfo, file);
 
         String objectId = "653ee234e1964cfda3578efbe1e7d0b0";
         String signedUrl = ossClient.getSignedUrl(objectId, ObjectAction.access.getName(), null);

+ 3 - 3
oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java

@@ -79,7 +79,7 @@ public class StoreServiceImpl implements StoreService {
         }
     }
 
-    public MediaProps getMediaInfo(String objectId, String sha256sum) {
+    public MediaProps getMediaInfo(String objectId, long size, String sha256sum) {
         try {
             String ssdTempPath = diskService.getSsdTempPath(objectId);
             String hddTempPath = diskService.getHddTempPath(objectId);
@@ -91,9 +91,9 @@ public class StoreServiceImpl implements StoreService {
             File ssdTempFile = new File(ssdTempPath);
 
             File primaryFile;
-            if (hddDataFile.exists()) {
+            if (hddDataFile.exists() && hddDataFile.length() == size) {
                 primaryFile = hddDataFile; // 大概率已经归档成功
-            } else if (hddTempFile.exists()) {
+            } else if (hddTempFile.exists() && hddTempFile.length() == size) {
                 primaryFile = hddTempFile; // 正在 HDD 临时区
             } else {
                 primaryFile = ssdTempFile; // 刚上传完,还在 SSD