diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index a2c74e952e82..82f53a738efc 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -416,7 +416,10 @@ public Job create(JobInfo jobInfo, JobOption... options) { new Supplier() { @Override public JobId get() { - return JobId.of(); + // Explicitly set the location for a new job when provided in options. + // Otherwise, the job may be created with an incorrect location + // (e.g. in transaction mode outside the US). + return JobId.of().setLocation(getOptions().getLocation()); } }; return create(jobInfo, idProvider, options); diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java index b01515a5639d..c6961ea63d15 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java @@ -795,6 +795,8 @@ public void testCreateJobTelemetry() throws Exception { "{\"kind\":\"bigquery#job\",\"id\":\"" + PROJECT_ID + ":" + + LOCATION + + ":" + JOB_ID + "\",\"status\":{\"state\":\"DONE\"}}"); @@ -804,7 +806,7 @@ public void testCreateJobTelemetry() throws Exception { verifyRequest("POST", "/projects/" + PROJECT_ID + "/jobs"); Map attributes = new HashMap<>(); - attributes.put("bq.rpc.response.job.id", PROJECT_ID + ":" + JOB_ID); + attributes.put("bq.rpc.response.job.id", PROJECT_ID + ":" + LOCATION + ":" + JOB_ID); attributes.put("bq.rpc.response.job.status.state", "DONE"); verifySpan( "com.google.cloud.bigquery.BigQueryRpc.createJob",