From 29b374f6d37e8cf6d1bfc259889f518660190ab8 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Thu, 20 Jul 2023 10:57:09 -0400 Subject: [PATCH 01/36] add json dependency --- .../scala/drs/localizer/DrsLocalizerMain.scala | 16 +++++++++++++++- project/Dependencies.scala | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index 1858f395024..04f54d6699e 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -11,12 +11,15 @@ import drs.localizer.CommandLineParser.AccessTokenStrategy.{Azure, Google} import drs.localizer.downloaders.AccessUrlDownloader.Hashes import drs.localizer.downloaders._ import org.apache.commons.csv.{CSVFormat, CSVParser} - import java.io.File import java.nio.charset.Charset import scala.concurrent.duration._ import scala.jdk.CollectionConverters._ import scala.language.postfixOps +import spray.json._ +import DefaultJsonProtocol._ +import java.nio.file.{Paths, Files} +import java.nio.charset.StandardCharsets object DrsLocalizerMain extends IOApp with StrictLogging { @@ -76,6 +79,17 @@ object DrsLocalizerMain extends IOApp with StrictLogging { new DrsLocalizerMain(drsObject, containerPath, drsCredentials, commandLineArguments.googleRequesterPaysProject). resolveAndDownloadWithRetries(downloadRetries = 3, checksumRetries = 1, defaultDownloaderFactory, Option(defaultBackoff)).map(_.exitCode) } + + private def localizeManifest(csvManifestPath : String) = { + // The DRS localizer is provided a manifest in CSV format. + // The getm downloader expects a JSON manifest. + // Here, we convert the CSV into a JSON and save it to a new file. + val csvManifestFile = new File(csvManifestPath) + val csvParser = CSVParser.parse(csvManifestFile, Charset.defaultCharset(), CSVFormat.DEFAULT) + val scalaMap = csvParser.asScala.map(record => (record.get(0), record.get(1))).toMap + val jsonString = scalaMap.toJson.toString + Files.write(Paths.get("manifest.json"), jsonString.getBytes(StandardCharsets.UTF_8)) + } } class DrsLocalizerMain(drsUrl: String, diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 1a7681da1e3..122d224a66d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -644,6 +644,7 @@ object Dependencies { "com.softwaremill.sttp" %% "circe" % sttpV, "com.github.scopt" %% "scopt" % scoptV, "org.apache.commons" % "commons-csv" % commonsCsvV, + "org.gnieh" %% "diffson-spray-json" % diffsonSprayJsonV ) ++ circeDependencies ++ catsDependencies ++ slf4jBindingDependencies ++ languageFactoryDependencies ++ azureDependencies val allProjectDependencies: List[ModuleID] = From ddf0328f9b8926cc8be16b7707a4cdec88887892 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Thu, 20 Jul 2023 16:56:53 -0400 Subject: [PATCH 02/36] make it scala --- .../drs/localizer/DrsLocalizerMain.scala | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index 04f54d6699e..f9b55b50a61 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -11,15 +11,18 @@ import drs.localizer.CommandLineParser.AccessTokenStrategy.{Azure, Google} import drs.localizer.downloaders.AccessUrlDownloader.Hashes import drs.localizer.downloaders._ import org.apache.commons.csv.{CSVFormat, CSVParser} -import java.io.File + +import java.io.{File, IOException} import java.nio.charset.Charset import scala.concurrent.duration._ import scala.jdk.CollectionConverters._ import scala.language.postfixOps import spray.json._ import DefaultJsonProtocol._ -import java.nio.file.{Paths, Files} + +import java.nio.file.{Files, Paths} import java.nio.charset.StandardCharsets +import scala.util.{Failure, Success, Try} object DrsLocalizerMain extends IOApp with StrictLogging { @@ -80,16 +83,26 @@ object DrsLocalizerMain extends IOApp with StrictLogging { resolveAndDownloadWithRetries(downloadRetries = 3, checksumRetries = 1, defaultDownloaderFactory, Option(defaultBackoff)).map(_.exitCode) } - private def localizeManifest(csvManifestPath : String) = { - // The DRS localizer is provided a manifest in CSV format. - // The getm downloader expects a JSON manifest. - // Here, we convert the CSV into a JSON and save it to a new file. - val csvManifestFile = new File(csvManifestPath) - val csvParser = CSVParser.parse(csvManifestFile, Charset.defaultCharset(), CSVFormat.DEFAULT) - val scalaMap = csvParser.asScala.map(record => (record.get(0), record.get(1))).toMap - val jsonString = scalaMap.toJson.toString - Files.write(Paths.get("manifest.json"), jsonString.getBytes(StandardCharsets.UTF_8)) + + // The DRS localizer is provided a manifest in CSV format. + private def loadCSVAsJson(csvManifestPath : String) : Try[JsValue] = { + val scalaMap : Try[Map[String, String]] = for { + openFile <- Try(new File(csvManifestPath)) + csvParser <- Try(CSVParser.parse(openFile, Charset.defaultCharset(), CSVFormat.DEFAULT)) + map <- Try(csvParser.getRecords.asScala.map(record => (record.get(0), record.get(1))).toMap) + if !map.isEmpty + } yield map + Try(scalaMap.get.toJson) } + + private def writeJsonManifest(destinationPath : String, jsonData : JsValue): Try[String] = { + Try(Files.write(Paths.get(destinationPath), jsonData.toString().getBytes(StandardCharsets.UTF_8)).toString) + } + //getm + private def generateJsonPathForManifest(csvPath : String) : String = { + csvPath.substring(0, csvPath.lastIndexOf('.')) + "_manifest.json" + } + } class DrsLocalizerMain(drsUrl: String, From 7d6cd8b96462c20204036e5d574e6470b637dfbf Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Fri, 21 Jul 2023 16:21:34 -0400 Subject: [PATCH 03/36] lots of scaffolding --- .../drs/localizer/DrsLocalizerMain.scala | 42 +++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index f9b55b50a61..d64662b2911 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -83,26 +83,44 @@ object DrsLocalizerMain extends IOApp with StrictLogging { resolveAndDownloadWithRetries(downloadRetries = 3, checksumRetries = 1, defaultDownloaderFactory, Option(defaultBackoff)).map(_.exitCode) } - - // The DRS localizer is provided a manifest in CSV format. - private def loadCSVAsJson(csvManifestPath : String) : Try[JsValue] = { - val scalaMap : Try[Map[String, String]] = for { + // Overall plan for bulk DRS downloads: + // 1) Open the CSV provided to Cromwell Drs Localizer as a map of DRS URI -> Destination Filepath + // 2) Resolve each DRS URI in the map. This will yield two maps, because a drs URI can resolve to either + // a gs:// URI or an https:// uri, each of which require different downloaders. + // 3a) Invoke the GcsUriDownloader (and its underlying gsutil) to download all gs:// URIs in parallel. + // 3b) Invoke the AccessUrlDownloader (and its underlying getm) to download all https:// URIs in parallel. + // - getm requires a --manifest argument, which is a .json file that is a map of https:// URI to destination filepath + // 4) Report success or failure as granularly as is reasonably possible. + private def loadCSVAsMap(csvManifestPath : String) : Try[Map[String, String]] = { + for { openFile <- Try(new File(csvManifestPath)) csvParser <- Try(CSVParser.parse(openFile, Charset.defaultCharset(), CSVFormat.DEFAULT)) map <- Try(csvParser.getRecords.asScala.map(record => (record.get(0), record.get(1))).toMap) - if !map.isEmpty + if !map.isEmpty //An empty map should be considered an error - we're expecting at least one k/v pair in the manifest. } yield map - Try(scalaMap.get.toJson) } + private def resolveURIs(drsUrlToDownloadLocationMap : Map[String,String]) : Try[Map[String, String]] = { + val accessUrlToDownloadLocationMap = drsUrlToDownloadLocationMap.map((drsUrl, downloadLocation) => resolve) + } + + //Write string to file. Returns the filepath that the string was written to. private def writeJsonManifest(destinationPath : String, jsonData : JsValue): Try[String] = { Try(Files.write(Paths.get(destinationPath), jsonData.toString().getBytes(StandardCharsets.UTF_8)).toString) } - //getm + // We're going to write a JSON version of the CSV manifest we're provided. + // Save the new manifest to wherever the CSV is saved, but replace .csv with _manifest.json. private def generateJsonPathForManifest(csvPath : String) : String = { csvPath.substring(0, csvPath.lastIndexOf('.')) + "_manifest.json" } + // The getm tool can read in a JSON manifest and download all files in parallel. + // Here, we invoke it with the provided manifest file. + // The manifest file should have 1 or more key value pairs, where each key is a drs URI + // and each value is a destination path for where that file should be localized to. + private def downloadInParallel(jsonManifestPath : String) : IO[ExitCode] = { + + } } class DrsLocalizerMain(drsUrl: String, @@ -190,4 +208,14 @@ class DrsLocalizerMain(drsUrl: String, } } yield downloader } + + //TODO: use this fn to resolve drs URIs, split the responses into gs:// and https:// groups, and invoke new downloaders for each of those groups. + private[localizer] def resolveDrsUrl(drsUrl: String): IO[DrsResolverResponse] = { + val fields = NonEmptyList.of(DrsResolverField.GsUri, DrsResolverField.GoogleServiceAccount, DrsResolverField.AccessUrl, DrsResolverField.Hashes) + for { + resolver <- getDrsPathResolver + drsResolverResponse <- resolver.resolveDrs(drsUrl, fields) + } yield drsResolverResponse + } + } From be95d22121578783efb33a577a4b2ceee2db69db Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Thu, 3 Aug 2023 16:42:03 -0400 Subject: [PATCH 04/36] forward progress --- .../drs/localizer/DrsLocalizerMain.scala | 53 +- ...w.194f43e1-319b-402d-9c1d-ff704a1db2a2.log | 585 +++++++++++++++ ...w.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log | 670 ++++++++++++++++++ .../TesAsyncBackendJobExecutionActor.scala | 5 +- 4 files changed, 1308 insertions(+), 5 deletions(-) create mode 100644 https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log create mode 100644 https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index d64662b2911..c90fdac305c 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -19,6 +19,8 @@ import scala.jdk.CollectionConverters._ import scala.language.postfixOps import spray.json._ import DefaultJsonProtocol._ +import drs.localizer.DrsLocalizerMain.{downloadInParallel, generateJsonPathForManifest, loadCSVAsMap, writeJsonManifest} +import drs.localizer.URIType.{GCS, URIType} import java.nio.file.{Files, Paths} import java.nio.charset.StandardCharsets @@ -123,6 +125,11 @@ object DrsLocalizerMain extends IOApp with StrictLogging { } } +object URIType extends Enumeration { + type URIType = Value + val GCS, HTTPS = Value +} + class DrsLocalizerMain(drsUrl: String, downloadLoc: String, drsCredentials: DrsCredentials, @@ -210,12 +217,52 @@ class DrsLocalizerMain(drsUrl: String, } //TODO: use this fn to resolve drs URIs, split the responses into gs:// and https:// groups, and invoke new downloaders for each of those groups. - private[localizer] def resolveDrsUrl(drsUrl: String): IO[DrsResolverResponse] = { + private[localizer] def resolveDrsUrl(resolverObject: IO[DrsLocalizerDrsPathResolver], drsUrlToResolve: String): IO[DrsResolverResponse] = { val fields = NonEmptyList.of(DrsResolverField.GsUri, DrsResolverField.GoogleServiceAccount, DrsResolverField.AccessUrl, DrsResolverField.Hashes) for { - resolver <- getDrsPathResolver - drsResolverResponse <- resolver.resolveDrs(drsUrl, fields) + resolver <- resolverObject + drsResolverResponse <- resolver.resolveDrs(drsUrlToResolve, fields) } yield drsResolverResponse } + private[localizer] def toUriType(drsResponse: DrsResolverResponse) : Try[URIType] = { + (drsResponse.accessUrl, drsResponse.gsUri) match { + case (Some(accessUrl), _) => + Try(URIType.HTTPS) + case (_, Some(gcsPath)) => + Try(URIType.GCS) + case _ => + Failure(new RuntimeException(DrsPathResolver.ExtractUriErrorMsg)) + } + } + + private[localizer] def bulkResolve(): Unit = { + // Load path resolver once from config + val resolver = getDrsPathResolver + + // resolve all the URIs once. + val resolvedUris : Try[Map[DrsResolverResponse, String]] = for { + drsUriToDownloadLocationMap : Map[String, String] <- loadCSVAsMap("path/to/manifest") + resolvedUriToDownloadLocationMap : Map[DrsResolverResponse, String] = drsUriToDownloadLocationMap.map(value => (resolveDrsUrl(resolver, value._1), value._2)) + } yield resolvedUriToDownloadLocationMap + + // find the GCS ones and download them + for { + drsResponses <- resolvedUris + gcsUris <- drsResponses.filter(drsResponse => toUriType(drsResponse) == URIType.GCS) + } + + //find the HTTPS ones and download them + for { + drsResponses <- resolvedUris + httpsUris = drsResponses.filter(drsResponse => toUriType(drsResponse._1) == URIType.HTTPS) + uriToDownloadLocation = httpsUris.map(drsResponseToDownloadLoc => (drsResponseToDownloadLoc._1.accessUrl.get.toString, drsResponseToDownloadLoc._2)) + jsonString <- uriToDownloadLocation.toJson + pathOfJsonFile <- writeJsonManifest(generateJsonPathForManifest("path/to/manifest"), jsonString) + downloadSuccess <- downloadInParallel(pathOfJsonFile) + } + + } + } + diff --git a/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log b/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log new file mode 100644 index 00000000000..6fc9392fd95 --- /dev/null +++ b/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log @@ -0,0 +1,585 @@ +2023-07-27 11:43:30,007 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Parsing workflow as WDL draft-2 +2023-07-27 11:43:30,016 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Call-to-Backend assignments: wf_hello.hello -> TES +2023-07-27 11:43:30,407 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:45:40,558 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Parsing workflow as WDL draft-2 +2023-07-27 11:45:40,567 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Call-to-Backend assignments: wf_hello.hello -> TES +2023-07-27 11:45:41,848 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:46:42,262 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 2. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:47:42,795 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 3. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:48:43,290 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 4. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:49:43,688 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 5. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:50:44,159 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 6. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted diff --git a/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log b/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log new file mode 100644 index 00000000000..52d8225d72b --- /dev/null +++ b/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log @@ -0,0 +1,670 @@ +2023-07-27 11:41:05,061 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Parsing workflow as WDL draft-2 +2023-07-27 11:41:05,559 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Call-to-Backend assignments: wf_hello.hello -> TES +2023-07-27 11:41:07,007 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:42:56,106 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Parsing workflow as WDL draft-2 +2023-07-27 11:42:56,535 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Call-to-Backend assignments: wf_hello.hello -> TES +2023-07-27 11:42:57,853 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:45:39,659 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Parsing workflow as WDL draft-2 +2023-07-27 11:45:40,103 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Call-to-Backend assignments: wf_hello.hello -> TES +2023-07-27 11:45:41,493 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:46:41,908 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 2. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:47:42,407 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 3. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:48:42,874 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 4. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:49:43,277 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 5. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted +2023-07-27 11:50:43,751 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 6. Will retry up to 16 times. Next retry is in 1 minute +cromwell.core.CromwellAggregatedException: Initialization Failure: + + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) + at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) + at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) + at akka.actor.FSM.processEvent(FSM.scala:707) + at akka.actor.FSM.processEvent$(FSM.scala:704) + at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) + at akka.actor.LoggingFSM.processEvent(FSM.scala:847) + at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) + at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) + at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) + at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) + at akka.actor.Actor.aroundReceive(Actor.scala:539) + at akka.actor.Actor.aroundReceive$(Actor.scala:537) + at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) + at akka.actor.Timers.aroundReceive(Timers.scala:55) + at akka.actor.Timers.aroundReceive$(Timers.scala:40) + at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) + at akka.actor.ActorCell.invoke(ActorCell.scala:583) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) + at akka.dispatch.Mailbox.run(Mailbox.scala:229) + at akka.dispatch.Mailbox.exec(Mailbox.scala:241) + at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) + at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) + at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) + at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) + Suppressed: bio.terra.workspace.client.ApiException: + +401 Unauthorized + +

Unauthorized

+

This server could not verify that you +are authorized to access the document +requested. Either you supplied the wrong +credentials (e.g., bad password), or your +browser doesn't understand how to supply +the credentials required.

+ + + at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) + at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) + at scala.util.Try$.apply(Try.scala:210) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) + at scala.util.Success.flatMap(Try.scala:258) + at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) + at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) + at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) + at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) + at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) + at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) + at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) + at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) + at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) + at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) + at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) + at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) + at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) + at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) + at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) + at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) + at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) + ... 4 common frames omitted diff --git a/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala b/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala index 7ff507e63f2..e46212817c4 100644 --- a/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala +++ b/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala @@ -161,8 +161,9 @@ class TesAsyncBackendJobExecutionActor(override val standardParams: StandardAsyn jobShell, mode) }) - - tesTask.map(TesTask.makeTask) + val testask = tesTask.map(TesTask.makeTask) + jobLogger.info(testask.toString) + testask } def writeScriptFile(): Future[Unit] = { From 251972713b9adb66d13e7881811e120f4ca517f7 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Fri, 4 Aug 2023 12:41:27 -0400 Subject: [PATCH 05/36] stash --- .../main/scala/drs/localizer/DrsLocalizerMain.scala | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index c90fdac305c..43fc8f832d2 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -102,10 +102,6 @@ object DrsLocalizerMain extends IOApp with StrictLogging { } yield map } - private def resolveURIs(drsUrlToDownloadLocationMap : Map[String,String]) : Try[Map[String, String]] = { - val accessUrlToDownloadLocationMap = drsUrlToDownloadLocationMap.map((drsUrl, downloadLocation) => resolve) - } - //Write string to file. Returns the filepath that the string was written to. private def writeJsonManifest(destinationPath : String, jsonData : JsValue): Try[String] = { Try(Files.write(Paths.get(destinationPath), jsonData.toString().getBytes(StandardCharsets.UTF_8)).toString) @@ -247,20 +243,15 @@ class DrsLocalizerMain(drsUrl: String, } yield resolvedUriToDownloadLocationMap // find the GCS ones and download them - for { - drsResponses <- resolvedUris - gcsUris <- drsResponses.filter(drsResponse => toUriType(drsResponse) == URIType.GCS) - } - //find the HTTPS ones and download them - for { + val exitCode: IO[ExitCode] = for { drsResponses <- resolvedUris httpsUris = drsResponses.filter(drsResponse => toUriType(drsResponse._1) == URIType.HTTPS) uriToDownloadLocation = httpsUris.map(drsResponseToDownloadLoc => (drsResponseToDownloadLoc._1.accessUrl.get.toString, drsResponseToDownloadLoc._2)) jsonString <- uriToDownloadLocation.toJson pathOfJsonFile <- writeJsonManifest(generateJsonPathForManifest("path/to/manifest"), jsonString) downloadSuccess <- downloadInParallel(pathOfJsonFile) - } + } yield downloadSuccess } From 81f19a5e8b46e557ccf1dd9f1a99666ea3354c97 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Fri, 4 Aug 2023 16:29:17 -0400 Subject: [PATCH 06/36] more progress --- .../drs/localizer/DrsLocalizerMain.scala | 132 +++++++++++------- .../downloaders/BulkAccessUrlDownloader.scala | 112 +++++++++++++++ .../downloaders/DownloaderFactory.scala | 2 + 3 files changed, 194 insertions(+), 52 deletions(-) create mode 100644 cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index 43fc8f832d2..9c7754b9944 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -19,7 +19,6 @@ import scala.jdk.CollectionConverters._ import scala.language.postfixOps import spray.json._ import DefaultJsonProtocol._ -import drs.localizer.DrsLocalizerMain.{downloadInParallel, generateJsonPathForManifest, loadCSVAsMap, writeJsonManifest} import drs.localizer.URIType.{GCS, URIType} import java.nio.file.{Files, Paths} @@ -55,6 +54,10 @@ object DrsLocalizerMain extends IOApp with StrictLogging { override def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], downloadLoc: String, requesterPaysProjectOption: Option[String]): IO[Downloader] = IO.pure(GcsUriDownloader(gcsPath, serviceAccountJsonOption, downloadLoc, requesterPaysProjectOption)) + + override def buildBulkAccessUrlDownloader(urlToDownloadDestinationMap: Map[AccessUrl, String], hashes: Hashes): IO[Downloader] = { + IO.pure(BulkAccessUrlDownloader(urlToDownloadDestinationMap, hashes)) + } } private def printUsage: IO[ExitCode] = { @@ -80,6 +83,82 @@ object DrsLocalizerMain extends IOApp with StrictLogging { } } + def getDrsPathResolver(drsCredentials: DrsCredentials): IO[DrsLocalizerDrsPathResolver] = { + IO { + val drsConfig = DrsConfig.fromEnv(sys.env) + logger.info(s"Using ${drsConfig.drsResolverUrl} to resolve DRS Objects") + new DrsLocalizerDrsPathResolver(drsConfig, drsCredentials) + } + } + + private[localizer] def toUriType(drsResponse: DrsResolverResponse): Try[URIType] = { + (drsResponse.accessUrl, drsResponse.gsUri) match { + case (Some(accessUrl), _) => + Try(URIType.HTTPS) + case (_, Some(gcsPath)) => + Try(URIType.GCS) + case _ => + Failure(new RuntimeException(DrsPathResolver.ExtractUriErrorMsg)) + } + } + def runLocalizer(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials, dummy : Boolean): IO[ExitCode] = { + commandLineArguments.manifestPath match { + case Some(manifestPath) => { + val resolvedUris: Try[Map[DrsResolverResponse, String]] = for { + resolver: IO[DrsLocalizerDrsPathResolver] <- getDrsPathResolver(drsCredentials) + resolvedDrsUris: Try[Map[DrsResolverResponse, String]] <- resolveCSVManifest(manifestPath, resolver) + if !resolvedDrsUris.isEmpty + } yield resolvedDrsUris + + if(resolvedUris.isFailure) { + return IO(ExitCode.Error) //Could not resolve DRS urls. Fail before attempting to download anything + } + + val accessUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == URIType.HTTPS) + val googleUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == URIType.GCS) + + val bulkAccessResult : IO[ExitCode] = bulkDownloadResolvedAccessUrls(accessUrls, drsCredentials) + val googleResult : List[IO[DownloadResult]] = bulkDownloadResolvedGoogleUrls(googleUrls, commandLineArguments.googleRequesterPaysProject) + + //TODO: return an appropriate exit code + } + case None => + val drsObject = commandLineArguments.drsObject.get + val containerPath = commandLineArguments.containerPath.get + localizeFile(commandLineArguments, drsCredentials, drsObject, containerPath) + } + } + + def bulkDownloadResolvedAccessUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], drsCredentials: DrsCredentials): IO[ExitCode] = { + //TODO: invoke new bulk getm downloader + } + + def bulkDownloadResolvedGoogleUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], googleRequesterPaysProject : Option[String]) : List[IO[DownloadResult]] = { + resolvedUrlToOutputDestination.map(pair => { + val drsResponse : DrsResolverResponse = pair._1 + val containerPath : String = pair._2 + val serviceAccountJsonOption = drsResponse.googleServiceAccount.map(_.data.spaces2) + val downloader = defaultDownloaderFactory.buildGcsUriDownloader( + gcsPath = drsResponse.gsUri.getOrElse("MISSING_GOOGLE_URI"), + serviceAccountJsonOption = serviceAccountJsonOption, + downloadLoc = containerPath, + requesterPaysProjectOption = googleRequesterPaysProject) + downloader.flatMap(_.download) + }).toList + } + + def resolveDrsUrl(resolverObject: DrsLocalizerDrsPathResolver, drsUrlToResolve: String): IO[DrsResolverResponse] = { + val fields = NonEmptyList.of(DrsResolverField.GsUri, DrsResolverField.GoogleServiceAccount, DrsResolverField.AccessUrl, DrsResolverField.Hashes) + resolverObject.resolveDrs(drsUrlToResolve, fields) + } + // resolve all the URIs once. + def resolveCSVManifest(csvManifestPath: String, resolver: DrsLocalizerDrsPathResolver) : Try[Map[DrsResolverResponse, String]] = { + for { + drsUriToDownloadLocationMap: Map[String, String] <- loadCSVAsMap(csvManifestPath) + resolvedUriToDownloadLocationMap: Map[DrsResolverResponse, String] = drsUriToDownloadLocationMap.map(value => (resolveDrsUrl(resolver, value._1), value._2)) + } yield resolvedUriToDownloadLocationMap + } + private def localizeFile(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials, drsObject: String, containerPath: String) = { new DrsLocalizerMain(drsObject, containerPath, drsCredentials, commandLineArguments.googleRequesterPaysProject). resolveAndDownloadWithRetries(downloadRetries = 3, checksumRetries = 1, defaultDownloaderFactory, Option(defaultBackoff)).map(_.exitCode) @@ -112,13 +191,6 @@ object DrsLocalizerMain extends IOApp with StrictLogging { csvPath.substring(0, csvPath.lastIndexOf('.')) + "_manifest.json" } - // The getm tool can read in a JSON manifest and download all files in parallel. - // Here, we invoke it with the provided manifest file. - // The manifest file should have 1 or more key value pairs, where each key is a drs URI - // and each value is a destination path for where that file should be localized to. - private def downloadInParallel(jsonManifestPath : String) : IO[ExitCode] = { - - } } object URIType extends Enumeration { @@ -211,49 +283,5 @@ class DrsLocalizerMain(drsUrl: String, } } yield downloader } - - //TODO: use this fn to resolve drs URIs, split the responses into gs:// and https:// groups, and invoke new downloaders for each of those groups. - private[localizer] def resolveDrsUrl(resolverObject: IO[DrsLocalizerDrsPathResolver], drsUrlToResolve: String): IO[DrsResolverResponse] = { - val fields = NonEmptyList.of(DrsResolverField.GsUri, DrsResolverField.GoogleServiceAccount, DrsResolverField.AccessUrl, DrsResolverField.Hashes) - for { - resolver <- resolverObject - drsResolverResponse <- resolver.resolveDrs(drsUrlToResolve, fields) - } yield drsResolverResponse - } - - private[localizer] def toUriType(drsResponse: DrsResolverResponse) : Try[URIType] = { - (drsResponse.accessUrl, drsResponse.gsUri) match { - case (Some(accessUrl), _) => - Try(URIType.HTTPS) - case (_, Some(gcsPath)) => - Try(URIType.GCS) - case _ => - Failure(new RuntimeException(DrsPathResolver.ExtractUriErrorMsg)) - } - } - - private[localizer] def bulkResolve(): Unit = { - // Load path resolver once from config - val resolver = getDrsPathResolver - - // resolve all the URIs once. - val resolvedUris : Try[Map[DrsResolverResponse, String]] = for { - drsUriToDownloadLocationMap : Map[String, String] <- loadCSVAsMap("path/to/manifest") - resolvedUriToDownloadLocationMap : Map[DrsResolverResponse, String] = drsUriToDownloadLocationMap.map(value => (resolveDrsUrl(resolver, value._1), value._2)) - } yield resolvedUriToDownloadLocationMap - - // find the GCS ones and download them - //find the HTTPS ones and download them - val exitCode: IO[ExitCode] = for { - drsResponses <- resolvedUris - httpsUris = drsResponses.filter(drsResponse => toUriType(drsResponse._1) == URIType.HTTPS) - uriToDownloadLocation = httpsUris.map(drsResponseToDownloadLoc => (drsResponseToDownloadLoc._1.accessUrl.get.toString, drsResponseToDownloadLoc._2)) - jsonString <- uriToDownloadLocation.toJson - pathOfJsonFile <- writeJsonManifest(generateJsonPathForManifest("path/to/manifest"), jsonString) - downloadSuccess <- downloadInParallel(pathOfJsonFile) - } yield downloadSuccess - - } - } diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala new file mode 100644 index 00000000000..11096d17bf5 --- /dev/null +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala @@ -0,0 +1,112 @@ +package drs.localizer.downloaders + +import cats.data.Validated.{Invalid, Valid} +import cats.effect.{ExitCode, IO} +import cloud.nio.impl.drs.AccessUrl +import com.typesafe.scalalogging.StrictLogging +import common.exception.AggregatedMessageException +import common.util.StringUtil._ +import common.validation.ErrorOr.ErrorOr +import drs.localizer.downloaders.AccessUrlDownloader._ + +import scala.sys.process.{Process, ProcessLogger} +import scala.util.Try +import scala.util.matching.Regex + +case class GetmResult(returnCode: Int, stderr: String) + +case class BulkAccessUrlDownloader(urlToDownlaodLocation : Map[AccessUrl, String], hashes: Hashes) extends Downloader with StrictLogging { + + def generateJsonManifest : Try[String] = { + //TODO: Make a JSON file with the structure: + //[ + // { + // "url" : accessUrl, + // "filepath" : containerPath, + // "checksum" : "not sure what goes here", + // "checksum-algorithm" : GetmChecksum(hashes, accessUrl) + // }, + // { + // "url" : accessUrl, + // "filepath": containerPath, + // "checksum" : "not sure what goes here", + // "checksum-algorithm": GetmChecksum(hashes, accessUrl) + // } + //] + + } + + def generateDownloadScript: ErrorOr[String] = { + val signedUrl = accessUrl.url + GetmChecksum(hashes, accessUrl).args map { checksumArgs => + s"""mkdir -p $$(dirname '$downloadLoc') && rm -f '$downloadLoc' && getm $checksumArgs --filepath '$downloadLoc' '$signedUrl'""" + } + } + + def runGetm: IO[GetmResult] = { + generateDownloadScript match { + case Invalid(errors) => + IO.raiseError(AggregatedMessageException("Error generating access URL download script", errors.toList)) + case Valid(script) => IO { + val copyCommand = Seq("bash", "-c", script) + val copyProcess = Process(copyCommand) + + val stderr = new StringBuilder() + val errorCapture: String => Unit = { s => stderr.append(s); () } + + // As of `getm` version 0.0.4 the contents of stdout do not appear to be interesting (only a progress bar + // with no option to suppress it), so ignore stdout for now. If stdout becomes interesting in future versions + // of `getm` it can be captured just like stderr is being captured here. + val returnCode = copyProcess ! ProcessLogger(_ => (), errorCapture) + + GetmResult(returnCode, stderr.toString().trim()) + } + } + } + + override def download: IO[DownloadResult] = { + // We don't want to log the unmasked signed URL here. On a PAPI backend this log will end up under the user's + // workspace bucket, but that bucket may have visibility different than the data referenced by the signed URL. + val masked = accessUrl.url.maskSensitiveUri + logger.info(s"Attempting to download data to '$downloadLoc' from access URL '$masked'.") + + runGetm map toDownloadResult + } + + def toDownloadResult(getmResult: GetmResult): DownloadResult = { + getmResult match { + case GetmResult(0, stderr) if stderr.isEmpty => + DownloadSuccess + case GetmResult(0, stderr) => + stderr match { + case ChecksumFailureMessage() => + ChecksumFailure + case _ => + UnrecognizedRetryableDownloadFailure(ExitCode(0)) + } + case GetmResult(rc, stderr) => + stderr match { + case HttpStatusMessage(status) => + Integer.parseInt(status) match { + case 408 | 429 => + RecognizedRetryableDownloadFailure(ExitCode(rc)) + case s if s / 100 == 4 => + FatalDownloadFailure(ExitCode(rc)) + case s if s / 100 == 5 => + RecognizedRetryableDownloadFailure(ExitCode(rc)) + case _ => + UnrecognizedRetryableDownloadFailure(ExitCode(rc)) + } + case _ => + UnrecognizedRetryableDownloadFailure(ExitCode(rc)) + } + } + } +} + +object AccessUrlDownloader { + type Hashes = Option[Map[String, String]] + + val ChecksumFailureMessage: Regex = raw""".*AssertionError: Checksum failed!.*""".r + val HttpStatusMessage: Regex = raw"""ERROR:getm\.cli.*"status_code":\s*(\d+).*""".r +} diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala index 8465ede0dd6..76fb1e426a9 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala @@ -7,6 +7,8 @@ import drs.localizer.downloaders.AccessUrlDownloader.Hashes trait DownloaderFactory { def buildAccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes: Hashes): IO[Downloader] + def buildBulkAccessUrlDownloader(urlToDownloadDestinationMap : Map[AccessUrl, String], hashes: Hashes) : IO[Downloader] + def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], downloadLoc: String, From 9e6b1f5aa70022c192ac7404a176201f02e4f1d3 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Tue, 8 Aug 2023 16:55:23 -0400 Subject: [PATCH 07/36] json --- .../downloaders/AccessUrlDownloader.scala | 27 +++++++++++++++++++ .../localizer/downloaders/GetmChecksum.scala | 8 +++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala index ae6f2fa4f1e..8d360a91483 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala @@ -10,6 +10,7 @@ import common.validation.ErrorOr.ErrorOr import drs.localizer.downloaders.AccessUrlDownloader._ import scala.sys.process.{Process, ProcessLogger} +import scala.util.Try import scala.util.matching.Regex case class GetmResult(returnCode: Int, stderr: String) @@ -22,6 +23,32 @@ case class AccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes } } + def toJsonString(accessUrl: String, filepath : String, checksum : ErrorOr[String], checksumAlgorithm : String): String = { + //todo: use flatmap + if (checksum.isValid) { + return s"""{ + | "url" : "$accessUrl" + | "filepath" : "$filepath" + | "checksum" : "$checksum" + | "checksum-algorithm" : "$checksumAlgorithm" + | } + |""".stripMargin + } + + s"""{ + | "url" : "$accessUrl" + | "filepath" : "$filepath" + | } + |""".stripMargin + } + def generateJsonManifest(accessUrlToDownloadDest : Map[AccessUrl, String]) : Try[String] = { + var jsonString : String = "[\n" + for (pair <- accessUrlToDownloadDest) + jsonString ++ toJsonString(pair._1.url, pair._2, GetmChecksum(hashes, pair._1).escapedChecksum, GetmChecksum(hashes, pair._1).getmAlgorithm) + + jsonString ++ "]" + } + def runGetm: IO[GetmResult] = { generateDownloadScript match { case Invalid(errors) => diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala index 2a39a6543a3..dfc84fc1949 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala @@ -13,13 +13,15 @@ sealed trait GetmChecksum { def getmAlgorithm: String def rawValue: String def value: ErrorOr[String] = rawValue.validNel + def escapedChecksum : ErrorOr[String] = { + value map { v => StringEscapeUtils.escapeXSI(v)} + } def args: ErrorOr[String] = { // The value for `--checksum-algorithm` is constrained by the algorithm names in the `sealed` hierarchy of // `GetmChecksum`, but the value for `--checksum` is largely a function of data returned by the DRS server. // Shell escape this to avoid injection. - value map { v => - val escapedValue = StringEscapeUtils.escapeXSI(v) - s"--checksum-algorithm '$getmAlgorithm' --checksum $escapedValue" + value map { _ => + s"--checksum-algorithm '$getmAlgorithm' --checksum $escapedChecksum" } } } From 61f248eaf4cdcf1042fd9a9ef7d5d6937fbbad04 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Mon, 14 Aug 2023 10:14:08 -0400 Subject: [PATCH 08/36] stash --- .../drs/localizer/DrsLocalizerMain.scala | 17 ++------ .../downloaders/AccessUrlDownloader.scala | 40 +++++++++++++++---- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index 9c7754b9944..8439c5c78f3 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -65,6 +65,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { IO.pure(ExitCode.Error) } + /* def runLocalizer(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials): IO[ExitCode] = { commandLineArguments.manifestPath match { case Some(manifestPath) => @@ -82,6 +83,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { localizeFile(commandLineArguments, drsCredentials, drsObject, containerPath) } } + */ def getDrsPathResolver(drsCredentials: DrsCredentials): IO[DrsLocalizerDrsPathResolver] = { IO { @@ -101,7 +103,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { Failure(new RuntimeException(DrsPathResolver.ExtractUriErrorMsg)) } } - def runLocalizer(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials, dummy : Boolean): IO[ExitCode] = { + def runLocalizer(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials): IO[ExitCode] = { commandLineArguments.manifestPath match { case Some(manifestPath) => { val resolvedUris: Try[Map[DrsResolverResponse, String]] = for { @@ -112,7 +114,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { if(resolvedUris.isFailure) { return IO(ExitCode.Error) //Could not resolve DRS urls. Fail before attempting to download anything - } + } val accessUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == URIType.HTTPS) val googleUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == URIType.GCS) @@ -180,17 +182,6 @@ object DrsLocalizerMain extends IOApp with StrictLogging { if !map.isEmpty //An empty map should be considered an error - we're expecting at least one k/v pair in the manifest. } yield map } - - //Write string to file. Returns the filepath that the string was written to. - private def writeJsonManifest(destinationPath : String, jsonData : JsValue): Try[String] = { - Try(Files.write(Paths.get(destinationPath), jsonData.toString().getBytes(StandardCharsets.UTF_8)).toString) - } - // We're going to write a JSON version of the CSV manifest we're provided. - // Save the new manifest to wherever the CSV is saved, but replace .csv with _manifest.json. - private def generateJsonPathForManifest(csvPath : String) : String = { - csvPath.substring(0, csvPath.lastIndexOf('.')) + "_manifest.json" - } - } object URIType extends Enumeration { diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala index 8d360a91483..25cf88d53c9 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala @@ -3,6 +3,9 @@ package drs.localizer.downloaders import cats.data.Validated.{Invalid, Valid} import cats.effect.{ExitCode, IO} import cloud.nio.impl.drs.AccessUrl + +import java.nio.file.{Files, Path, Paths} +import java.nio.charset.StandardCharsets import com.typesafe.scalalogging.StrictLogging import common.exception.AggregatedMessageException import common.util.StringUtil._ @@ -23,30 +26,51 @@ case class AccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes } } + def generateBulkDownloadScript: ErrorOr[String] = { + val manifestPath = generateJsonManifest() + } + def toJsonString(accessUrl: String, filepath : String, checksum : ErrorOr[String], checksumAlgorithm : String): String = { - //todo: use flatmap + //NB: trailing comma is being removed in generateJsonManifest if (checksum.isValid) { return s"""{ | "url" : "$accessUrl" | "filepath" : "$filepath" | "checksum" : "$checksum" | "checksum-algorithm" : "$checksumAlgorithm" - | } + | }, |""".stripMargin } s"""{ | "url" : "$accessUrl" | "filepath" : "$filepath" - | } + | }, |""".stripMargin } - def generateJsonManifest(accessUrlToDownloadDest : Map[AccessUrl, String]) : Try[String] = { + def generateJsonManifest(accessUrlToDownloadDest : Map[AccessUrl, String]) : Try[Path] = { + //write a json file that looks like: + // [ + // { + // "url" : "www.123.com" + // "filepath" : "path/to/where/123/should/be/downloaded" + // "checksum" : "sdfjndsfjkfsdjsdfkjsdf" + // "checksum-algorithm" : "md5" + // }, + // { + // "url" : "www.567.com" + // "filepath" : "path/to/where/567/should/be/downloaded" + // "checksum" : "asdasdasfsdfsdfasdsdfasd" + // "checksum-algorithm" : "md5" + // } + // ] var jsonString : String = "[\n" - for (pair <- accessUrlToDownloadDest) - jsonString ++ toJsonString(pair._1.url, pair._2, GetmChecksum(hashes, pair._1).escapedChecksum, GetmChecksum(hashes, pair._1).getmAlgorithm) - - jsonString ++ "]" + for ( (accessUrl -> downloadDestination) <- accessUrlToDownloadDest) { + jsonString += toJsonString(accessUrl.url, downloadDestination, GetmChecksum(hashes, accessUrl).escapedChecksum, GetmChecksum(hashes, accessUrl).getmAlgorithm) + } + jsonString = jsonString.substring(0, jsonString.lastIndexOf(",")) //remove trailing comma from array elements + jsonString += "]" + Try(Files.write(Paths.get("getm-manifest.json"), jsonString.getBytes(StandardCharsets.UTF_8))) } def runGetm: IO[GetmResult] = { From 125202ce575b19332ef4b865c65801825f6f08a0 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Mon, 14 Aug 2023 10:15:08 -0400 Subject: [PATCH 09/36] expired tokens --- src/ci/resources/tes_application.conf | 178 ++++++++++++++++++++++---- 1 file changed, 151 insertions(+), 27 deletions(-) diff --git a/src/ci/resources/tes_application.conf b/src/ci/resources/tes_application.conf index 5eb812a52d4..91c740ce52d 100644 --- a/src/ci/resources/tes_application.conf +++ b/src/ci/resources/tes_application.conf @@ -2,26 +2,43 @@ include required(classpath("application.conf")) include "build_application.inc.conf" filesystems { - blob { - class = "cromwell.filesystems.blob.BlobPathBuilderFactory" - global { - # One BFSM is shared across all BlobPathBuilders - class = "cromwell.filesystems.blob.BlobFileSystemManager" - config { - container: "cromwell" - endpoint: "https://.blob.core.windows.net" - subscription: "00001111-2222-3333-aaaa-bbbbccccdddd" - # WSM config is needed for accessing WSM-managed blob containers - # created in Terra workspaces. - workspace-manager { - url: "https://workspace.dsde-dev.broadinstitute.org" - workspace-id: "00001111-2222-3333-aaaa-bbbbccccdddd" - container-resource-id: "00001111-2222-3333-aaaa-bbbbccccdddd" - b2cToken: "Zardoz" + + blob { + class = "cromwell.filesystems.blob.BlobPathBuilderFactory" + global { + class = "cromwell.filesystems.blob.BlobFileSystemManager" + config { + workspace-manager: { + url: "https://workspace.dsde-dev.broadinstitute.org" + workspace-id: "d4564046-bbba-495c-afec-14f7d3a8283a" + container-resource-id: "9e7bdba5-047e-430c-810d-c7cb6645c155" + b2cToken: "eyJhbGciOiJSUzI1NiIsImtpZCI6Inp4UnJ6aEw4OTBrYi1vVkZOWkdWUFlxSzYtSkI3RFRlTGVvMllTbzRtc1UiLCJ0eXAiOiJKV1QifQ.eyJlbWFpbCI6InR3aXNlbWFuQGJyb2FkaW5zdGl0dXRlLm9yZyIsImdpdmVuX25hbWUiOiJUaG9tYXMiLCJmYW1pbHlfbmFtZSI6Ildpc2VtYW4iLCJuYW1lIjoiVGhvbWFzIFdpc2VtYW4iLCJpZHAiOiJnb29nbGUuY29tIiwiaWRwX2FjY2Vzc190b2tlbiI6InlhMjkuYTBBZkJfYnlEMU5hdF9YWldYMDg0Z1lxU1BHWWpjOWVTMlNEcFJhRVJNOFprVjJWc25aUU9QMndrWEJycmVQQWlwWGMzWXJwYUhQanhoVmEwRWk1NTlGTmpkZExwVHBXY0Y4SFNlTHJiTnZqaWNCYUo3cVZMWUR3aThvdXVrMzNLVjJ6V3RrcWY3YWhueVRtZVVxaEo4aG1FUTlwOHk0c3VaOTAyMkNHQWFDZ1lLQVIwU0FSQVNGUUhzdllsc3otXzctSlNrbGx6Zld3V3Y1OWtOdVEwMTc0IiwiZ29vZ2xlX2lkIjoiMTExNDI1MTI3NzgyODk3OTE5MjIxIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBY0hUdGNhZWxfZTl4dHdJQWdOZW1YY2N4d18xUWtlVjV1cF91NUFRTUMxMU5xNj1zOTYtYyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJzdWIiOiJhMzYxY2YxNS0xNTgxLTQ2ZDQtYmJkNC1mMGQ0NGFlNjkwODciLCJ0aWQiOiJmZDBiYzBlZi0xNzQ3LTRlZTYtYWIzZS1kNGQ2YmI4ODJkNDAiLCJhenAiOiJiYmQwN2Q0My0wMWNiLTRiNjktOGZkMC01NzQ2ZDlhNWM5ZmUiLCJ2ZXIiOiIxLjAiLCJpYXQiOjE2OTE3NjE1NDUsImF1ZCI6ImJiZDA3ZDQzLTAxY2ItNGI2OS04ZmQwLTU3NDZkOWE1YzlmZSIsImV4cCI6MTY5MTc2NTE0NSwiaXNzIjoiaHR0cHM6Ly90ZXJyYWRldmIyYy5iMmNsb2dpbi5jb20vZmQwYmMwZWYtMTc0Ny00ZWU2LWFiM2UtZDRkNmJiODgyZDQwL3YyLjAvIiwibmJmIjoxNjkxNzYxNTQ1fQ.k8XqUUWWfsJqVru8AdD8PqMw5js0Dlp7vtKWG2HxUDCNuQoz9ERs-QbvWU2XHmQZ2kS4zVtTzDoTc4PbNJ_Dy81I9nNDczdMxsyhKZ1GhJHiuS_h6nFaweLQTKCfrzye10VJdZlyR0cfBllbu7ct6-S91AvpTbwxKmU2p33eBw4ToEwdYNrDkbrIxmUHwrVN0nmoxQcIcouD0pOMcpR_Ad6hYWn1s9ug3BguM6jAhhjXWxJj4DIdcJ4mnDDhKkWbcV-NdphNVSl1COAY7hstEuHMK_3-Of6l1SMB9I-WA-M1esDmsXAcL1y8g0DTIdzDkEqrrxOb4k-NbQCgMiMElw" + } + container: "sc-d4564046-bbba-495c-afec-14f7d3a8283a" + endpoint: "https://lz43a8a3d21540dfd25f5ace.blob.core.windows.net" + } } } - } - } +# blob { +# class = "cromwell.filesystems.blob.BlobPathBuilderFactory" +# global { +# # One BFSM is shared across all BlobPathBuilders +# class = "cromwell.filesystems.blob.BlobFileSystemManager" +# config { +# container: "cromwell" +# endpoint: "https://coaexternalstorage.blob.core.windows.net" +# subscription: "62b22893-6bc1-46d9-8a90-806bb3cce3c9" +# # WSM config is needed for accessing WSM-managed blob containers +# # created in Terra workspaces. +# workspace-manager { +# url: "https://workspace.dsde-dev.broadinstitute.org" +# workspace-id: "ebda3e1d-09bf-48b1-be2e-3d09f67dfc5c" +# container-resource-id: "983bcc2b-3134-48d0-b52b-5df1fe09d161" +# b2cToken: "Bearer eyJhbGciOiJSUzI1NiIsImt...Jw49ZA" +# } +# } +# } +# } } engine { @@ -33,7 +50,7 @@ engine { enabled: true } blob { - enabled: false + enabled: true } } } @@ -46,26 +63,30 @@ backend { actor-factory = "cromwell.backend.impl.tes.TesBackendLifecycleActorFactory" config { # Use for running on blob storage - #root = "https://.blob.core.windows.net/cromwell/cromwell-executions" - root = "cromwell-executions" + #root = "https://coaexternalstorage.blob.core.windows.net/cromwell/janet-20230505" + root = "https://lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-566e92a0-e55e-4250-b4c1-d0925dd03916-d4564046-bbba-495c-afec-14f7d3a8283a/" + #root = "cromwell-executions" dockerRoot = "/cromwell-executions" - endpoint = "http://127.0.0.1:9000/v1/tasks" + endpoint = "https://lzd98e904c9c1cee247af683bc764eb1b22f3912f8e7839afe.servicebus.windows.net/terra-app-566e92a0-e55e-4250-b4c1-d0925dd03916-d4564046-bbba-495c-afec-14f7d3a8283a/tes/v1/tasks" concurrent-job-limit = 1000 - + workflow-execution-identity = "pet-2676571657071603a9eab" + bearer-token= "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Inp4UnJ6aEw4OTBrYi1vVkZOWkdWUFlxSzYtSkI3RFRlTGVvMllTbzRtc1UiLCJ0eXAiOiJKV1QifQ.eyJlbWFpbCI6InR3aXNlbWFuQGJyb2FkaW5zdGl0dXRlLm9yZyIsImdpdmVuX25hbWUiOiJUaG9tYXMiLCJmYW1pbHlfbmFtZSI6Ildpc2VtYW4iLCJuYW1lIjoiVGhvbWFzIFdpc2VtYW4iLCJpZHAiOiJnb29nbGUuY29tIiwiaWRwX2FjY2Vzc190b2tlbiI6InlhMjkuYTBBZkJfYnlEMU5hdF9YWldYMDg0Z1lxU1BHWWpjOWVTMlNEcFJhRVJNOFprVjJWc25aUU9QMndrWEJycmVQQWlwWGMzWXJwYUhQanhoVmEwRWk1NTlGTmpkZExwVHBXY0Y4SFNlTHJiTnZqaWNCYUo3cVZMWUR3aThvdXVrMzNLVjJ6V3RrcWY3YWhueVRtZVVxaEo4aG1FUTlwOHk0c3VaOTAyMkNHQWFDZ1lLQVIwU0FSQVNGUUhzdllsc3otXzctSlNrbGx6Zld3V3Y1OWtOdVEwMTc0IiwiZ29vZ2xlX2lkIjoiMTExNDI1MTI3NzgyODk3OTE5MjIxIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBY0hUdGNhZWxfZTl4dHdJQWdOZW1YY2N4d18xUWtlVjV1cF91NUFRTUMxMU5xNj1zOTYtYyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJzdWIiOiJhMzYxY2YxNS0xNTgxLTQ2ZDQtYmJkNC1mMGQ0NGFlNjkwODciLCJ0aWQiOiJmZDBiYzBlZi0xNzQ3LTRlZTYtYWIzZS1kNGQ2YmI4ODJkNDAiLCJhenAiOiJiYmQwN2Q0My0wMWNiLTRiNjktOGZkMC01NzQ2ZDlhNWM5ZmUiLCJ2ZXIiOiIxLjAiLCJpYXQiOjE2OTE3NjE1NDUsImF1ZCI6ImJiZDA3ZDQzLTAxY2ItNGI2OS04ZmQwLTU3NDZkOWE1YzlmZSIsImV4cCI6MTY5MTc2NTE0NSwiaXNzIjoiaHR0cHM6Ly90ZXJyYWRldmIyYy5iMmNsb2dpbi5jb20vZmQwYmMwZWYtMTc0Ny00ZWU2LWFiM2UtZDRkNmJiODgyZDQwL3YyLjAvIiwibmJmIjoxNjkxNzYxNTQ1fQ.k8XqUUWWfsJqVru8AdD8PqMw5js0Dlp7vtKWG2HxUDCNuQoz9ERs-QbvWU2XHmQZ2kS4zVtTzDoTc4PbNJ_Dy81I9nNDczdMxsyhKZ1GhJHiuS_h6nFaweLQTKCfrzye10VJdZlyR0cfBllbu7ct6-S91AvpTbwxKmU2p33eBw4ToEwdYNrDkbrIxmUHwrVN0nmoxQcIcouD0pOMcpR_Ad6hYWn1s9ug3BguM6jAhhjXWxJj4DIdcJ4mnDDhKkWbcV-NdphNVSl1COAY7hstEuHMK_3-Of6l1SMB9I-WA-M1esDmsXAcL1y8g0DTIdzDkEqrrxOb4k-NbQCgMiMElw" # Override default polling to make it faster for speedy tests poll-backoff { - min: "1 seconds" + min: "10 seconds" max: "5 minutes" multiplier: 1.1 randomization-factor: 0.5 } - + + use_tes_11_preview_backend_parameters = true + filesystems { blob { - enabled: false + enabled: true } local { - enabled: true + enabled: false } http { enabled: true @@ -78,3 +99,106 @@ backend { } } } + +workflow-options { + # Directory where to write per workflow logs + workflow-log-dir: "https://lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-ebda3e1d-09bf-48b1-be2e-3d09f67dfc5c/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs" +} + +# call-caching { +# # Allows re-use of existing results for jobs you've already run +# # (default: false) +# enabled = true +# +# # Whether to invalidate a cache result forever if we cannot reuse them. Disable this if you expect some cache copies +# # to fail for external reasons which should not invalidate the cache (e.g. auth differences between users): +# # (default: true) +# invalidate-bad-cache-results = false +# +# # The maximum number of times Cromwell will attempt to copy cache hits before giving up and running the job. +# max-failed-copy-attempts = 10 +# } + + + +# //////////// +# include required(classpath("application.conf")) +# include "build_application.inc.conf" +# +# filesystems { +# blob { +# class = "cromwell.filesystems.blob.BlobPathBuilderFactory" +# global { +# # One BFSM is shared across all BlobPathBuilders +# class = "cromwell.filesystems.blob.BlobFileSystemManager" +# config { +# container: "cromwell" +# endpoint: "https://.blob.core.windows.net" +# subscription: "00001111-2222-3333-aaaa-bbbbccccdddd" +# # WSM config is needed for accessing WSM-managed blob containers +# # created in Terra workspaces. +# workspace-manager { +# url: "https://workspace.dsde-dev.broadinstitute.org" +# workspace-id: "00001111-2222-3333-aaaa-bbbbccccdddd" +# container-resource-id: "00001111-2222-3333-aaaa-bbbbccccdddd" +# b2cToken: "Zardoz" +# } +# } +# } +# } +# } +# +# engine { +# filesystems { +# local { +# enabled: true +# } +# http { +# enabled: true +# } +# blob { +# enabled: false +# } +# } +# } +# +# +# backend { +# default = "TES" +# providers { +# TES { +# actor-factory = "cromwell.backend.impl.tes.TesBackendLifecycleActorFactory" +# config { +# # Use for running on blob storage +# #root = "https://.blob.core.windows.net/cromwell/cromwell-executions" +# root = "cromwell-executions" +# dockerRoot = "/cromwell-executions" +# endpoint = "http://127.0.0.1:9000/v1/tasks" +# concurrent-job-limit = 1000 +# +# # Override default polling to make it faster for speedy tests +# poll-backoff { +# min: "1 seconds" +# max: "5 minutes" +# multiplier: 1.1 +# randomization-factor: 0.5 +# } +# +# filesystems { +# blob { +# enabled: false +# } +# local { +# enabled: true +# } +# http { +# enabled: true +# } +# } +# } +# +# # Have the engine (maybe) authenticate to docker.io. See BT-141 for more info. +# include "dockerhub_provider_config_v1.inc.conf" +# } +# } +# } From 28e1b63dabe28fca9dd3d91a43b3d5095d7f5998 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Tue, 15 Aug 2023 16:21:21 -0400 Subject: [PATCH 10/36] think about stuff --- .../src/main/scala/drs/localizer/DrsLocalizerMain.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index 8439c5c78f3..cbc78f3bb3d 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -104,11 +104,12 @@ object DrsLocalizerMain extends IOApp with StrictLogging { } } def runLocalizer(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials): IO[ExitCode] = { + //todo: just fail here if this can't be gotten + val resolver = getDrsPathResolver(drsCredentials).unsafeRunSync() commandLineArguments.manifestPath match { case Some(manifestPath) => { val resolvedUris: Try[Map[DrsResolverResponse, String]] = for { - resolver: IO[DrsLocalizerDrsPathResolver] <- getDrsPathResolver(drsCredentials) - resolvedDrsUris: Try[Map[DrsResolverResponse, String]] <- resolveCSVManifest(manifestPath, resolver) + resolvedDrsUris: Map[DrsResolverResponse, String] <- resolveCSVManifest(manifestPath, resolver) if !resolvedDrsUris.isEmpty } yield resolvedDrsUris @@ -122,7 +123,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { val bulkAccessResult : IO[ExitCode] = bulkDownloadResolvedAccessUrls(accessUrls, drsCredentials) val googleResult : List[IO[DownloadResult]] = bulkDownloadResolvedGoogleUrls(googleUrls, commandLineArguments.googleRequesterPaysProject) - //TODO: return an appropriate exit code + IO(ExitCode.Success) } case None => val drsObject = commandLineArguments.drsObject.get @@ -133,6 +134,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { def bulkDownloadResolvedAccessUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], drsCredentials: DrsCredentials): IO[ExitCode] = { //TODO: invoke new bulk getm downloader + return IO{ExitCode(0)} } def bulkDownloadResolvedGoogleUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], googleRequesterPaysProject : Option[String]) : List[IO[DownloadResult]] = { From 6e9b698a053d5f9924a981042e305abc4b2b66a2 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Tue, 15 Aug 2023 16:25:39 -0400 Subject: [PATCH 11/36] undo sins --- .../downloaders/AccessUrlDownloader.scala | 47 ----- .../downloaders/BulkAccessUrlDownloader.scala | 49 +++++ .../localizer/downloaders/GetmChecksum.scala | 8 +- project/Dependencies.scala | 1 - src/ci/resources/tes_application.conf | 178 +++--------------- .../TesAsyncBackendJobExecutionActor.scala | 5 +- 6 files changed, 81 insertions(+), 207 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala index 25cf88d53c9..5d1099e31bc 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala @@ -26,53 +26,6 @@ case class AccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes } } - def generateBulkDownloadScript: ErrorOr[String] = { - val manifestPath = generateJsonManifest() - } - - def toJsonString(accessUrl: String, filepath : String, checksum : ErrorOr[String], checksumAlgorithm : String): String = { - //NB: trailing comma is being removed in generateJsonManifest - if (checksum.isValid) { - return s"""{ - | "url" : "$accessUrl" - | "filepath" : "$filepath" - | "checksum" : "$checksum" - | "checksum-algorithm" : "$checksumAlgorithm" - | }, - |""".stripMargin - } - - s"""{ - | "url" : "$accessUrl" - | "filepath" : "$filepath" - | }, - |""".stripMargin - } - def generateJsonManifest(accessUrlToDownloadDest : Map[AccessUrl, String]) : Try[Path] = { - //write a json file that looks like: - // [ - // { - // "url" : "www.123.com" - // "filepath" : "path/to/where/123/should/be/downloaded" - // "checksum" : "sdfjndsfjkfsdjsdfkjsdf" - // "checksum-algorithm" : "md5" - // }, - // { - // "url" : "www.567.com" - // "filepath" : "path/to/where/567/should/be/downloaded" - // "checksum" : "asdasdasfsdfsdfasdsdfasd" - // "checksum-algorithm" : "md5" - // } - // ] - var jsonString : String = "[\n" - for ( (accessUrl -> downloadDestination) <- accessUrlToDownloadDest) { - jsonString += toJsonString(accessUrl.url, downloadDestination, GetmChecksum(hashes, accessUrl).escapedChecksum, GetmChecksum(hashes, accessUrl).getmAlgorithm) - } - jsonString = jsonString.substring(0, jsonString.lastIndexOf(",")) //remove trailing comma from array elements - jsonString += "]" - Try(Files.write(Paths.get("getm-manifest.json"), jsonString.getBytes(StandardCharsets.UTF_8))) - } - def runGetm: IO[GetmResult] = { generateDownloadScript match { case Invalid(errors) => diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala index 11096d17bf5..fc418034aa6 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala @@ -43,6 +43,55 @@ case class BulkAccessUrlDownloader(urlToDownlaodLocation : Map[AccessUrl, String } } + def generateBulkDownloadScript: ErrorOr[String] = { + val manifestPath = generateJsonManifest() + } + + def toJsonString(accessUrl: String, filepath: String, checksum: ErrorOr[String], checksumAlgorithm: String): String = { + //NB: trailing comma is being removed in generateJsonManifest + if (checksum.isValid) { + return + s"""{ + | "url" : "$accessUrl" + | "filepath" : "$filepath" + | "checksum" : "$checksum" + | "checksum-algorithm" : "$checksumAlgorithm" + | }, + |""".stripMargin + } + + s"""{ + | "url" : "$accessUrl" + | "filepath" : "$filepath" + | }, + |""".stripMargin + } + + def generateJsonManifest(accessUrlToDownloadDest: Map[AccessUrl, String]): Try[Path] = { + //write a json file that looks like: + // [ + // { + // "url" : "www.123.com" + // "filepath" : "path/to/where/123/should/be/downloaded" + // "checksum" : "sdfjndsfjkfsdjsdfkjsdf" + // "checksum-algorithm" : "md5" + // }, + // { + // "url" : "www.567.com" + // "filepath" : "path/to/where/567/should/be/downloaded" + // "checksum" : "asdasdasfsdfsdfasdsdfasd" + // "checksum-algorithm" : "md5" + // } + // ] + var jsonString: String = "[\n" + for ((accessUrl -> downloadDestination) <- accessUrlToDownloadDest) { + jsonString += toJsonString(accessUrl.url, downloadDestination, GetmChecksum(hashes, accessUrl).escapedChecksum, GetmChecksum(hashes, accessUrl).getmAlgorithm) + } + jsonString = jsonString.substring(0, jsonString.lastIndexOf(",")) //remove trailing comma from array elements + jsonString += "]" + Try(Files.write(Paths.get("getm-manifest.json"), jsonString.getBytes(StandardCharsets.UTF_8))) + } + def runGetm: IO[GetmResult] = { generateDownloadScript match { case Invalid(errors) => diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala index dfc84fc1949..2a39a6543a3 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/GetmChecksum.scala @@ -13,15 +13,13 @@ sealed trait GetmChecksum { def getmAlgorithm: String def rawValue: String def value: ErrorOr[String] = rawValue.validNel - def escapedChecksum : ErrorOr[String] = { - value map { v => StringEscapeUtils.escapeXSI(v)} - } def args: ErrorOr[String] = { // The value for `--checksum-algorithm` is constrained by the algorithm names in the `sealed` hierarchy of // `GetmChecksum`, but the value for `--checksum` is largely a function of data returned by the DRS server. // Shell escape this to avoid injection. - value map { _ => - s"--checksum-algorithm '$getmAlgorithm' --checksum $escapedChecksum" + value map { v => + val escapedValue = StringEscapeUtils.escapeXSI(v) + s"--checksum-algorithm '$getmAlgorithm' --checksum $escapedValue" } } } diff --git a/project/Dependencies.scala b/project/Dependencies.scala index d48e24a0a53..b2e94cc7470 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -652,7 +652,6 @@ object Dependencies { "com.softwaremill.sttp" %% "circe" % sttpV, "com.github.scopt" %% "scopt" % scoptV, "org.apache.commons" % "commons-csv" % commonsCsvV, - "org.gnieh" %% "diffson-spray-json" % diffsonSprayJsonV ) ++ circeDependencies ++ catsDependencies ++ slf4jBindingDependencies ++ languageFactoryDependencies ++ azureDependencies val allProjectDependencies: List[ModuleID] = diff --git a/src/ci/resources/tes_application.conf b/src/ci/resources/tes_application.conf index 91c740ce52d..5eb812a52d4 100644 --- a/src/ci/resources/tes_application.conf +++ b/src/ci/resources/tes_application.conf @@ -2,43 +2,26 @@ include required(classpath("application.conf")) include "build_application.inc.conf" filesystems { - - blob { - class = "cromwell.filesystems.blob.BlobPathBuilderFactory" - global { - class = "cromwell.filesystems.blob.BlobFileSystemManager" - config { - workspace-manager: { - url: "https://workspace.dsde-dev.broadinstitute.org" - workspace-id: "d4564046-bbba-495c-afec-14f7d3a8283a" - container-resource-id: "9e7bdba5-047e-430c-810d-c7cb6645c155" - b2cToken: "eyJhbGciOiJSUzI1NiIsImtpZCI6Inp4UnJ6aEw4OTBrYi1vVkZOWkdWUFlxSzYtSkI3RFRlTGVvMllTbzRtc1UiLCJ0eXAiOiJKV1QifQ.eyJlbWFpbCI6InR3aXNlbWFuQGJyb2FkaW5zdGl0dXRlLm9yZyIsImdpdmVuX25hbWUiOiJUaG9tYXMiLCJmYW1pbHlfbmFtZSI6Ildpc2VtYW4iLCJuYW1lIjoiVGhvbWFzIFdpc2VtYW4iLCJpZHAiOiJnb29nbGUuY29tIiwiaWRwX2FjY2Vzc190b2tlbiI6InlhMjkuYTBBZkJfYnlEMU5hdF9YWldYMDg0Z1lxU1BHWWpjOWVTMlNEcFJhRVJNOFprVjJWc25aUU9QMndrWEJycmVQQWlwWGMzWXJwYUhQanhoVmEwRWk1NTlGTmpkZExwVHBXY0Y4SFNlTHJiTnZqaWNCYUo3cVZMWUR3aThvdXVrMzNLVjJ6V3RrcWY3YWhueVRtZVVxaEo4aG1FUTlwOHk0c3VaOTAyMkNHQWFDZ1lLQVIwU0FSQVNGUUhzdllsc3otXzctSlNrbGx6Zld3V3Y1OWtOdVEwMTc0IiwiZ29vZ2xlX2lkIjoiMTExNDI1MTI3NzgyODk3OTE5MjIxIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBY0hUdGNhZWxfZTl4dHdJQWdOZW1YY2N4d18xUWtlVjV1cF91NUFRTUMxMU5xNj1zOTYtYyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJzdWIiOiJhMzYxY2YxNS0xNTgxLTQ2ZDQtYmJkNC1mMGQ0NGFlNjkwODciLCJ0aWQiOiJmZDBiYzBlZi0xNzQ3LTRlZTYtYWIzZS1kNGQ2YmI4ODJkNDAiLCJhenAiOiJiYmQwN2Q0My0wMWNiLTRiNjktOGZkMC01NzQ2ZDlhNWM5ZmUiLCJ2ZXIiOiIxLjAiLCJpYXQiOjE2OTE3NjE1NDUsImF1ZCI6ImJiZDA3ZDQzLTAxY2ItNGI2OS04ZmQwLTU3NDZkOWE1YzlmZSIsImV4cCI6MTY5MTc2NTE0NSwiaXNzIjoiaHR0cHM6Ly90ZXJyYWRldmIyYy5iMmNsb2dpbi5jb20vZmQwYmMwZWYtMTc0Ny00ZWU2LWFiM2UtZDRkNmJiODgyZDQwL3YyLjAvIiwibmJmIjoxNjkxNzYxNTQ1fQ.k8XqUUWWfsJqVru8AdD8PqMw5js0Dlp7vtKWG2HxUDCNuQoz9ERs-QbvWU2XHmQZ2kS4zVtTzDoTc4PbNJ_Dy81I9nNDczdMxsyhKZ1GhJHiuS_h6nFaweLQTKCfrzye10VJdZlyR0cfBllbu7ct6-S91AvpTbwxKmU2p33eBw4ToEwdYNrDkbrIxmUHwrVN0nmoxQcIcouD0pOMcpR_Ad6hYWn1s9ug3BguM6jAhhjXWxJj4DIdcJ4mnDDhKkWbcV-NdphNVSl1COAY7hstEuHMK_3-Of6l1SMB9I-WA-M1esDmsXAcL1y8g0DTIdzDkEqrrxOb4k-NbQCgMiMElw" - } - container: "sc-d4564046-bbba-495c-afec-14f7d3a8283a" - endpoint: "https://lz43a8a3d21540dfd25f5ace.blob.core.windows.net" - } + blob { + class = "cromwell.filesystems.blob.BlobPathBuilderFactory" + global { + # One BFSM is shared across all BlobPathBuilders + class = "cromwell.filesystems.blob.BlobFileSystemManager" + config { + container: "cromwell" + endpoint: "https://.blob.core.windows.net" + subscription: "00001111-2222-3333-aaaa-bbbbccccdddd" + # WSM config is needed for accessing WSM-managed blob containers + # created in Terra workspaces. + workspace-manager { + url: "https://workspace.dsde-dev.broadinstitute.org" + workspace-id: "00001111-2222-3333-aaaa-bbbbccccdddd" + container-resource-id: "00001111-2222-3333-aaaa-bbbbccccdddd" + b2cToken: "Zardoz" } } -# blob { -# class = "cromwell.filesystems.blob.BlobPathBuilderFactory" -# global { -# # One BFSM is shared across all BlobPathBuilders -# class = "cromwell.filesystems.blob.BlobFileSystemManager" -# config { -# container: "cromwell" -# endpoint: "https://coaexternalstorage.blob.core.windows.net" -# subscription: "62b22893-6bc1-46d9-8a90-806bb3cce3c9" -# # WSM config is needed for accessing WSM-managed blob containers -# # created in Terra workspaces. -# workspace-manager { -# url: "https://workspace.dsde-dev.broadinstitute.org" -# workspace-id: "ebda3e1d-09bf-48b1-be2e-3d09f67dfc5c" -# container-resource-id: "983bcc2b-3134-48d0-b52b-5df1fe09d161" -# b2cToken: "Bearer eyJhbGciOiJSUzI1NiIsImt...Jw49ZA" -# } -# } -# } -# } + } + } } engine { @@ -50,7 +33,7 @@ engine { enabled: true } blob { - enabled: true + enabled: false } } } @@ -63,30 +46,26 @@ backend { actor-factory = "cromwell.backend.impl.tes.TesBackendLifecycleActorFactory" config { # Use for running on blob storage - #root = "https://coaexternalstorage.blob.core.windows.net/cromwell/janet-20230505" - root = "https://lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-566e92a0-e55e-4250-b4c1-d0925dd03916-d4564046-bbba-495c-afec-14f7d3a8283a/" - #root = "cromwell-executions" + #root = "https://.blob.core.windows.net/cromwell/cromwell-executions" + root = "cromwell-executions" dockerRoot = "/cromwell-executions" - endpoint = "https://lzd98e904c9c1cee247af683bc764eb1b22f3912f8e7839afe.servicebus.windows.net/terra-app-566e92a0-e55e-4250-b4c1-d0925dd03916-d4564046-bbba-495c-afec-14f7d3a8283a/tes/v1/tasks" + endpoint = "http://127.0.0.1:9000/v1/tasks" concurrent-job-limit = 1000 - workflow-execution-identity = "pet-2676571657071603a9eab" - bearer-token= "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Inp4UnJ6aEw4OTBrYi1vVkZOWkdWUFlxSzYtSkI3RFRlTGVvMllTbzRtc1UiLCJ0eXAiOiJKV1QifQ.eyJlbWFpbCI6InR3aXNlbWFuQGJyb2FkaW5zdGl0dXRlLm9yZyIsImdpdmVuX25hbWUiOiJUaG9tYXMiLCJmYW1pbHlfbmFtZSI6Ildpc2VtYW4iLCJuYW1lIjoiVGhvbWFzIFdpc2VtYW4iLCJpZHAiOiJnb29nbGUuY29tIiwiaWRwX2FjY2Vzc190b2tlbiI6InlhMjkuYTBBZkJfYnlEMU5hdF9YWldYMDg0Z1lxU1BHWWpjOWVTMlNEcFJhRVJNOFprVjJWc25aUU9QMndrWEJycmVQQWlwWGMzWXJwYUhQanhoVmEwRWk1NTlGTmpkZExwVHBXY0Y4SFNlTHJiTnZqaWNCYUo3cVZMWUR3aThvdXVrMzNLVjJ6V3RrcWY3YWhueVRtZVVxaEo4aG1FUTlwOHk0c3VaOTAyMkNHQWFDZ1lLQVIwU0FSQVNGUUhzdllsc3otXzctSlNrbGx6Zld3V3Y1OWtOdVEwMTc0IiwiZ29vZ2xlX2lkIjoiMTExNDI1MTI3NzgyODk3OTE5MjIxIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBY0hUdGNhZWxfZTl4dHdJQWdOZW1YY2N4d18xUWtlVjV1cF91NUFRTUMxMU5xNj1zOTYtYyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJzdWIiOiJhMzYxY2YxNS0xNTgxLTQ2ZDQtYmJkNC1mMGQ0NGFlNjkwODciLCJ0aWQiOiJmZDBiYzBlZi0xNzQ3LTRlZTYtYWIzZS1kNGQ2YmI4ODJkNDAiLCJhenAiOiJiYmQwN2Q0My0wMWNiLTRiNjktOGZkMC01NzQ2ZDlhNWM5ZmUiLCJ2ZXIiOiIxLjAiLCJpYXQiOjE2OTE3NjE1NDUsImF1ZCI6ImJiZDA3ZDQzLTAxY2ItNGI2OS04ZmQwLTU3NDZkOWE1YzlmZSIsImV4cCI6MTY5MTc2NTE0NSwiaXNzIjoiaHR0cHM6Ly90ZXJyYWRldmIyYy5iMmNsb2dpbi5jb20vZmQwYmMwZWYtMTc0Ny00ZWU2LWFiM2UtZDRkNmJiODgyZDQwL3YyLjAvIiwibmJmIjoxNjkxNzYxNTQ1fQ.k8XqUUWWfsJqVru8AdD8PqMw5js0Dlp7vtKWG2HxUDCNuQoz9ERs-QbvWU2XHmQZ2kS4zVtTzDoTc4PbNJ_Dy81I9nNDczdMxsyhKZ1GhJHiuS_h6nFaweLQTKCfrzye10VJdZlyR0cfBllbu7ct6-S91AvpTbwxKmU2p33eBw4ToEwdYNrDkbrIxmUHwrVN0nmoxQcIcouD0pOMcpR_Ad6hYWn1s9ug3BguM6jAhhjXWxJj4DIdcJ4mnDDhKkWbcV-NdphNVSl1COAY7hstEuHMK_3-Of6l1SMB9I-WA-M1esDmsXAcL1y8g0DTIdzDkEqrrxOb4k-NbQCgMiMElw" + # Override default polling to make it faster for speedy tests poll-backoff { - min: "10 seconds" + min: "1 seconds" max: "5 minutes" multiplier: 1.1 randomization-factor: 0.5 } - - use_tes_11_preview_backend_parameters = true - + filesystems { blob { - enabled: true + enabled: false } local { - enabled: false + enabled: true } http { enabled: true @@ -99,106 +78,3 @@ backend { } } } - -workflow-options { - # Directory where to write per workflow logs - workflow-log-dir: "https://lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-ebda3e1d-09bf-48b1-be2e-3d09f67dfc5c/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs" -} - -# call-caching { -# # Allows re-use of existing results for jobs you've already run -# # (default: false) -# enabled = true -# -# # Whether to invalidate a cache result forever if we cannot reuse them. Disable this if you expect some cache copies -# # to fail for external reasons which should not invalidate the cache (e.g. auth differences between users): -# # (default: true) -# invalidate-bad-cache-results = false -# -# # The maximum number of times Cromwell will attempt to copy cache hits before giving up and running the job. -# max-failed-copy-attempts = 10 -# } - - - -# //////////// -# include required(classpath("application.conf")) -# include "build_application.inc.conf" -# -# filesystems { -# blob { -# class = "cromwell.filesystems.blob.BlobPathBuilderFactory" -# global { -# # One BFSM is shared across all BlobPathBuilders -# class = "cromwell.filesystems.blob.BlobFileSystemManager" -# config { -# container: "cromwell" -# endpoint: "https://.blob.core.windows.net" -# subscription: "00001111-2222-3333-aaaa-bbbbccccdddd" -# # WSM config is needed for accessing WSM-managed blob containers -# # created in Terra workspaces. -# workspace-manager { -# url: "https://workspace.dsde-dev.broadinstitute.org" -# workspace-id: "00001111-2222-3333-aaaa-bbbbccccdddd" -# container-resource-id: "00001111-2222-3333-aaaa-bbbbccccdddd" -# b2cToken: "Zardoz" -# } -# } -# } -# } -# } -# -# engine { -# filesystems { -# local { -# enabled: true -# } -# http { -# enabled: true -# } -# blob { -# enabled: false -# } -# } -# } -# -# -# backend { -# default = "TES" -# providers { -# TES { -# actor-factory = "cromwell.backend.impl.tes.TesBackendLifecycleActorFactory" -# config { -# # Use for running on blob storage -# #root = "https://.blob.core.windows.net/cromwell/cromwell-executions" -# root = "cromwell-executions" -# dockerRoot = "/cromwell-executions" -# endpoint = "http://127.0.0.1:9000/v1/tasks" -# concurrent-job-limit = 1000 -# -# # Override default polling to make it faster for speedy tests -# poll-backoff { -# min: "1 seconds" -# max: "5 minutes" -# multiplier: 1.1 -# randomization-factor: 0.5 -# } -# -# filesystems { -# blob { -# enabled: false -# } -# local { -# enabled: true -# } -# http { -# enabled: true -# } -# } -# } -# -# # Have the engine (maybe) authenticate to docker.io. See BT-141 for more info. -# include "dockerhub_provider_config_v1.inc.conf" -# } -# } -# } diff --git a/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala b/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala index e46212817c4..7ff507e63f2 100644 --- a/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala +++ b/supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesAsyncBackendJobExecutionActor.scala @@ -161,9 +161,8 @@ class TesAsyncBackendJobExecutionActor(override val standardParams: StandardAsyn jobShell, mode) }) - val testask = tesTask.map(TesTask.makeTask) - jobLogger.info(testask.toString) - testask + + tesTask.map(TesTask.makeTask) } def writeScriptFile(): Future[Unit] = { From a9a9c38671c518c10eecbe01b31e15e633640a6e Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Tue, 15 Aug 2023 16:27:00 -0400 Subject: [PATCH 12/36] undo one more sin --- .../scala/drs/localizer/downloaders/AccessUrlDownloader.scala | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala index 5d1099e31bc..ae6f2fa4f1e 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/AccessUrlDownloader.scala @@ -3,9 +3,6 @@ package drs.localizer.downloaders import cats.data.Validated.{Invalid, Valid} import cats.effect.{ExitCode, IO} import cloud.nio.impl.drs.AccessUrl - -import java.nio.file.{Files, Path, Paths} -import java.nio.charset.StandardCharsets import com.typesafe.scalalogging.StrictLogging import common.exception.AggregatedMessageException import common.util.StringUtil._ @@ -13,7 +10,6 @@ import common.validation.ErrorOr.ErrorOr import drs.localizer.downloaders.AccessUrlDownloader._ import scala.sys.process.{Process, ProcessLogger} -import scala.util.Try import scala.util.matching.Regex case class GetmResult(returnCode: Int, stderr: String) From e935cfc6ac5447bf7ee27eb5d58adf48ac4b14fe Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Thu, 31 Aug 2023 14:24:05 -0400 Subject: [PATCH 13/36] deck chairs --- .../drs/localizer/DrsLocalizerMain.scala | 46 +- .../downloaders/BulkAccessUrlDownloader.scala | 88 +-- .../downloaders/DownloaderFactory.scala | 2 +- ...w.194f43e1-319b-402d-9c1d-ff704a1db2a2.log | 585 --------------- ...w.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log | 670 ------------------ 5 files changed, 51 insertions(+), 1340 deletions(-) delete mode 100644 https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log delete mode 100644 https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index cbc78f3bb3d..37e99ed4d32 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -2,7 +2,6 @@ package drs.localizer import cats.data.NonEmptyList import cats.effect.{ExitCode, IO, IOApp} -import cats.implicits._ import cloud.nio.impl.drs.DrsPathResolver.{FatalRetryDisposition, RegularRetryDisposition} import cloud.nio.impl.drs._ import cloud.nio.spi.{CloudNioBackoff, CloudNioSimpleExponentialBackoff} @@ -12,18 +11,14 @@ import drs.localizer.downloaders.AccessUrlDownloader.Hashes import drs.localizer.downloaders._ import org.apache.commons.csv.{CSVFormat, CSVParser} -import java.io.{File, IOException} +import java.io.{File} import java.nio.charset.Charset import scala.concurrent.duration._ import scala.jdk.CollectionConverters._ import scala.language.postfixOps -import spray.json._ -import DefaultJsonProtocol._ -import drs.localizer.URIType.{GCS, URIType} +import drs.localizer.URIType.{URIType} -import java.nio.file.{Files, Paths} -import java.nio.charset.StandardCharsets -import scala.util.{Failure, Success, Try} +import scala.util.{Failure, Try} object DrsLocalizerMain extends IOApp with StrictLogging { @@ -49,14 +44,15 @@ object DrsLocalizerMain extends IOApp with StrictLogging { initialInterval = 10 seconds, maxInterval = 60 seconds, multiplier = 2) val defaultDownloaderFactory: DownloaderFactory = new DownloaderFactory { - override def buildAccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes: Hashes): IO[Downloader] = - IO.pure(AccessUrlDownloader(accessUrl, downloadLoc, hashes)) - + override def buildAccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes: Hashes): IO[Downloader] = { + val downloader = AccessUrlDownloader(accessUrl, downloadLoc, hashes) + IO.pure(downloader) + } override def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], downloadLoc: String, requesterPaysProjectOption: Option[String]): IO[Downloader] = IO.pure(GcsUriDownloader(gcsPath, serviceAccountJsonOption, downloadLoc, requesterPaysProjectOption)) - override def buildBulkAccessUrlDownloader(urlToDownloadDestinationMap: Map[AccessUrl, String], hashes: Hashes): IO[Downloader] = { - IO.pure(BulkAccessUrlDownloader(urlToDownloadDestinationMap, hashes)) + override def buildBulkAccessUrlDownloader(urlToDownloadDestinationMap: Map[AccessUrl, String]): IO[Downloader] = { + IO.pure(BulkAccessUrlDownloader(urlToDownloadDestinationMap)) } } @@ -95,9 +91,9 @@ object DrsLocalizerMain extends IOApp with StrictLogging { private[localizer] def toUriType(drsResponse: DrsResolverResponse): Try[URIType] = { (drsResponse.accessUrl, drsResponse.gsUri) match { - case (Some(accessUrl), _) => + case (Some(_), _) => Try(URIType.HTTPS) - case (_, Some(gcsPath)) => + case (_, Some(_)) => Try(URIType.GCS) case _ => Failure(new RuntimeException(DrsPathResolver.ExtractUriErrorMsg)) @@ -123,7 +119,12 @@ object DrsLocalizerMain extends IOApp with StrictLogging { val bulkAccessResult : IO[ExitCode] = bulkDownloadResolvedAccessUrls(accessUrls, drsCredentials) val googleResult : List[IO[DownloadResult]] = bulkDownloadResolvedGoogleUrls(googleUrls, commandLineArguments.googleRequesterPaysProject) - IO(ExitCode.Success) + if(bulkAccessResult.equals(true) && googleResult.equals(true)) { + IO(ExitCode.Success) + } else { + IO(ExitCode.Error) + } + } case None => val drsObject = commandLineArguments.drsObject.get @@ -133,8 +134,10 @@ object DrsLocalizerMain extends IOApp with StrictLogging { } def bulkDownloadResolvedAccessUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], drsCredentials: DrsCredentials): IO[ExitCode] = { - //TODO: invoke new bulk getm downloader - return IO{ExitCode(0)} + val accessUrlMap = resolvedUrlToOutputDestination.map( pair => pair._1.accessUrl.get -> pair._2) + val downloader = defaultDownloaderFactory.buildBulkAccessUrlDownloader(accessUrlMap) + downloader.flatMap(_.download) + IO(ExitCode.Success) //tood } def bulkDownloadResolvedGoogleUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], googleRequesterPaysProject : Option[String]) : List[IO[DownloadResult]] = { @@ -157,10 +160,9 @@ object DrsLocalizerMain extends IOApp with StrictLogging { } // resolve all the URIs once. def resolveCSVManifest(csvManifestPath: String, resolver: DrsLocalizerDrsPathResolver) : Try[Map[DrsResolverResponse, String]] = { - for { - drsUriToDownloadLocationMap: Map[String, String] <- loadCSVAsMap(csvManifestPath) - resolvedUriToDownloadLocationMap: Map[DrsResolverResponse, String] = drsUriToDownloadLocationMap.map(value => (resolveDrsUrl(resolver, value._1), value._2)) - } yield resolvedUriToDownloadLocationMap + val drsUriToDownloadLocationMap: Map[String, String] = loadCSVAsMap(csvManifestPath).get + val resolvedUriToDownloadLocationMap: Map[DrsResolverResponse, String] = drsUriToDownloadLocationMap.map(value => (resolveDrsUrl(resolver, value._1).unsafeRunSync(), value._2)) + Try(resolvedUriToDownloadLocationMap) } private def localizeFile(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials, drsObject: String, containerPath: String) = { diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala index fc418034aa6..fe6687d4b8c 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala @@ -1,56 +1,31 @@ package drs.localizer.downloaders -import cats.data.Validated.{Invalid, Valid} import cats.effect.{ExitCode, IO} import cloud.nio.impl.drs.AccessUrl import com.typesafe.scalalogging.StrictLogging -import common.exception.AggregatedMessageException -import common.util.StringUtil._ import common.validation.ErrorOr.ErrorOr import drs.localizer.downloaders.AccessUrlDownloader._ +import java.nio.charset.StandardCharsets +import java.nio.file.{Files, Path, Paths} import scala.sys.process.{Process, ProcessLogger} import scala.util.Try import scala.util.matching.Regex case class GetmResult(returnCode: Int, stderr: String) -case class BulkAccessUrlDownloader(urlToDownlaodLocation : Map[AccessUrl, String], hashes: Hashes) extends Downloader with StrictLogging { +case class BulkAccessUrlDownloader(urlToDownloadLocation : Map[AccessUrl, String]) extends Downloader with StrictLogging { - def generateJsonManifest : Try[String] = { - //TODO: Make a JSON file with the structure: - //[ - // { - // "url" : accessUrl, - // "filepath" : containerPath, - // "checksum" : "not sure what goes here", - // "checksum-algorithm" : GetmChecksum(hashes, accessUrl) - // }, - // { - // "url" : accessUrl, - // "filepath": containerPath, - // "checksum" : "not sure what goes here", - // "checksum-algorithm": GetmChecksum(hashes, accessUrl) - // } - //] - - } - - def generateDownloadScript: ErrorOr[String] = { - val signedUrl = accessUrl.url - GetmChecksum(hashes, accessUrl).args map { checksumArgs => - s"""mkdir -p $$(dirname '$downloadLoc') && rm -f '$downloadLoc' && getm $checksumArgs --filepath '$downloadLoc' '$signedUrl'""" - } + private def generateBulkDownloadScript: Try[String] = { + val manifestPath = generateJsonManifest(urlToDownloadLocation) + val downloadLoc = "getmDL" + val checksumArgs = "pleaseCompile" + generateJsonManifest(urlToDownloadLocation).map(mainfestPath => s"""mkdir -p $$(dirname '$downloadLoc') && rm -f '$downloadLoc' && getm $checksumArgs --manifest $manifestPath'""") } - def generateBulkDownloadScript: ErrorOr[String] = { - val manifestPath = generateJsonManifest() - } - - def toJsonString(accessUrl: String, filepath: String, checksum: ErrorOr[String], checksumAlgorithm: String): String = { + private def toJsonString(accessUrl: String, filepath: String, checksum: ErrorOr[String], checksumAlgorithm: String): String = { //NB: trailing comma is being removed in generateJsonManifest if (checksum.isValid) { - return s"""{ | "url" : "$accessUrl" | "filepath" : "$filepath" @@ -58,16 +33,16 @@ case class BulkAccessUrlDownloader(urlToDownlaodLocation : Map[AccessUrl, String | "checksum-algorithm" : "$checksumAlgorithm" | }, |""".stripMargin + } else { + s"""{ + | "url" : "$accessUrl" + | "filepath" : "$filepath" + | }, + |""".stripMargin } - - s"""{ - | "url" : "$accessUrl" - | "filepath" : "$filepath" - | }, - |""".stripMargin } - def generateJsonManifest(accessUrlToDownloadDest: Map[AccessUrl, String]): Try[Path] = { + private def generateJsonManifest(accessUrlToDownloadDest: Map[AccessUrl, String]): Try[Path] = { //write a json file that looks like: // [ // { @@ -85,7 +60,8 @@ case class BulkAccessUrlDownloader(urlToDownlaodLocation : Map[AccessUrl, String // ] var jsonString: String = "[\n" for ((accessUrl -> downloadDestination) <- accessUrlToDownloadDest) { - jsonString += toJsonString(accessUrl.url, downloadDestination, GetmChecksum(hashes, accessUrl).escapedChecksum, GetmChecksum(hashes, accessUrl).getmAlgorithm) + val hashes : Option[Map[String,String]] = Option(Map("" -> "")) + jsonString += toJsonString(accessUrl.url, downloadDestination, GetmChecksum(hashes, accessUrl).value, GetmChecksum(hashes, accessUrl).getmAlgorithm) } jsonString = jsonString.substring(0, jsonString.lastIndexOf(",")) //remove trailing comma from array elements jsonString += "]" @@ -93,31 +69,19 @@ case class BulkAccessUrlDownloader(urlToDownlaodLocation : Map[AccessUrl, String } def runGetm: IO[GetmResult] = { - generateDownloadScript match { - case Invalid(errors) => - IO.raiseError(AggregatedMessageException("Error generating access URL download script", errors.toList)) - case Valid(script) => IO { - val copyCommand = Seq("bash", "-c", script) - val copyProcess = Process(copyCommand) - - val stderr = new StringBuilder() - val errorCapture: String => Unit = { s => stderr.append(s); () } - - // As of `getm` version 0.0.4 the contents of stdout do not appear to be interesting (only a progress bar - // with no option to suppress it), so ignore stdout for now. If stdout becomes interesting in future versions - // of `getm` it can be captured just like stderr is being captured here. - val returnCode = copyProcess ! ProcessLogger(_ => (), errorCapture) - - GetmResult(returnCode, stderr.toString().trim()) - } - } + val script = generateBulkDownloadScript + val copyCommand : Seq[String] = Seq("bash", "-c", script.get) + val copyProcess = Process(copyCommand) + val stderr = new StringBuilder() + val errorCapture: String => Unit = { s => stderr.append(s); () } + val returnCode = copyProcess ! ProcessLogger(_ => (), errorCapture) + IO(GetmResult(returnCode, stderr.toString().trim())) } override def download: IO[DownloadResult] = { // We don't want to log the unmasked signed URL here. On a PAPI backend this log will end up under the user's // workspace bucket, but that bucket may have visibility different than the data referenced by the signed URL. - val masked = accessUrl.url.maskSensitiveUri - logger.info(s"Attempting to download data to '$downloadLoc' from access URL '$masked'.") + logger.info(s"Attempting to download data") runGetm map toDownloadResult } diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala index 76fb1e426a9..55e5ff4134a 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/DownloaderFactory.scala @@ -7,7 +7,7 @@ import drs.localizer.downloaders.AccessUrlDownloader.Hashes trait DownloaderFactory { def buildAccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes: Hashes): IO[Downloader] - def buildBulkAccessUrlDownloader(urlToDownloadDestinationMap : Map[AccessUrl, String], hashes: Hashes) : IO[Downloader] + def buildBulkAccessUrlDownloader(urlToDownloadDestinationMap : Map[AccessUrl, String]) : IO[Downloader] def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], diff --git a/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log b/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log deleted file mode 100644 index 6fc9392fd95..00000000000 --- a/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.194f43e1-319b-402d-9c1d-ff704a1db2a2.log +++ /dev/null @@ -1,585 +0,0 @@ -2023-07-27 11:43:30,007 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Parsing workflow as WDL draft-2 -2023-07-27 11:43:30,016 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Call-to-Backend assignments: wf_hello.hello -> TES -2023-07-27 11:43:30,407 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:45:40,558 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Parsing workflow as WDL draft-2 -2023-07-27 11:45:40,567 INFO - MaterializeWorkflowDescriptorActor [UUID(194f43e1)]: Call-to-Backend assignments: wf_hello.hello -> TES -2023-07-27 11:45:41,848 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:46:42,262 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 2. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:47:42,795 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 3. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:48:43,290 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 4. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:49:43,688 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 5. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:50:44,159 INFO - WorkflowActor-194f43e1-319b-402d-9c1d-ff704a1db2a2 [UUID(194f43e1)]: Initialization failed on attempt 6. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted diff --git a/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log b/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log deleted file mode 100644 index 52d8225d72b..00000000000 --- a/https:/lz43a8a3d21540dfd25f5ace.blob.core.windows.net/sc-d4564046-bbba-495c-afec-14f7d3a8283a/workspace-services/cbas/terra-app-4628d0e1-d4b5-4b09-ad5c-9a5766650a7a/workflow-logs/workflow.d81c2541-2cc2-4554-9aee-cb291c63ad7c.log +++ /dev/null @@ -1,670 +0,0 @@ -2023-07-27 11:41:05,061 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Parsing workflow as WDL draft-2 -2023-07-27 11:41:05,559 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Call-to-Backend assignments: wf_hello.hello -> TES -2023-07-27 11:41:07,007 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:42:56,106 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Parsing workflow as WDL draft-2 -2023-07-27 11:42:56,535 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Call-to-Backend assignments: wf_hello.hello -> TES -2023-07-27 11:42:57,853 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:45:39,659 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Parsing workflow as WDL draft-2 -2023-07-27 11:45:40,103 INFO - MaterializeWorkflowDescriptorActor [UUID(d81c2541)]: Call-to-Backend assignments: wf_hello.hello -> TES -2023-07-27 11:45:41,493 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 1. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:46:41,908 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 2. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:47:42,407 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 3. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:48:42,874 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 4. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:49:43,277 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 5. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted -2023-07-27 11:50:43,751 INFO - WorkflowActor-d81c2541-2cc2-4554-9aee-cb291c63ad7c [UUID(d81c2541)]: Initialization failed on attempt 6. Will retry up to 16 times. Next retry is in 1 minute -cromwell.core.CromwellAggregatedException: Initialization Failure: - - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:353) - at cromwell.engine.workflow.WorkflowActor$$anonfun$3.applyOrElse(WorkflowActor.scala:336) - at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:35) - at akka.actor.FSM.processEvent(FSM.scala:707) - at akka.actor.FSM.processEvent$(FSM.scala:704) - at cromwell.engine.workflow.WorkflowActor.akka$actor$LoggingFSM$$super$processEvent(WorkflowActor.scala:222) - at akka.actor.LoggingFSM.processEvent(FSM.scala:847) - at akka.actor.LoggingFSM.processEvent$(FSM.scala:829) - at cromwell.engine.workflow.WorkflowActor.processEvent(WorkflowActor.scala:222) - at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701) - at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695) - at akka.actor.Actor.aroundReceive(Actor.scala:539) - at akka.actor.Actor.aroundReceive$(Actor.scala:537) - at cromwell.engine.workflow.WorkflowActor.akka$actor$Timers$$super$aroundReceive(WorkflowActor.scala:222) - at akka.actor.Timers.aroundReceive(Timers.scala:55) - at akka.actor.Timers.aroundReceive$(Timers.scala:40) - at cromwell.engine.workflow.WorkflowActor.aroundReceive(WorkflowActor.scala:222) - at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) - at akka.actor.ActorCell.invoke(ActorCell.scala:583) - at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) - at akka.dispatch.Mailbox.run(Mailbox.scala:229) - at akka.dispatch.Mailbox.exec(Mailbox.scala:241) - at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) - at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) - at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) - at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) - Suppressed: bio.terra.workspace.client.ApiException: - -401 Unauthorized - -

