Permalink
Browse files

release_candidate_0.22

  • Loading branch information...
2 parents fac45fc + 06d7f33 commit 0099816a6b78af7b6f806784e43d2954aa9c8c42 @ruchim ruchim committed with ruchim Oct 13, 2016
Showing with 3,556 additions and 1,528 deletions.
  1. +0 −1 .pullapprove.yml
  2. +73 −13 CHANGELOG.md
  3. +2 −2 README.md
  4. +3 −2 backend/src/main/scala/cromwell/backend/BackendJobExecutionActor.scala
  5. +7 −1 backend/src/main/scala/cromwell/backend/BackendLifecycleActorFactory.scala
  6. +1 −1 backend/src/main/scala/cromwell/backend/BackendWorkflowInitializationActor.scala
  7. +16 −10 backend/src/main/scala/cromwell/backend/MemorySize.scala
  8. +0 −1 backend/src/main/scala/cromwell/backend/RuntimeAttributeDefinition.scala
  9. +3 −0 backend/src/main/scala/cromwell/backend/async/AsyncBackendJobExecutionActor.scala
  10. +53 −0 backend/src/main/scala/cromwell/backend/backend.scala
  11. +1 −1 backend/src/main/scala/cromwell/backend/callcaching/CacheHitDuplicating.scala
  12. +2 −2 backend/src/main/scala/cromwell/backend/io/WorkflowPaths.scala
  13. +1 −53 backend/src/main/scala/cromwell/backend/package.scala
  14. +12 −8 backend/src/main/scala/cromwell/backend/validation/ContinueOnReturnCodeValidation.scala
  15. +2 −3 backend/src/main/scala/cromwell/backend/validation/CpuValidation.scala
  16. +2 −3 backend/src/main/scala/cromwell/backend/validation/DockerValidation.scala
  17. +3 −3 backend/src/main/scala/cromwell/backend/validation/FailOnStderrValidation.scala
  18. +7 −8 backend/src/main/scala/cromwell/backend/validation/MemoryValidation.scala
  19. +4 −4 backend/src/main/scala/cromwell/backend/validation/RuntimeAttributesDefault.scala
  20. +12 −11 backend/src/main/scala/cromwell/backend/validation/RuntimeAttributesValidation.scala
  21. +14 −21 backend/src/main/scala/cromwell/backend/validation/ValidatedRuntimeAttributesBuilder.scala
  22. +0 −1 backend/src/main/scala/cromwell/backend/wdl/ReadLikeFunctions.scala
  23. +3 −3 backend/src/main/scala/cromwell/backend/wfs/WorkflowFileSystemProvider.scala
  24. +7 −7 backend/src/test/scala/cromwell/backend/io/TestWorkflows.scala
  25. +1 −0 backend/src/test/scala/cromwell/backend/io/WorkflowPathsSpec.scala
  26. +6 −6 backend/src/test/scala/cromwell/backend/validation/RuntimeAttributesDefaultSpec.scala
  27. +84 −85 backend/src/test/scala/cromwell/backend/validation/RuntimeAttributesValidationSpec.scala
  28. +1 −0 build.sbt
  29. +24 −5 core/src/main/resources/reference.conf
  30. +13 −13 core/src/main/scala/cromwell/core/ConfigUtil.scala
  31. +7 −7 core/src/main/scala/cromwell/core/DockerCredentials.scala
  32. +22 −0 core/src/main/scala/cromwell/core/ErrorOr.scala
  33. +0 −1 core/src/main/scala/cromwell/core/ExecutionStore.scala
  34. +11 −0 core/src/main/scala/cromwell/core/JobExecutionToken.scala
  35. +12 −3 core/src/main/scala/cromwell/core/PathCopier.scala
  36. +6 −2 core/src/main/scala/cromwell/core/PathFactory.scala
  37. +4 −3 core/src/main/scala/cromwell/core/WorkflowState.scala
  38. +12 −0 core/src/main/scala/cromwell/core/core.scala
  39. +5 −5 core/src/main/scala/cromwell/core/logging/LoggerWrapper.scala
  40. +5 −5 core/src/main/scala/cromwell/core/logging/WorkflowLogger.scala
  41. +1 −13 core/src/main/scala/cromwell/core/package.scala
  42. +13 −0 core/src/main/scala/cromwell/util/FileUtil.scala
  43. +0 −4 core/src/test/scala/cromwell/core/retry/RetrySpec.scala
  44. +25 −1 core/src/test/scala/cromwell/util/AkkaTestUtil.scala
  45. +69 −68 core/src/test/scala/cromwell/util/SampleWdl.scala
  46. +1 −1 core/src/test/scala/cromwell/util/TryWithResourceSpec.scala
  47. +0 −1 database/migration/src/main/scala/cromwell/database/migration/WdlTransformation.scala
  48. +1 −2 ...e/migration/src/main/scala/cromwell/database/migration/metadata/table/symbol/QueryPaginator.scala
  49. +0 −1 ...ation/src/main/scala/cromwell/database/migration/metadata/table/symbol/SymbolTableMigration.scala
  50. +0 −2 ...gration/src/main/scala/cromwell/database/migration/restart/table/JobStoreSimpletonMigration.scala
  51. +9 −1 database/sql/src/main/scala/cromwell/database/slick/CallCachingSlickDatabase.scala
  52. +3 −3 database/sql/src/main/scala/cromwell/database/slick/JobKeyValueSlickDatabase.scala
  53. +5 −2 database/sql/src/main/scala/cromwell/database/slick/JobStoreSlickDatabase.scala
  54. +7 −7 database/sql/src/main/scala/cromwell/database/slick/MetadataSlickDatabase.scala
  55. +6 −6 database/sql/src/main/scala/cromwell/database/slick/SlickDatabase.scala
  56. +2 −2 database/sql/src/main/scala/cromwell/database/slick/SummaryStatusSlickDatabase.scala
  57. +6 −3 database/sql/src/main/scala/cromwell/database/slick/WorkflowStoreSlickDatabase.scala
  58. +7 −0 database/sql/src/main/scala/cromwell/database/slick/tables/CallCachingEntryComponent.scala
  59. +2 −2 database/sql/src/main/scala/cromwell/database/slick/tables/CallCachingHashEntryComponent.scala
  60. +2 −3 database/sql/src/main/scala/cromwell/database/slick/tables/MetadataEntryComponent.scala
  61. +5 −2 database/sql/src/main/scala/cromwell/database/sql/CallCachingSqlDatabase.scala
  62. +1 −1 database/sql/src/main/scala/cromwell/database/sql/MetadataSqlDatabase.scala
  63. +1 −1 database/sql/src/main/scala/cromwell/database/sql/SqlDatabase.scala
  64. +1 −1 docker/install.sh
  65. +21 −1 engine/src/main/resources/swagger/cromwell.yaml
  66. +6 −5 engine/src/main/scala/cromwell/engine/EngineFilesystems.scala
  67. +4 −6 engine/src/main/scala/cromwell/engine/backend/BackendConfiguration.scala
  68. +5 −0 engine/src/main/scala/cromwell/engine/backend/BackendSingletonCollection.scala
  69. +0 −1 engine/src/main/scala/cromwell/engine/backend/CromwellBackends.scala
  70. +25 −0 engine/src/main/scala/cromwell/engine/engine.scala
  71. +0 −22 engine/src/main/scala/cromwell/engine/package.scala
  72. +6 −2 engine/src/main/scala/cromwell/engine/workflow/SingleWorkflowRunnerActor.scala
  73. +10 −4 engine/src/main/scala/cromwell/engine/workflow/WorkflowActor.scala
  74. +27 −23 engine/src/main/scala/cromwell/engine/workflow/WorkflowManagerActor.scala
  75. +4 −2 engine/src/main/scala/cromwell/engine/workflow/lifecycle/CopyWorkflowLogsActor.scala
  76. +45 −37 engine/src/main/scala/cromwell/engine/workflow/lifecycle/MaterializeWorkflowDescriptorActor.scala
  77. +0 −1 engine/src/main/scala/cromwell/engine/workflow/lifecycle/WorkflowFinalizationActor.scala
  78. +0 −1 engine/src/main/scala/cromwell/engine/workflow/lifecycle/WorkflowInitializationActor.scala
  79. +111 −21 engine/src/main/scala/cromwell/engine/workflow/lifecycle/execution/EngineJobExecutionActor.scala
  80. +9 −7 engine/src/main/scala/cromwell/engine/workflow/lifecycle/execution/JobPreparationActor.scala
  81. +17 −14 engine/src/main/scala/cromwell/engine/workflow/lifecycle/execution/WorkflowExecutionActor.scala
  82. +0 −1 engine/src/main/scala/cromwell/engine/workflow/lifecycle/execution/WorkflowExecutionActorData.scala
  83. +15 −13 engine/src/main/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/CallCache.scala
  84. +36 −0 ...ain/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/CallCacheInvalidateActor.scala
  85. +8 −7 .../src/main/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/CallCacheReadActor.scala
  86. +7 −4 ...c/main/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/EngineJobHashingActor.scala
  87. +6 −8 ...main/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/FetchCachedResultsActor.scala
  88. +7 −0 engine/src/main/scala/cromwell/engine/workflow/lifecycle/lifecycle.scala
  89. +0 −8 engine/src/main/scala/cromwell/engine/workflow/lifecycle/package.scala
  90. +134 −0 engine/src/main/scala/cromwell/engine/workflow/tokens/JobExecutionTokenDispenserActor.scala
  91. +50 −0 engine/src/main/scala/cromwell/engine/workflow/tokens/TokenPool.scala
  92. +2 −2 engine/src/main/scala/cromwell/engine/workflow/workflowstore/SqlWorkflowStore.scala
  93. +1 −1 engine/src/main/scala/cromwell/engine/workflow/workflowstore/WorkflowStore.scala
  94. +7 −8 engine/src/main/scala/cromwell/engine/workflow/workflowstore/WorkflowStoreActor.scala
  95. +0 −18 engine/src/main/scala/cromwell/engine/workflow/workflowstore/package.scala
  96. +15 −0 engine/src/main/scala/cromwell/engine/workflow/workflowstore/workflowstore_.scala
  97. +1 −1 engine/src/main/scala/cromwell/jobstore/JobStoreWriterActor.scala
  98. +10 −0 engine/src/main/scala/cromwell/jobstore/jobstore_.scala
  99. +1 −7 engine/src/main/scala/cromwell/jobstore/package.scala
  100. +12 −4 engine/src/main/scala/cromwell/server/CromwellRootActor.scala
  101. +6 −9 engine/src/main/scala/cromwell/server/CromwellServer.scala
  102. +6 −2 engine/src/main/scala/cromwell/server/CromwellSystem.scala
  103. +2 −5 engine/src/main/scala/cromwell/webservice/ApiDataModels.scala
  104. +10 −11 engine/src/main/scala/cromwell/webservice/CromwellApiHandler.scala
  105. +31 −10 engine/src/main/scala/cromwell/webservice/CromwellApiService.scala
  106. +7 −6 engine/src/main/scala/cromwell/webservice/PerRequest.scala
  107. +19 −20 engine/src/main/scala/cromwell/webservice/metadata/IndexedJsonValue.scala
  108. +15 −13 engine/src/main/scala/cromwell/webservice/metadata/MetadataBuilderActor.scala
  109. +0 −37 engine/src/main/scala/cromwell/webservice/package.scala
  110. +39 −0 engine/src/main/scala/cromwell/webservice/webservice_.scala
  111. +0 −1 engine/src/test/scala/cromwell/ArrayOfArrayCoercionSpec.scala
  112. +0 −3 engine/src/test/scala/cromwell/ArrayWorkflowSpec.scala
  113. +6 −10 engine/src/test/scala/cromwell/CallCachingWorkflowSpec.scala
  114. +0 −1 engine/src/test/scala/cromwell/CromwellSpec.scala
  115. +8 −5 engine/src/test/scala/cromwell/CromwellTestkitSpec.scala
  116. +0 −1 engine/src/test/scala/cromwell/DeclarationWorkflowSpec.scala
  117. +1 −3 engine/src/test/scala/cromwell/FilePassingWorkflowSpec.scala
  118. +0 −1 engine/src/test/scala/cromwell/MapWorkflowSpec.scala
  119. +1 −0 engine/src/test/scala/cromwell/MetadataWatchActor.scala
  120. +1 −2 engine/src/test/scala/cromwell/MultipleFilesWithSameNameWorkflowSpec.scala
  121. +2 −3 engine/src/test/scala/cromwell/OptionalParamWorkflowSpec.scala
  122. +0 −1 engine/src/test/scala/cromwell/PostfixQuantifierWorkflowSpec.scala
  123. +2 −2 engine/src/test/scala/cromwell/RestartWorkflowSpec.scala
  124. +0 −2 engine/src/test/scala/cromwell/ScatterWorkflowSpec.scala
  125. +5 −2 engine/src/test/scala/cromwell/SimpleWorkflowActorSpec.scala
  126. +2 −4 engine/src/test/scala/cromwell/WdlFunctionsAtWorkflowLevelSpec.scala
  127. +0 −1 engine/src/test/scala/cromwell/WorkflowOutputsSpec.scala
  128. +1 −2 engine/src/test/scala/cromwell/engine/WorkflowManagerActorSpec.scala
  129. +13 −13 engine/src/test/scala/cromwell/engine/WorkflowStoreActorSpec.scala
  130. +3 −2 engine/src/test/scala/cromwell/engine/backend/mock/DefaultBackendJobExecutionActor.scala
  131. +3 −2 engine/src/test/scala/cromwell/engine/backend/mock/RetryableBackendLifecycleActorFactory.scala
  132. +15 −10 engine/src/test/scala/cromwell/engine/workflow/SingleWorkflowRunnerActorSpec.scala
  133. +5 −3 engine/src/test/scala/cromwell/engine/workflow/WorkflowActorSpec.scala
  134. +10 −10 engine/src/test/scala/cromwell/engine/workflow/lifecycle/CachingConfigSpec.scala
  135. +3 −4 ...ne/src/test/scala/cromwell/engine/workflow/lifecycle/MaterializeWorkflowDescriptorActorSpec.scala
  136. +10 −4 engine/src/test/scala/cromwell/engine/workflow/lifecycle/execution/WorkflowExecutionActorSpec.scala
  137. +9 −9 engine/src/test/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/EJHADataSpec.scala
  138. +18 −17 ...st/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/EngineJobHashingActorSpec.scala
  139. +3 −3 ...cala/cromwell/engine/workflow/lifecycle/execution/callcaching/PredictableCallCacheReadActor.scala
  140. +18 −16 ...ala/cromwell/engine/workflow/lifecycle/execution/ejea/EjeaBackendIsCopyingCachedOutputsSpec.scala
  141. +6 −8 .../src/test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EjeaCheckingCallCacheSpec.scala
  142. +5 −8 ...e/src/test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EjeaCheckingJobStoreSpec.scala
  143. +7 −7 ...cromwell/engine/workflow/lifecycle/execution/ejea/EjeaFetchingCachedOutputsFromDatabaseSpec.scala
  144. +53 −0 ...test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EjeaInvalidatingCacheEntrySpec.scala
  145. +9 −23 engine/src/test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EjeaPendingSpec.scala
  146. +54 −0 ...st/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EjeaRequestingExecutionTokenSpec.scala
  147. +3 −2 ...rc/test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EngineJobExecutionActorSpec.scala
  148. +22 −1 ...est/scala/cromwell/engine/workflow/lifecycle/execution/ejea/EngineJobExecutionActorSpecUtil.scala
  149. +3 −3 engine/src/test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/ExpectOne.scala
  150. +20 −7 engine/src/test/scala/cromwell/engine/workflow/lifecycle/execution/ejea/PerTestHelper.scala
  151. +304 −0 engine/src/test/scala/cromwell/engine/workflow/tokens/JobExecutionTokenDispenserActorSpec.scala
  152. +35 −0 engine/src/test/scala/cromwell/engine/workflow/tokens/TestTokenGrabbingActor.scala
  153. +2 −2 engine/src/test/scala/cromwell/engine/workflow/workflowstore/InMemoryWorkflowStore.scala
  154. +0 −2 engine/src/test/scala/cromwell/jobstore/JobStoreServiceSpec.scala
  155. +3 −0 engine/src/test/scala/cromwell/jobstore/JobStoreWriterSpec.scala
  156. +16 −2 engine/src/test/scala/cromwell/webservice/CromwellApiServiceSpec.scala
  157. +7 −8 engine/src/test/scala/cromwell/webservice/MetadataBuilderActorSpec.scala
  158. +0 −1 filesystems/gcs/src/main/scala/cromwell/filesystems/gcs/GcsFileSystem.scala
  159. +32 −16 filesystems/gcs/src/main/scala/cromwell/filesystems/gcs/GcsFileSystemProvider.scala
  160. +1 −1 filesystems/gcs/src/main/scala/cromwell/filesystems/gcs/GoogleAuthMode.scala
  161. +16 −14 filesystems/gcs/src/main/scala/cromwell/filesystems/gcs/GoogleConfiguration.scala
  162. +1 −1 filesystems/gcs/src/main/scala/cromwell/filesystems/gcs/NioGcsPath.scala
  163. +0 −2 filesystems/gcs/src/main/scala/cromwell/filesystems/gcs/package.scala
  164. +0 −1 filesystems/gcs/src/test/scala/cromwell/filesystems/gcs/GoogleConfigurationSpec.scala
  165. +7 −5 project/Dependencies.scala
  166. +30 −5 project/Settings.scala
  167. +1 −1 project/Version.scala
  168. +3 −5 services/src/main/scala/cromwell/services/ServiceRegistryActor.scala
  169. +2 −2 services/src/main/scala/cromwell/services/ServicesStore.scala
  170. +1 −2 services/src/main/scala/cromwell/services/metadata/MetadataQuery.scala
  171. +1 −2 services/src/main/scala/cromwell/services/metadata/MetadataService.scala
  172. +26 −25 services/src/main/scala/cromwell/services/metadata/WorkflowQueryKey.scala
  173. +15 −15 services/src/main/scala/cromwell/services/metadata/WorkflowQueryParameters.scala
  174. +9 −7 services/src/main/scala/cromwell/services/metadata/impl/MetadataDatabaseAccess.scala
  175. +6 −9 services/src/main/scala/cromwell/services/metadata/impl/MetadataServiceActor.scala
  176. +0 −1 services/src/main/scala/cromwell/services/metadata/impl/MetadataSummaryRefreshActor.scala
  177. +39 −0 services/src/main/scala/cromwell/services/metadata/metadata.scala
  178. +0 −37 services/src/main/scala/cromwell/services/metadata/package.scala
  179. +38 −39 services/src/test/scala/cromwell/services/metadata/WorkflowQueryParametersSpec.scala
  180. +18 −0 src/bin/travis/resources/local_centaur.conf
  181. +2 −1 src/bin/travis/testCentaurLocal.sh
  182. +15 −13 src/main/scala/cromwell/CromwellCommandLine.scala
  183. +0 −2 src/main/scala/cromwell/Main.scala
  184. +0 −1 src/test/scala/cromwell/CromwellCommandLineSpec.scala
  185. +3 −2 ...ortedBackends/htcondor/src/main/scala/cromwell/backend/impl/htcondor/HtCondorBackendFactory.scala
  186. +42 −15 ...edBackends/htcondor/src/main/scala/cromwell/backend/impl/htcondor/HtCondorJobExecutionActor.scala
  187. +17 −14 ...edBackends/htcondor/src/main/scala/cromwell/backend/impl/htcondor/HtCondorRuntimeAttributes.scala
  188. +2 −2 supportedBackends/htcondor/src/main/scala/cromwell/backend/impl/htcondor/HtCondorWrapper.scala
  189. +2 −2 ...ends/htcondor/src/test/scala/cromwell/backend/impl/htcondor/HtCondorInitializationActorSpec.scala
  190. +21 −14 ...ckends/htcondor/src/test/scala/cromwell/backend/impl/htcondor/HtCondorJobExecutionActorSpec.scala
  191. +7 −5 ...ckends/htcondor/src/test/scala/cromwell/backend/impl/htcondor/HtCondorRuntimeAttributesSpec.scala
  192. +0 −1 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/GenomicsFactory.scala
  193. +64 −51 ...ortedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesAsyncBackendJobExecutionActor.scala
  194. +13 −14 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesAttributes.scala
  195. +6 −4 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesBackendLifecycleActorFactory.scala
  196. +20 −0 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesBackendSingletonActor.scala
  197. +1 −1 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesCacheHitCopyingActor.scala
  198. +4 −1 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesFinalizationActor.scala
  199. +4 −2 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesInitializationActor.scala
  200. +1 −1 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesJobCachingActorHelper.scala
  201. +9 −5 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesJobExecutionActor.scala
  202. +23 −21 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/JesRuntimeAttributes.scala
  203. +22 −19 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/Run.scala
  204. +1 −1 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/RunStatus.scala
  205. +15 −13 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/io/JesAttachedDisk.scala
  206. +0 −2 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/io/package.scala
  207. +108 −0 ...ortedBackends/jes/src/main/scala/cromwell/backend/impl/jes/statuspolling/JesApiQueryManager.scala
  208. +122 −0 supportedBackends/jes/src/main/scala/cromwell/backend/impl/jes/statuspolling/JesPollingActor.scala
  209. +51 −0 ...edBackends/jes/src/main/scala/cromwell/backend/impl/jes/statuspolling/JesPollingActorClient.scala
  210. +34 −39 ...dBackends/jes/src/test/scala/cromwell/backend/impl/jes/JesAsyncBackendJobExecutionActorSpec.scala
  211. +1 −1 supportedBackends/jes/src/test/scala/cromwell/backend/impl/jes/JesAttributesSpec.scala
  212. +2 −2 supportedBackends/jes/src/test/scala/cromwell/backend/impl/jes/JesInitializationActorSpec.scala
  213. +3 −2 supportedBackends/jes/src/test/scala/cromwell/backend/impl/jes/JesRuntimeAttributesSpec.scala
  214. +1 −2 supportedBackends/jes/src/test/scala/cromwell/backend/impl/jes/RunSpec.scala
  215. +153 −0 ...dBackends/jes/src/test/scala/cromwell/backend/impl/jes/statuspolling/JesApiQueryManagerSpec.scala
  216. +131 −0 ...rtedBackends/jes/src/test/scala/cromwell/backend/impl/jes/statuspolling/JesPollingActorSpec.scala
  217. +3 −2 ...edBackends/sfs/src/main/scala/cromwell/backend/impl/sfs/config/ConfigAsyncJobExecutionActor.scala
  218. +21 −4 ...ends/sfs/src/main/scala/cromwell/backend/impl/sfs/config/ConfigBackendLifecycleActorFactory.scala
  219. +74 −0 supportedBackends/sfs/src/main/scala/cromwell/backend/impl/sfs/config/ConfigHashingStrategy.scala
  220. +6 −6 supportedBackends/sfs/src/main/scala/cromwell/backend/impl/sfs/config/ConfigWdlNamespace.scala
  221. +5 −6 ...ds/sfs/src/main/scala/cromwell/backend/impl/sfs/config/PrimitiveRuntimeAttributesValidation.scala
  222. +7 −5 supportedBackends/sfs/src/main/scala/cromwell/backend/sfs/BackgroundAsyncJobExecutionActor.scala
  223. +5 −4 supportedBackends/sfs/src/main/scala/cromwell/backend/sfs/GcsWorkflowFileSystemProvider.scala
  224. +2 −2 supportedBackends/sfs/src/main/scala/cromwell/backend/sfs/ProcessRunner.scala
  225. +38 −36 supportedBackends/sfs/src/main/scala/cromwell/backend/sfs/SharedFileSystem.scala
  226. +7 −4 ...rtedBackends/sfs/src/main/scala/cromwell/backend/sfs/SharedFileSystemAsyncJobExecutionActor.scala
  227. +2 −1 ...ckends/sfs/src/main/scala/cromwell/backend/sfs/SharedFileSystemBackendLifecycleActorFactory.scala
  228. +5 −1 supportedBackends/sfs/src/main/scala/cromwell/backend/sfs/SharedFileSystemCacheHitCopyingActor.scala
  229. +1 −1 supportedBackends/sfs/src/main/scala/cromwell/backend/sfs/SharedFileSystemInitializationActor.scala
  230. +3 −2 ...ortedBackends/sfs/src/main/scala/cromwell/backend/sfs/SharedFileSystemJobCachingActorHelper.scala
  231. +146 −0 ...ortedBackends/sfs/src/test/scala/cromwell/backend/impl/sfs/config/ConfigHashingStrategySpec.scala
  232. +2 −2 ...tedBackends/sfs/src/test/scala/cromwell/backend/sfs/SharedFileSystemInitializationActorSpec.scala
  233. +5 −4 ...s/src/test/scala/cromwell/backend/sfs/SharedFileSystemValidatedRuntimeAttributesBuilderSpec.scala
  234. +5 −3 supportedBackends/spark/src/main/scala/cromwell/backend/impl/spark/SparkBackendFactory.scala
  235. +3 −2 supportedBackends/spark/src/main/scala/cromwell/backend/impl/spark/SparkClusterProcess.scala
  236. +2 −2 supportedBackends/spark/src/main/scala/cromwell/backend/impl/spark/SparkInitializationActor.scala
  237. +7 −3 supportedBackends/spark/src/main/scala/cromwell/backend/impl/spark/SparkJobExecutionActor.scala
  238. +0 −1 supportedBackends/spark/src/main/scala/cromwell/backend/impl/spark/SparkProcess.scala
  239. +13 −11 supportedBackends/spark/src/main/scala/cromwell/backend/impl/spark/SparkRuntimeAttributes.scala
  240. +0 −2 supportedBackends/spark/src/test/scala/cromwell/backend/impl/spark/SparkClusterProcessSpec.scala
  241. +8 −2 supportedBackends/spark/src/test/scala/cromwell/backend/impl/spark/SparkJobExecutionActorSpec.scala
  242. +7 −5 supportedBackends/spark/src/test/scala/cromwell/backend/impl/spark/SparkRuntimeAttributesSpec.scala
