private static final Logger logger = LogManager.getLogger();\r
\r
@StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, String exceptedColorSpace, String escortFile)\r
- throws Exception {\r
+ public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize,\r
+ String exceptedColorSpace, String escortFile) throws Exception {\r
if (!RemoteStoreProtocol.LOCAL.equals(sourceStoreUri.getProtocol()))\r
throw new Exception("Store URI protocol must be local.");\r
Path filePath = Paths.get(sourceStoreUri.toString(true), fileName);\r
if (!filePath.toFile().exists())\r
throw new FileNotFoundException("File not exists: " + filePath.toString());\r
\r
+ setDescription("Validating {}", fileName);\r
+\r
Path escortFilePath = Paths.get(escortFile);\r
\r
if (getJobRuntime().isWaitingCancel()) {\r
//EscortFiles.remove(escortFilePath);\r
EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
\r
- Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", fileName);\r
+ Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.",\r
+ fileName);\r
EscortFiles.notifyRecipient(escortFilePath, logger, msg);\r
\r
cancel();\r
if (downloadable != null && expectedFrameNumber == 0)\r
storeCurrentFrames(filePath, downloadable);\r
\r
- if (downloadable != null && downloadable.containsKey("skipValidation") && downloadable.getBoolean("skipValidation"))\r
+ if (downloadable != null && downloadable.containsKey("skipValidation")\r
+ && downloadable.getBoolean("skipValidation")) {\r
+ logger.info(getMarker(), "Validation skipped for {}", fileName);\r
return null;\r
+ }\r
\r
+ logger.info(getMarker(), "Validating {}", fileName);\r
if (expectedFrameNumber > 0 || StringUtils.isNotBlank(exceptedColorSpace))\r
validateMedia(filePath, expectedFrameNumber, exceptedColorSpace, escortFile);\r
\r
}\r
}\r
\r
- private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) throws Exception {\r
+ private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile)\r
+ throws Exception {\r
MediaInfo mi = null;\r
try {\r
mi = new MediaInfo(filePath);\r
if (expectedFrameNumber > 0) {\r
long frames = mi.getFrames();\r
if (Math.abs(frames - expectedFrameNumber) > 3) {\r
- Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", filePath.getFileName());\r
+ Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.",\r
+ filePath.getFileName());\r
EscortFiles.notifyRecipient(Paths.get(escortFile), logger, msg);\r
getJobRuntime().setDisableRetry(true);\r
- throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames);\r
+ throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber\r
+ + ", found: " + frames);\r
}\r
}\r
\r
objIds[0] = object.getObjId();\r
dsmGetList.setObjId(objIds);\r
try {\r
- rc = TSMAPI.dsmBeginGetData(dsmHandle, true, object.getTypeDefinitionForGetData(), dsmGetList, partialObjData);\r
+ rc = TSMAPI.dsmBeginGetData(dsmHandle, true, object.getTypeDefinitionForGetData(), dsmGetList,\r
+ partialObjData);\r
if (rc != TSMAPIConstants.DSM_RC_OK)\r
throw new TSMException(dsmHandle, rc);\r
} catch (JNIException e) {\r
}\r
try {\r
rc = TSMAPI.dsmGetObj(dsmHandle, objIds[0], dataBlk);\r
- if ((rc != TSMAPIConstants.DSM_RC_OK) && (rc != TSMAPIConstants.DSM_RC_FINISHED) && (rc != TSMAPIConstants.DSM_RC_MORE_DATA)) {\r
+ if ((rc != TSMAPIConstants.DSM_RC_OK) && (rc != TSMAPIConstants.DSM_RC_FINISHED)\r
+ && (rc != TSMAPIConstants.DSM_RC_MORE_DATA)) {\r
TSMAPI.dsmEndGetData(dsmHandle);\r
throw new TSMException(dsmHandle, rc);\r
}\r
try {\r
if (rc == TSMAPIConstants.DSM_RC_MORE_DATA) {\r
rc = TSMAPI.dsmGetData(dsmHandle, dataBlk);\r
+\r
+ //muvelet megszakadasakor vegtelen ciklusba kerul az olvasas\r
+ if (rc != TSMAPIConstants.DSM_RC_MORE_DATA && rc != TSMAPIConstants.DSM_RC_FINISHED) {\r
+ logger.error("Transfer interrupted. Code: {}", rc);\r
+ try {\r
+ finishReceive();\r
+ result = -1;\r
+ } catch (Exception e) {\r
+ logger.warn("Interrupted transfer cleanup unsuccessfull. Code: {}", rc);\r
+ }\r
+\r
+ throw new TSMException("Transfer interrupted. Code: " + rc);\r
+ }\r
+\r
object.bytesWorked(dataBlk.getNumBytes());\r
result = dataBlk.getNumBytes();\r
} else if (rc == TSMAPIConstants.DSM_RC_FINISHED) {\r
objAttr.setObjInfoLength((short) 0);\r
objAttr.setObjInfo(null);\r
objAttr.setMcNameP(object.getManagementClassName());\r
- rc = TSMAPI.dsmSendObj(dsmHandle, object.getTypeDefinitionForBindMCAndSendObj(), object.getSendObjBuffer(), objName, objAttr, null);\r
+ rc = TSMAPI.dsmSendObj(dsmHandle, object.getTypeDefinitionForBindMCAndSendObj(),\r
+ object.getSendObjBuffer(), objName, objAttr, null);\r
// prevLength = byteCount;\r
if (rc != TSMAPIConstants.DSM_RC_OK)\r
throw new TSMException(dsmHandle, rc);\r