diff --git a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/TemplateTestBase.java b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/TemplateTestBase.java index 78ca1299b4..7af0aa926f 100644 --- a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/TemplateTestBase.java +++ b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/TemplateTestBase.java @@ -337,8 +337,7 @@ private String getSpecPath( String identifier = flex ? template.flexContainerName() : templateMetadata.name(); - stagedTemplates.get( - identifier, + java.util.concurrent.Callable stageCallable = () -> { LOG.info("Preparing test for {} ({})", templateMetadata.name(), dataflowTemplateClass); @@ -376,7 +375,15 @@ private String getSpecPath( } catch (Exception e) { throw new IllegalArgumentException("Error staging template", e); } - }); + }; + + if (!flex) { + synchronized (stagedTemplates) { + stagedTemplates.get(identifier, stageCallable); + } + } else { + stagedTemplates.get(identifier, stageCallable); + } return stagePath; } }