From 2057c6f3c89fce95066048bfe04b628ea261b586 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Mon, 4 May 2026 23:39:17 +0000 Subject: [PATCH 1/6] fix(bq): do not call `job.getQueryResults` from `executeWithTimeout` --- .../src/main/java/com/google/cloud/bigquery/BigQueryImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 320daa03a271..a2c74e952e82 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 @@ -2104,7 +2104,7 @@ && getOptions().getOpenTelemetryTracer() != null) { return queryRpc(projectId, content, options); } - return create(JobInfo.of(jobId, configuration), options).getQueryResults(); + return create(JobInfo.of(jobId, configuration), options); } finally { if (querySpan != null) { querySpan.end(); From a3d0607f48c38b2bd32a1f7fed0760c166e1c2fd Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Mon, 4 May 2026 23:45:00 +0000 Subject: [PATCH 2/6] fix unittest --- .../java/com/google/cloud/bigquery/it/ITBigQueryTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java index 62aa3c403aa3..0d8530cd160a 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java @@ -7501,7 +7501,9 @@ void testQueryWithTimeout() throws InterruptedException { // Stateful query returns Job // Test scenario 3 to ensure job is created if Query is long running. // Explicitly disable cache to ensure it is long-running query; - config = QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build(); + config = QueryJobConfiguration.newBuilder(largeQuery) + .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) + .setUseQueryCache(false).build(); long millis = System.currentTimeMillis(); result = bigQuery.queryWithTimeout(config, null, 1000L); millis = System.currentTimeMillis() - millis; From 35d0e17814824ea4786dc27133e5cfe4b737ca7f Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Mon, 4 May 2026 23:53:47 +0000 Subject: [PATCH 3/6] lint --- .../java/com/google/cloud/bigquery/it/ITBigQueryTest.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java index 0d8530cd160a..27430edc567c 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java @@ -7501,9 +7501,11 @@ void testQueryWithTimeout() throws InterruptedException { // Stateful query returns Job // Test scenario 3 to ensure job is created if Query is long running. // Explicitly disable cache to ensure it is long-running query; - config = QueryJobConfiguration.newBuilder(largeQuery) - .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) - .setUseQueryCache(false).build(); + config = + QueryJobConfiguration.newBuilder(largeQuery) + .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) + .setUseQueryCache(false) + .build(); long millis = System.currentTimeMillis(); result = bigQuery.queryWithTimeout(config, null, 1000L); millis = System.currentTimeMillis() - millis; From 7fc925389bd5d896f7787f170e787e37924c9dde Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Mon, 4 May 2026 23:53:47 +0000 Subject: [PATCH 4/6] lint --- .../cloud/bigquery/it/ITBigQueryTest.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java index 27430edc567c..8ea49ff37dcc 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java @@ -7487,19 +7487,30 @@ void testQueryWithTimeout() throws InterruptedException { } // Stateful query returns Job - // Test scenario 2 to ensure job is created if JobCreationMode is set, but for a small query - // it still returns results. + // Test scenario 2 to ensure job is created if Query is long running. + // Explicitly disable cache to ensure it is long-running query; + config = + QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build(); + long millis = System.currentTimeMillis(); + result = bigQuery.queryWithTimeout(config, null, 1000L); + millis = System.currentTimeMillis() - millis; + assertTrue(result instanceof Job); + // Cancel the job as we don't need results. + ((Job) result).cancel(); + // Allow 2 seconds of timeout value to account for random delays + assertTrue(millis < 1_000_000 * 2); + + // Stateful query returns Job + // Test scenario 3 to ensure job is created if JobCreationMode is set. config = QueryJobConfiguration.newBuilder(query) .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) .build(); result = bigQuery.queryWithTimeout(config, null, null); - assertTrue(result instanceof TableResult); - assertNotNull(((TableResult) result).getJobId()); - assertNull(((TableResult) result).getQueryId()); + assertTrue(result instanceof Job); // Stateful query returns Job - // Test scenario 3 to ensure job is created if Query is long running. + // Test scenario 4 to ensure job is created if Query is long running. // Explicitly disable cache to ensure it is long-running query; config = QueryJobConfiguration.newBuilder(largeQuery) From 519fc4ea038441e6fc8432aefe4f6e0b2e408a34 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 5 May 2026 17:20:17 +0000 Subject: [PATCH 5/6] Fix test --- .../test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java index 8ea49ff37dcc..19cc8bb7a8ec 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java @@ -7517,7 +7517,7 @@ void testQueryWithTimeout() throws InterruptedException { .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) .setUseQueryCache(false) .build(); - long millis = System.currentTimeMillis(); + millis = System.currentTimeMillis(); result = bigQuery.queryWithTimeout(config, null, 1000L); millis = System.currentTimeMillis() - millis; assertTrue(result instanceof Job); From c2d269bbbbfd34c82bf1a7656ecc7de7a2a6dae7 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 5 May 2026 17:26:49 +0000 Subject: [PATCH 6/6] lint --- .../test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java index 19cc8bb7a8ec..3cc3c47acc54 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java @@ -7489,8 +7489,7 @@ void testQueryWithTimeout() throws InterruptedException { // Stateful query returns Job // Test scenario 2 to ensure job is created if Query is long running. // Explicitly disable cache to ensure it is long-running query; - config = - QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build(); + config = QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build(); long millis = System.currentTimeMillis(); result = bigQuery.queryWithTimeout(config, null, 1000L); millis = System.currentTimeMillis() - millis;