Unauthorized

-

This server could not verify that you -are authorized to access the document -requested. Either you supplied the wrong -credentials (e.g., bad password), or your -browser doesn't understand how to supply -the credentials required.

- - - at bio.terra.workspace.client.ApiClient.invokeAPI(ApiClient.java:752) - at bio.terra.workspace.api.ControlledAzureResourceApi.createAzureStorageContainerSasToken(ControlledAzureResourceApi.java:434) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$3(BlobFileSystemManager.scala:213) - at scala.util.Try$.apply(Try.scala:210) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.$anonfun$generateBlobSasToken$2(BlobFileSystemManager.scala:214) - at scala.util.Success.flatMap(Try.scala:258) - at cromwell.filesystems.blob.WSMBlobSasTokenGenerator.generateBlobSasToken(BlobFileSystemManager.scala:204) - at cromwell.filesystems.blob.BlobFileSystemManager.retrieveFilesystem(BlobFileSystemManager.scala:84) - at cromwell.filesystems.blob.BlobPath.findNioPath(BlobPathBuilder.scala:109) - at cromwell.filesystems.blob.BlobPath.nioPath(BlobPathBuilder.scala:99) - at cromwell.core.path.Path.nioPathPrivate(PathBuilder.scala:135) - at cromwell.core.path.Path.nioPathPrivate$(PathBuilder.scala:135) - at cromwell.filesystems.blob.BlobPath.nioPathPrivate(BlobPathBuilder.scala:98) - at cromwell.core.path.NioPathMethods.toAbsolutePath(NioPathMethods.scala:31) - at cromwell.core.path.NioPathMethods.toAbsolutePath$(NioPathMethods.scala:31) - at cromwell.filesystems.blob.BlobPath.toAbsolutePath(BlobPathBuilder.scala:98) - at cromwell.backend.io.WorkflowPaths.executionRoot(WorkflowPaths.scala:35) - at cromwell.backend.io.WorkflowPaths.executionRoot$(WorkflowPaths.scala:35) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.executionRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.io.WorkflowPaths.workflowRoot(WorkflowPaths.scala:46) - at cromwell.backend.io.WorkflowPaths.workflowRoot$(WorkflowPaths.scala:46) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot$lzycompute(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesWorkflowPaths.workflowRoot(TesWorkflowPaths.scala:9) - at cromwell.backend.impl.tes.TesInitializationActor.$anonfun$beforeAll$1(TesInitializationActor.scala:91) - at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467) - at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) - at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49) - ... 4 common frames omitted From 294f0c374fb8d29515ddd937960cdee957dfc9b7 Mon Sep 17 00:00:00 2001 From: Tom Wiseman Date: Fri, 1 Sep 2023 16:03:31 -0400 Subject: [PATCH 14/36] somethin that kinda works --- .../drs/localizer/DrsLocalizerMain.scala | 42 ++++------- .../downloaders/BulkAccessUrlDownloader.scala | 50 ++++++------- .../drs/localizer/DrsLocalizerMainSpec.scala | 30 ++++++++ ...o template_ Cromwell DRS Localizer.run.xml | 2 +- src/ci/resources/tes_application.conf | 75 ++++++++++--------- 5 files changed, 105 insertions(+), 94 deletions(-) diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala index 37e99ed4d32..c471156ef7e 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/DrsLocalizerMain.scala @@ -7,6 +7,7 @@ import cloud.nio.impl.drs._ import cloud.nio.spi.{CloudNioBackoff, CloudNioSimpleExponentialBackoff} import com.typesafe.scalalogging.StrictLogging import drs.localizer.CommandLineParser.AccessTokenStrategy.{Azure, Google} +import drs.localizer.downloaders.AccessUrlDownloader import drs.localizer.downloaders.AccessUrlDownloader.Hashes import drs.localizer.downloaders._ import org.apache.commons.csv.{CSVFormat, CSVParser} @@ -44,10 +45,9 @@ object DrsLocalizerMain extends IOApp with StrictLogging { initialInterval = 10 seconds, maxInterval = 60 seconds, multiplier = 2) val defaultDownloaderFactory: DownloaderFactory = new DownloaderFactory { - override def buildAccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes: Hashes): IO[Downloader] = { - val downloader = AccessUrlDownloader(accessUrl, downloadLoc, hashes) - IO.pure(downloader) - } + override def buildAccessUrlDownloader(accessUrl: AccessUrl, downloadLoc: String, hashes: Hashes): IO[Downloader] = + IO.pure(AccessUrlDownloader(accessUrl, downloadLoc, hashes)) + override def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], downloadLoc: String, requesterPaysProjectOption: Option[String]): IO[Downloader] = IO.pure(GcsUriDownloader(gcsPath, serviceAccountJsonOption, downloadLoc, requesterPaysProjectOption)) @@ -61,27 +61,7 @@ object DrsLocalizerMain extends IOApp with StrictLogging { IO.pure(ExitCode.Error) } - /* - def runLocalizer(commandLineArguments: CommandLineArguments, drsCredentials: DrsCredentials): IO[ExitCode] = { - commandLineArguments.manifestPath match { - case Some(manifestPath) => - val manifestFile = new File(manifestPath) - val csvParser = CSVParser.parse(manifestFile, Charset.defaultCharset(), CSVFormat.DEFAULT) - val exitCodes: IO[List[ExitCode]] = csvParser.asScala.map(record => { - val drsObject = record.get(0) - val containerPath = record.get(1) - localizeFile(commandLineArguments, drsCredentials, drsObject, containerPath) - }).toList.sequence - exitCodes.map(_.find(_ != ExitCode.Success).getOrElse(ExitCode.Success)) - case None => - val drsObject = commandLineArguments.drsObject.get - val containerPath = commandLineArguments.containerPath.get - localizeFile(commandLineArguments, drsCredentials, drsObject, containerPath) - } - } - */ - - def getDrsPathResolver(drsCredentials: DrsCredentials): IO[DrsLocalizerDrsPathResolver] = { + private def getDrsPathResolver(drsCredentials: DrsCredentials): IO[DrsLocalizerDrsPathResolver] = { IO { val drsConfig = DrsConfig.fromEnv(sys.env) logger.info(s"Using ${drsConfig.drsResolverUrl} to resolve DRS Objects") @@ -113,8 +93,8 @@ object DrsLocalizerMain extends IOApp with StrictLogging { return IO(ExitCode.Error) //Could not resolve DRS urls. Fail before attempting to download anything } - val accessUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == URIType.HTTPS) - val googleUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == URIType.GCS) + val accessUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == Try(URIType.HTTPS)) + val googleUrls = resolvedUris.get.filter(drsResponse => toUriType(drsResponse._1) == Try(URIType.GCS)) val bulkAccessResult : IO[ExitCode] = bulkDownloadResolvedAccessUrls(accessUrls, drsCredentials) val googleResult : List[IO[DownloadResult]] = bulkDownloadResolvedGoogleUrls(googleUrls, commandLineArguments.googleRequesterPaysProject) @@ -129,13 +109,19 @@ object DrsLocalizerMain extends IOApp with StrictLogging { case None => val drsObject = commandLineArguments.drsObject.get val containerPath = commandLineArguments.containerPath.get + val resolvedURI = resolveDrsUrl(resolver, drsObject) + val map : Map[DrsResolverResponse, String] = Map((resolvedURI.unsafeRunSync() -> containerPath)) + bulkDownloadResolvedAccessUrls(map, drsCredentials) localizeFile(commandLineArguments, drsCredentials, drsObject, containerPath) } } - def bulkDownloadResolvedAccessUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], drsCredentials: DrsCredentials): IO[ExitCode] = { + private def bulkDownloadResolvedAccessUrls(resolvedUrlToOutputDestination : Map[DrsResolverResponse, String], drsCredentials: DrsCredentials): IO[ExitCode] = { val accessUrlMap = resolvedUrlToOutputDestination.map( pair => pair._1.accessUrl.get -> pair._2) val downloader = defaultDownloaderFactory.buildBulkAccessUrlDownloader(accessUrlMap) + val unwrappedDownloader = downloader.unsafeRunSync() + val downloadResult = unwrappedDownloader.download + downloadResult.toString() downloader.flatMap(_.download) IO(ExitCode.Success) //tood } diff --git a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala index fe6687d4b8c..a01034d2db9 100644 --- a/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala +++ b/cromwell-drs-localizer/src/main/scala/drs/localizer/downloaders/BulkAccessUrlDownloader.scala @@ -10,34 +10,31 @@ import java.nio.charset.StandardCharsets import java.nio.file.{Files, Path, Paths} import scala.sys.process.{Process, ProcessLogger} import scala.util.Try -import scala.util.matching.Regex - -case class GetmResult(returnCode: Int, stderr: String) case class BulkAccessUrlDownloader(urlToDownloadLocation : Map[AccessUrl, String]) extends Downloader with StrictLogging { private def generateBulkDownloadScript: Try[String] = { - val manifestPath = generateJsonManifest(urlToDownloadLocation) + val manifestPath = generateJsonManifest(urlToDownloadLocation).get val downloadLoc = "getmDL" - val checksumArgs = "pleaseCompile" - generateJsonManifest(urlToDownloadLocation).map(mainfestPath => s"""mkdir -p $$(dirname '$downloadLoc') && rm -f '$downloadLoc' && getm $checksumArgs --manifest $manifestPath'""") + //val checksumArgs = "pleaseCompile" + generateJsonManifest(urlToDownloadLocation).map(_ => s"""mkdir -p $$(dirname '$downloadLoc') && rm -f '$downloadLoc' && getm --manifest '$manifestPath'""") } private def toJsonString(accessUrl: String, filepath: String, checksum: ErrorOr[String], checksumAlgorithm: String): String = { //NB: trailing comma is being removed in generateJsonManifest if (checksum.isValid) { - s"""{ - | "url" : "$accessUrl" - | "filepath" : "$filepath" - | "checksum" : "$checksum" - | "checksum-algorithm" : "$checksumAlgorithm" - | }, + s""" { + | "url" : "$accessUrl", + | "filepath" : "$filepath", + | "checksum" : "$checksum", + | "checksum-algorithm" : "$checksumAlgorithm" + | }, |""".stripMargin } else { - s"""{ - | "url" : "$accessUrl" - | "filepath" : "$filepath" - | }, + s""" { + | "url" : "$accessUrl", + | "filepath" : "$filepath" + | }, |""".stripMargin } } @@ -46,15 +43,15 @@ case class BulkAccessUrlDownloader(urlToDownloadLocation : Map[AccessUrl, String //write a json file that looks like: // [ // { - // "url" : "www.123.com" - // "filepath" : "path/to/where/123/should/be/downloaded" - // "checksum" : "sdfjndsfjkfsdjsdfkjsdf" + // "url" : "www.123.com", + // "filepath" : "path/to/where/123/should/be/downloaded", + // "checksum" : "sdfjndsfjkfsdjsdfkjsdf", // "checksum-algorithm" : "md5" // }, // { // "url" : "www.567.com" - // "filepath" : "path/to/where/567/should/be/downloaded" - // "checksum" : "asdasdasfsdfsdfasdsdfasd" + // "filepath" : "path/to/where/567/should/be/downloaded", + // "checksum" : "asdasdasfsdfsdfasdsdfasd", // "checksum-algorithm" : "md5" // } // ] @@ -64,17 +61,19 @@ case class BulkAccessUrlDownloader(urlToDownloadLocation : Map[AccessUrl, String jsonString += toJsonString(accessUrl.url, downloadDestination, GetmChecksum(hashes, accessUrl).value, GetmChecksum(hashes, accessUrl).getmAlgorithm) } jsonString = jsonString.substring(0, jsonString.lastIndexOf(",")) //remove trailing comma from array elements - jsonString += "]" + jsonString += "\n]" Try(Files.write(Paths.get("getm-manifest.json"), jsonString.getBytes(StandardCharsets.UTF_8))) } def runGetm: IO[GetmResult] = { val script = generateBulkDownloadScript val copyCommand : Seq[String] = Seq("bash", "-c", script.get) + logger.info(script.get) val copyProcess = Process(copyCommand) val stderr = new StringBuilder() val errorCapture: String => Unit = { s => stderr.append(s); () } val returnCode = copyProcess ! ProcessLogger(_ => (), errorCapture) + logger.info(stderr.toString().trim()) IO(GetmResult(returnCode, stderr.toString().trim())) } @@ -116,10 +115,3 @@ case class BulkAccessUrlDownloader(urlToDownloadLocation : Map[AccessUrl, String } } } - -object AccessUrlDownloader { - type Hashes = Option[Map[String, String]] - - val ChecksumFailureMessage: Regex = raw""".*AssertionError: Checksum failed!.*""".r - val HttpStatusMessage: Regex = raw"""ERROR:getm\.cli.*"status_code":\s*(\d+).*""".r -} diff --git a/cromwell-drs-localizer/src/test/scala/drs/localizer/DrsLocalizerMainSpec.scala b/cromwell-drs-localizer/src/test/scala/drs/localizer/DrsLocalizerMainSpec.scala index 66799fcc099..0602a1dd73c 100644 --- a/cromwell-drs-localizer/src/test/scala/drs/localizer/DrsLocalizerMainSpec.scala +++ b/cromwell-drs-localizer/src/test/scala/drs/localizer/DrsLocalizerMainSpec.scala @@ -99,6 +99,11 @@ class DrsLocalizerMainSpec extends AnyFlatSpec with CromwellTimeoutSpec with Mat // This test path should never ask for the GCS downloader throw new RuntimeException("test failure") } + + override def buildBulkAccessUrlDownloader(urlToDownloadLocation: Map[AccessUrl, String]): IO[Downloader] = { + // This test path should never ask for the GCS downloader + throw new RuntimeException("test failure") + } } drsLocalizer.resolveAndDownloadWithRetries( @@ -134,6 +139,11 @@ class DrsLocalizerMainSpec extends AnyFlatSpec with CromwellTimeoutSpec with Mat // This test path should never ask for the GCS downloader throw new RuntimeException("test failure") } + + override def buildBulkAccessUrlDownloader(urlToDownloadLocation : Map[AccessUrl, String]): IO[Downloader] = { + // This test path should never ask for the GCS downloader + throw new RuntimeException("test failure") + } } assertThrows[Throwable] { @@ -172,6 +182,11 @@ class DrsLocalizerMainSpec extends AnyFlatSpec with CromwellTimeoutSpec with Mat // This test path should never ask for the GCS downloader throw new RuntimeException("test failure") } + + override def buildBulkAccessUrlDownloader(urlToDownloadLocation: Map[AccessUrl, String]): IO[Downloader] = { + // This test path should never ask for the GCS downloader + throw new RuntimeException("test failure") + } } assertThrows[Throwable] { @@ -208,6 +223,11 @@ class DrsLocalizerMainSpec extends AnyFlatSpec with CromwellTimeoutSpec with Mat override def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], downloadLoc: String, requesterPaysProjectOption: Option[String]): IO[Downloader] = { gcsUriDownloader } + + override def buildBulkAccessUrlDownloader(urlToDownloadLocation: Map[AccessUrl, String]): IO[Downloader] = { + // This test path should never ask for the GCS downloader + throw new RuntimeException("test failure") + } } drsLocalizer.resolveAndDownloadWithRetries( @@ -241,6 +261,11 @@ class DrsLocalizerMainSpec extends AnyFlatSpec with CromwellTimeoutSpec with Mat override def buildGcsUriDownloader(gcsPath: String, serviceAccountJsonOption: Option[String], downloadLoc: String, requesterPaysProjectOption: Option[String]): IO[Downloader] = { gcsUriDownloader } + + override def buildBulkAccessUrlDownloader(urlToDownloadLocation: Map[AccessUrl, String]): IO[Downloader] = { + // This test path should never ask for the GCS downloader + throw new RuntimeException("test failure") + } } assertThrows[Throwable] { @@ -276,6 +301,11 @@ class DrsLocalizerMainSpec extends AnyFlatSpec with CromwellTimeoutSpec with Mat // This test path should never ask for the GCS URI downloader. throw new RuntimeException("test failure") } + + override def buildBulkAccessUrlDownloader(urlToDownloadLocation: Map[AccessUrl, String]): IO[Downloader] = { + // This test path should never ask for the GCS downloader + throw new RuntimeException("test failure") + } } assertThrows[Throwable] { diff --git a/runConfigurations/Repo template_ Cromwell DRS Localizer.run.xml b/runConfigurations/Repo template_ Cromwell DRS Localizer.run.xml index 91b36d9277e..12f01e0179e 100644 --- a/runConfigurations/Repo template_ Cromwell DRS Localizer.run.xml +++ b/runConfigurations/Repo template_ Cromwell DRS Localizer.run.xml @@ -5,7 +5,7 @@