From 3560fcf5acaac787eb768fefb0bb9004c915982f Mon Sep 17 00:00:00 2001 From: "vasary.daniel" Date: Sun, 7 Nov 2021 21:21:53 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32346 --- client/Maestro/Sources/FileSystemSource.cs | 1 - .../server/steps/FileValidatorStep.java | 24 +++++++++++++------ .../user/tsm/client/TSMBufferedClient.java | 23 +++++++++++++++--- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/client/Maestro/Sources/FileSystemSource.cs b/client/Maestro/Sources/FileSystemSource.cs index 1f5c2287..51c6fe61 100644 --- a/client/Maestro/Sources/FileSystemSource.cs +++ b/client/Maestro/Sources/FileSystemSource.cs @@ -173,7 +173,6 @@ namespace Maestro.Sources { SetAcceptableExtensions(fileExtensionFilter); pathWatcherWorker.DoWork += pathWatcherWorker_watchPath; pathWatcherWorker.WorkerReportsProgress = true; - } private void pathWatcherWorker_watchPath(object sender, DoWorkEventArgs e) { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java index 362155f5..fec2a359 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java @@ -22,14 +22,16 @@ public class FileValidatorStep extends JobStep { private static final Logger logger = LogManager.getLogger(); @StepEntry - public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, String exceptedColorSpace, String escortFile) - throws Exception { + public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, + String exceptedColorSpace, String escortFile) throws Exception { if (!RemoteStoreProtocol.LOCAL.equals(sourceStoreUri.getProtocol())) throw new Exception("Store URI protocol must be local."); Path filePath = Paths.get(sourceStoreUri.toString(true), fileName); if (!filePath.toFile().exists()) throw new FileNotFoundException("File not exists: " + filePath.toString()); + setDescription("Validating {}", fileName); + Path escortFilePath = Paths.get(escortFile); if (getJobRuntime().isWaitingCancel()) { @@ -37,7 +39,8 @@ public class FileValidatorStep extends JobStep { //EscortFiles.remove(escortFilePath); EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED)); - Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", fileName); + Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", + fileName); EscortFiles.notifyRecipient(escortFilePath, logger, msg); cancel(); @@ -54,9 +57,13 @@ public class FileValidatorStep extends JobStep { if (downloadable != null && expectedFrameNumber == 0) storeCurrentFrames(filePath, downloadable); - if (downloadable != null && downloadable.containsKey("skipValidation") && downloadable.getBoolean("skipValidation")) + if (downloadable != null && downloadable.containsKey("skipValidation") + && downloadable.getBoolean("skipValidation")) { + logger.info(getMarker(), "Validation skipped for {}", fileName); return null; + } + logger.info(getMarker(), "Validating {}", fileName); if (expectedFrameNumber > 0 || StringUtils.isNotBlank(exceptedColorSpace)) validateMedia(filePath, expectedFrameNumber, exceptedColorSpace, escortFile); @@ -96,7 +103,8 @@ public class FileValidatorStep extends JobStep { } } - private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) throws Exception { + private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) + throws Exception { MediaInfo mi = null; try { mi = new MediaInfo(filePath); @@ -105,10 +113,12 @@ public class FileValidatorStep extends JobStep { if (expectedFrameNumber > 0) { long frames = mi.getFrames(); if (Math.abs(frames - expectedFrameNumber) > 3) { - Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", filePath.getFileName()); + Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", + filePath.getFileName()); EscortFiles.notifyRecipient(Paths.get(escortFile), logger, msg); getJobRuntime().setDisableRetry(true); - throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames); + throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + + ", found: " + frames); } } diff --git a/server/user.tsm.client/src/user/tsm/client/TSMBufferedClient.java b/server/user.tsm.client/src/user/tsm/client/TSMBufferedClient.java index 88754909..b7c4c856 100644 --- a/server/user.tsm.client/src/user/tsm/client/TSMBufferedClient.java +++ b/server/user.tsm.client/src/user/tsm/client/TSMBufferedClient.java @@ -84,7 +84,8 @@ public class TSMBufferedClient extends TSMClient { objIds[0] = object.getObjId(); dsmGetList.setObjId(objIds); try { - rc = TSMAPI.dsmBeginGetData(dsmHandle, true, object.getTypeDefinitionForGetData(), dsmGetList, partialObjData); + rc = TSMAPI.dsmBeginGetData(dsmHandle, true, object.getTypeDefinitionForGetData(), dsmGetList, + partialObjData); if (rc != TSMAPIConstants.DSM_RC_OK) throw new TSMException(dsmHandle, rc); } catch (JNIException e) { @@ -92,7 +93,8 @@ public class TSMBufferedClient extends TSMClient { } try { rc = TSMAPI.dsmGetObj(dsmHandle, objIds[0], dataBlk); - if ((rc != TSMAPIConstants.DSM_RC_OK) && (rc != TSMAPIConstants.DSM_RC_FINISHED) && (rc != TSMAPIConstants.DSM_RC_MORE_DATA)) { + if ((rc != TSMAPIConstants.DSM_RC_OK) && (rc != TSMAPIConstants.DSM_RC_FINISHED) + && (rc != TSMAPIConstants.DSM_RC_MORE_DATA)) { TSMAPI.dsmEndGetData(dsmHandle); throw new TSMException(dsmHandle, rc); } @@ -107,6 +109,20 @@ public class TSMBufferedClient extends TSMClient { try { if (rc == TSMAPIConstants.DSM_RC_MORE_DATA) { rc = TSMAPI.dsmGetData(dsmHandle, dataBlk); + + //muvelet megszakadasakor vegtelen ciklusba kerul az olvasas + if (rc != TSMAPIConstants.DSM_RC_MORE_DATA && rc != TSMAPIConstants.DSM_RC_FINISHED) { + logger.error("Transfer interrupted. Code: {}", rc); + try { + finishReceive(); + result = -1; + } catch (Exception e) { + logger.warn("Interrupted transfer cleanup unsuccessfull. Code: {}", rc); + } + + throw new TSMException("Transfer interrupted. Code: " + rc); + } + object.bytesWorked(dataBlk.getNumBytes()); result = dataBlk.getNumBytes(); } else if (rc == TSMAPIConstants.DSM_RC_FINISHED) { @@ -144,7 +160,8 @@ public class TSMBufferedClient extends TSMClient { objAttr.setObjInfoLength((short) 0); objAttr.setObjInfo(null); objAttr.setMcNameP(object.getManagementClassName()); - rc = TSMAPI.dsmSendObj(dsmHandle, object.getTypeDefinitionForBindMCAndSendObj(), object.getSendObjBuffer(), objName, objAttr, null); + rc = TSMAPI.dsmSendObj(dsmHandle, object.getTypeDefinitionForBindMCAndSendObj(), + object.getSendObjBuffer(), objName, objAttr, null); // prevLength = byteCount; if (rc != TSMAPIConstants.DSM_RC_OK) throw new TSMException(dsmHandle, rc); -- 2.54.0