in online_archive/src/main/scala/VidispineMessageProcessor.scala [295:323]
def handleMetadataUpdate(msg: Json, mediaIngested: VidispineMediaIngested): Future[Either[String, Json]] = {
mediaIngested.itemId match {
case Some(itemId) =>
for {
maybeArchivedItem <- archivedRecordDAO.findByVidispineId(itemId)
maybeIgnoredItem <- ignoredRecordDAO.findByVidispineId(itemId)
result <- (maybeArchivedItem, maybeIgnoredItem) match {
case (_, Some(ignoredItem))=>
logger.info(s"Item $itemId is ignored because ${ignoredItem.ignoreReason}, leaving alone")
Future.failed(SilentDropMessage())
case (Some(archivedItem), None)=>
MDC.put("correlationId", archivedItem.correlationId)
if(archivedItem.archiveHunterIDValidated) {
vidispineFunctions.uploadMetadataToS3(itemId, mediaIngested.essenceVersion, archivedItem)
} else {
logger.info(s"ArchiveHunter ID for ${archivedItem.originalFilePath} has not been validated yet")
Future(Left(s"ArchiveHunter ID for ${archivedItem.originalFilePath} has not been validated yet"))
}
case (None, None)=>
logger.info(s"No record of vidispine item $itemId")
Future(Left(s"No record of vidispine item $itemId"))
}
} yield result
case None =>
logger.error("Metadata update without any item ID")
Future.failed(new RuntimeException(s"Received metadata update ${msg.noSpaces} without any itemId"))
}
}