View
@@ -7,7 +7,6 @@ reviewers:
members:
- cjllanwarne
- Horneth
- - scottfrazer
- mcovarr
- geoffjentry
- kshakir
View
@@ -1,23 +1,68 @@
# Cromwell Change Log
-## 0.20
+## 0.22
-* The default per-upload bytes size for GCS is now the minumum 256K
-instead of 64M. There is also an undocumented config key
-`google.upload-buffer-bytes` that allows adjusting this internal value.
+* Improved retries for Call Caching and general bug fixes.
+* Users will experience better scalability of status polling for Google JES.
+* Now there are configurable caching strategies for a SharedFileSystem backend (i.e. Local, SFS) in the backend's stanza:
+ See below for detailed descriptions of each configurable key.
-* Updated Docker Hub hash retriever to parse json with [custom media
-types](https://github.com/docker/distribution/blob/05b0ab0/docs/spec/manifest-v2-1.md).
+```
+backend {
+ ...
+ providers {
+ SFS_BackendName {
+ actor-factory = ...
+ config {
+ ...
+ filesystems {
+ local {
+ localization: [
+ ...
+ ]
+ caching {
+ duplication-strategy: [
+ "hard-link", "soft-link", "copy"
+ ]
+ # Possible values: file, path
+ # "file" will compute an md5 hash of the file content.
+ # "path" will compute an md5 hash of the file path. This strategy will only be effective if the duplication-strategy (above) is set to "soft-link",
+ # in order to allow for the original file path to be hashed.
+ hashing-strategy: "file"
+
+ # When true, will check if a sibling file with the same name and the .md5 extension exists, and if it does, use the content of this file as a hash.
+ # If false or the md5 does not exist, will proceed with the above-defined hashing strategy.
+ check-sibling-md5: false
+ }
+```
+* Multiple Input JSON files can now be submitted in server mode through the existing submission endpoint: /api/workflows/:version.
+ This endpoint accepts a POST request with a multipart/form-data encoded body. You can now include multiple keys for workflow inputs.
-* Added a `/batch` submit endpoint that accepts a single wdl with
-multiple input files.
+ Each key below can contain an optional JSON file of the workflow inputs. A skeleton file can be generated from wdltool using the "inputs" subcommand.
+ NOTE: In case of key conflicts between multiple JSON files, higher values of x in workflowInputs_x override lower values. For example, an input
+ specified in workflowInputs_3 will override an input with the same name that was given in workflowInputs or workflowInputs_2. Similarly, an input
+ specified in workflowInputs_5 will override an input with the same name in any other input file.
-* The `/query` endpoint now supports querying by `id`, and submitting
-parameters as a HTTP POST.
+ workflowInputs
+ workflowInputs_2
+ workflowInputs_3
+ workflowInputs_4
+ workflowInputs_5
-## 0.21
+* You can now limit the number of concurrent jobs for a backend by specifying the following option in the backend's config stanza:
+```
+backend {
+ ...
+ providers {
+ BackendName {
+ actor-factory = ...
+ config {
+ concurrent-job-limit = 5
+```
+## 0.21
+
* Warning: Significant database updates when you switch from version 0.19 to 0.21 of Cromwell.
There may be a long wait period for the migration to finish for large databases.
Please refer to MIGRATION.md for more details.
@@ -71,7 +116,7 @@ task {
command {
echo "I'm private !"
}
-
+
runtime {
docker: "ubuntu:latest"
noAddress: true
@@ -94,7 +139,7 @@ passed absolute paths for input `File`s.
* Override the default database configuration by setting the keys
`database.driver`, `database.db.driver`, `database.db.url`, etc.
* Override the default database configuration by setting the keys
-`database.driver`, `database.db.driver`, `database.db.url`, etc.
+`database.driver`, `database.db.driver`, `database.db.url`, etc.
For example:
```
@@ -111,3 +156,18 @@ database {
}
```
+## 0.20
+
+* The default per-upload bytes size for GCS is now the minimum 256K
+instead of 64M. There is also an undocumented config key
+`google.upload-buffer-bytes` that allows adjusting this internal value.
+
+* Updated Docker Hub hash retriever to parse json with [custom media
+types](https://github.com/docker/distribution/blob/05b0ab0/docs/spec/manifest-v2-1.md).
+
+* Added a `/batch` submit endpoint that accepts a single wdl with
+multiple input files.
+
+* The `/query` endpoint now supports querying by `id`, and submitting
+parameters as a HTTP POST.
+
View
@@ -101,8 +101,8 @@ There is a [Cromwell gitter channel](https://gitter.im/broadinstitute/cromwell)
The following is the toolchain used for development of Cromwell. Other versions may work, but these are recommended.
-* [Scala 2.11.7](http://www.scala-lang.org/news/2.11.7/)
-* [SBT 0.13.8](https://github.com/sbt/sbt/releases/tag/v0.13.8)
+* [Scala 2.11.8](http://www.scala-lang.org/news/2.11.8/)
+* [SBT 0.13.12](https://github.com/sbt/sbt/releases/tag/v0.13.12)
* [Java 8](http://www.oracle.com/technetwork/java/javase/overview/java8-2100321.html)
# Building
@@ -24,8 +24,9 @@ object BackendJobExecutionActor {
sealed trait BackendJobExecutionResponse extends BackendJobExecutionActorResponse { def jobKey: BackendJobDescriptorKey }
case class SucceededResponse(jobKey: BackendJobDescriptorKey, returnCode: Option[Int], jobOutputs: JobOutputs, jobDetritusFiles: Option[Map[String, String]], executionEvents: Seq[ExecutionEvent]) extends BackendJobExecutionResponse
case class AbortedResponse(jobKey: BackendJobDescriptorKey) extends BackendJobExecutionResponse
- case class FailedNonRetryableResponse(jobKey: BackendJobDescriptorKey, throwable: Throwable, returnCode: Option[Int]) extends BackendJobExecutionResponse
- case class FailedRetryableResponse(jobKey: BackendJobDescriptorKey, throwable: Throwable, returnCode: Option[Int]) extends BackendJobExecutionResponse
+ sealed trait BackendJobFailedResponse extends BackendJobExecutionResponse { def throwable: Throwable; def returnCode: Option[Int] }
+ case class FailedNonRetryableResponse(jobKey: BackendJobDescriptorKey, throwable: Throwable, returnCode: Option[Int]) extends BackendJobFailedResponse
+ case class FailedRetryableResponse(jobKey: BackendJobDescriptorKey, throwable: Throwable, returnCode: Option[Int]) extends BackendJobFailedResponse
}
/**
@@ -7,6 +7,7 @@ import com.typesafe.config.Config
import cromwell.backend.callcaching.FileHashingActor
import cromwell.backend.callcaching.FileHashingActor.FileHashingFunction
import cromwell.backend.io.WorkflowPaths
+import cromwell.core.JobExecutionToken.JobExecutionTokenType
import cromwell.core.{ExecutionStore, OutputStore}
import wdl4s.Call
import wdl4s.expression.WdlStandardLibraryFunctions
@@ -19,7 +20,8 @@ trait BackendLifecycleActorFactory {
def jobExecutionActorProps(jobDescriptor: BackendJobDescriptor,
initializationData: Option[BackendInitializationData],
- serviceRegistryActor: ActorRef): Props
+ serviceRegistryActor: ActorRef,
+ backendSingletonActor: Option[ActorRef]): Props
/**
* Providing this method to generate Props for a cache hit copying actor is optional.
@@ -32,6 +34,8 @@ trait BackendLifecycleActorFactory {
*/
def cacheHitCopyingActorProps: Option[(BackendJobDescriptor, Option[BackendInitializationData], ActorRef) => Props] = None
+ def backendSingletonActorProps: Option[Props] = None
+
def workflowFinalizationActorProps(workflowDescriptor: BackendWorkflowDescriptor,
calls: Seq[Call],
executionStore: ExecutionStore,
@@ -52,4 +56,6 @@ trait BackendLifecycleActorFactory {
lazy val fileHashingActorCount: Int = 50
def fileHashingActorProps: Props = FileHashingActor.props(fileHashingFunction)
+
+ def jobExecutionTokenType: JobExecutionTokenType = JobExecutionTokenType("Default", None)
}
@@ -142,7 +142,7 @@ trait BackendWorkflowInitializationActor extends BackendWorkflowLifecycleActor w
def badRuntimeAttrsForTask(task: Task) = {
runtimeAttributeValidators map { case (attributeName, validator) =>
val value = task.runtimeAttributes.attrs.get(attributeName) orElse defaultRuntimeAttribute(attributeName)
- attributeName -> (value, validator(value))
+ attributeName -> ((value, validator(value)))
} collect {
case (name, (value, false)) => s"Task ${task.name} has an invalid runtime attribute $name = ${value map { _.valueString} getOrElse "!! NOT FOUND !!"}"
}
@@ -1,29 +1,35 @@
package cromwell.backend
-import wdl4s.parser.MemoryUnit
+
+import cats.data.Validated._
+import cats.syntax.cartesian._
+import cats.syntax.validated._
+import cromwell.core.ErrorOr._
+import mouse.string._
import scala.language.postfixOps
import scala.util.{Failure, Success, Try}
-import scalaz.Scalaz._
+import wdl4s.parser.MemoryUnit
+
object MemorySize {
val memoryPattern = """(\d+(?:\.\d+)?)\s*(\w+)""".r
def parse(unparsed: String): Try[MemorySize] = {
unparsed match {
case memoryPattern(amountString, unitString) =>
- val amount = amountString.parseDouble leftMap {
+ val amount: ErrorOr[Double] = amountString.parseDouble leftMap {
_.getMessage
- } toValidationNel
- val unit = MemoryUnit.values find {
+ } toValidatedNel
+ val unit: ErrorOr[MemoryUnit] = MemoryUnit.values find {
_.suffixes.contains(unitString)
} match {
- case Some(s) => s.successNel[String]
- case None => s"$unitString is an invalid memory unit".failureNel
+ case Some(s) => s.validNel
+ case None => s"$unitString is an invalid memory unit".invalidNel
}
- (amount |@| unit) { (a, u) => new MemorySize(a, u) } match {
- case scalaz.Success(memorySize) => Success(memorySize)
- case scalaz.Failure(nel) => Failure(new UnsupportedOperationException(nel.list.toList.mkString("\n")))
+ (amount |@| unit) map { (a, u) => new MemorySize(a, u) } match {
+ case Valid(memorySize) => Success(memorySize)
+ case Invalid(nel) => Failure(new UnsupportedOperationException(nel.toList.mkString("\n")))
}
case _ => Failure(new UnsupportedOperationException(s"$unparsed should be of the form 'X Unit' where X is a number, e.g. 8 GB"))
}
@@ -39,7 +39,6 @@ object RuntimeAttributeDefinition {
def addDefaultsToAttributes(runtimeAttributeDefinitions: Set[RuntimeAttributeDefinition], workflowOptions: WorkflowOptions)
(specifiedAttributes: Map[LocallyQualifiedName, WdlValue]): Map[LocallyQualifiedName, WdlValue] = {
import WdlValueJsonFormatter._
- import spray.json._ // IGNORE INTELLIJ - this *is* required (unless it isn't any more, who will ever know...!)
def isUnspecifiedAttribute(name: String) = !specifiedAttributes.contains(name)
@@ -70,7 +70,10 @@ trait AsyncBackendJobExecutionActor { this: Actor with ActorLogging =>
case IssuePollRequest(handle) => robustPoll(handle)
case PollResponseReceived(handle) if handle.isDone => self ! Finish(handle)
case PollResponseReceived(handle) =>
+ // This should stash the Cancellable someplace so it can be cancelled once polling is complete.
+ // -Ywarn-value-discard
context.system.scheduler.scheduleOnce(pollBackOff.backoffMillis.millis, self, IssuePollRequest(handle))
+ ()
case Finish(SuccessfulExecutionHandle(outputs, returnCode, jobDetritusFiles, executionEvents, resultsClonedFrom)) =>
completionPromise.success(SucceededResponse(jobDescriptor.key, Some(returnCode), outputs, Option(jobDetritusFiles), executionEvents))
context.stop(self)
@@ -0,0 +1,53 @@
+package cromwell.backend
+
+import com.typesafe.config.Config
+import cromwell.core.WorkflowOptions.WorkflowOption
+import cromwell.core.{JobKey, WorkflowId, WorkflowOptions}
+import wdl4s.values.WdlValue
+import wdl4s.{Call, NamespaceWithWorkflow, _}
+
+import scala.util.Try
+
+/**
+ * For uniquely identifying a job which has been or will be sent to the backend.
+ */
+case class BackendJobDescriptorKey(call: Call, index: Option[Int], attempt: Int) extends JobKey {
+ def scope = call
+ private val indexString = index map { _.toString } getOrElse "NA"
+ val tag = s"${call.fullyQualifiedName}:$indexString:$attempt"
+ val isShard = index.isDefined
+ def mkTag(workflowId: WorkflowId) = s"$workflowId:$this"
+}
+
+/**
+ * For passing to a BackendWorkflowActor for job execution or recovery
+ */
+case class BackendJobDescriptor(workflowDescriptor: BackendWorkflowDescriptor,
+ key: BackendJobDescriptorKey,
+ runtimeAttributes: Map[LocallyQualifiedName, WdlValue],
+ inputs: Map[LocallyQualifiedName, WdlValue]) {
+ val call = key.call
+ override val toString = s"${key.mkTag(workflowDescriptor.id)}"
+}
+
+/**
+ * For passing to a BackendActor construction time
+ */
+case class BackendWorkflowDescriptor(id: WorkflowId,
+ workflowNamespace: NamespaceWithWorkflow,
+ inputs: Map[FullyQualifiedName, WdlValue],
+ workflowOptions: WorkflowOptions) {
+ override def toString: String = s"[BackendWorkflowDescriptor id=${id.shortString} workflowName=${workflowNamespace.workflow.unqualifiedName}]"
+ def getWorkflowOption(key: WorkflowOption) = workflowOptions.get(key).toOption
+}
+
+/**
+ * For passing to a BackendActor construction time
+ */
+case class BackendConfigurationDescriptor(backendConfig: Config, globalConfig: Config)
+
+final case class AttemptedLookupResult(name: String, value: Try[WdlValue]) {
+ def toPair = name -> value
+}
+
+case class PreemptedException(msg: String) extends Exception(msg)
@@ -48,7 +48,7 @@ trait CacheHitDuplicating {
private def lookupSourceCallRootPath(sourceJobDetritusFiles: Map[String, String]): Path = {
sourceJobDetritusFiles.get(JobPaths.CallRootPathKey).map(getPath).getOrElse(throw new RuntimeException(
- s"The call detritus files for source cache hit aren't found for call ${jobDescriptor.call.fullyQualifiedName}")
+ s"${JobPaths.CallRootPathKey} wasn't found for call ${jobDescriptor.call.fullyQualifiedName}")
)
}
@@ -5,14 +5,14 @@ import java.nio.file.{FileSystem, FileSystems, Path, Paths}
import com.typesafe.config.Config
import cromwell.backend.{BackendJobDescriptorKey, BackendWorkflowDescriptor}
import cromwell.core.PathFactory
-import lenthall.config.ScalaConfig._
+import net.ceedubs.ficus.Ficus._
object WorkflowPaths{
val DockerRoot = Paths.get("/root")
}
class WorkflowPaths(workflowDescriptor: BackendWorkflowDescriptor, config: Config, val fileSystems: List[FileSystem] = List(FileSystems.getDefault)) extends PathFactory {
- val executionRoot = Paths.get(config.getStringOr("root", "cromwell-executions")).toAbsolutePath
+ val executionRoot = Paths.get(config.as[Option[String]]("root").getOrElse("cromwell-executions")).toAbsolutePath
private def workflowPathBuilder(root: Path) = {
root.resolve(workflowDescriptor.workflowNamespace.workflow.unqualifiedName)
Oops, something went wrong.

0 comments on commit 0099816

Please sign in to comment.