From 65fccd99b576122cc0e46b712f3a10fbac47d4bd Mon Sep 17 00:00:00 2001 From: nnegrey Date: Tue, 21 Apr 2020 16:16:59 -0600 Subject: [PATCH 01/13] automl: explictly update timeoutes due to library changes in the defaults --- automl/cloud-client/pom.xml | 2 +- .../com/example/automl/ImportDataset.java | 26 ++++++++++++++++--- .../com/example/automl/ImportDatasetTest.java | 4 ++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/automl/cloud-client/pom.xml b/automl/cloud-client/pom.xml index e7b98adb2d1..fa8882235d7 100644 --- a/automl/cloud-client/pom.xml +++ b/automl/cloud-client/pom.xml @@ -37,7 +37,7 @@ com.google.cloud google-cloud-automl - 1.1.1 + 1.1.2 diff --git a/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java index 01996669f6a..0fda7535be9 100644 --- a/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java @@ -17,19 +17,23 @@ package com.example.automl; // [START automl_import_dataset] +import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.automl.v1.AutoMlClient; import com.google.cloud.automl.v1.DatasetName; import com.google.cloud.automl.v1.GcsSource; import com.google.cloud.automl.v1.InputConfig; +import com.google.cloud.automl.v1.OperationMetadata; import com.google.protobuf.Empty; import java.io.IOException; import java.util.Arrays; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; class ImportDataset { public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { + throws IOException, ExecutionException, InterruptedException, TimeoutException { // TODO(developer): Replace these variables before running the sample. String projectId = "YOUR_PROJECT_ID"; String datasetId = "YOUR_DATASET_ID"; @@ -39,7 +43,7 @@ public static void main(String[] args) // Import a dataset static void importDataset(String projectId, String datasetId, String path) - throws IOException, ExecutionException, InterruptedException { + throws IOException, ExecutionException, InterruptedException, TimeoutException { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. @@ -55,8 +59,22 @@ static void importDataset(String projectId, String datasetId, String path) InputConfig inputConfig = InputConfig.newBuilder().setGcsSource(gcsSource).build(); System.out.println("Processing import..."); - Empty response = client.importDataAsync(datasetFullId, inputConfig).get(); - System.out.format("Dataset imported. %s\n", response); + // Start the import job + OperationFuture operation = + client.importDataAsync(datasetFullId, inputConfig); + + System.out.format("Operation name: %s%n", operation.getName()); + + // If you want to wait for the operation to finish, adjust the timeout appropriately. The + // operation will still run if you choose not to wait for it to complete. You can check the + // status of your operation using the operation's name. + Empty response = operation.get(30, TimeUnit.MINUTES); + System.out.format("Dataset imported. %s%n", response); + } catch (TimeoutException e) { + System.out.println("The operation's polling period was not long enough."); + System.out.println("You can use the Operation's name to get the current status."); + System.out.println("The import job will still complete as expected."); + throw e; } } } diff --git a/automl/cloud-client/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/cloud-client/src/test/java/com/example/automl/ImportDatasetTest.java index 164c6445c94..9933a5d7d1a 100644 --- a/automl/cloud-client/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/cloud-client/src/test/java/com/example/automl/ImportDatasetTest.java @@ -24,6 +24,7 @@ import java.io.PrintStream; import java.util.UUID; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; @@ -83,7 +84,8 @@ public void tearDown() throws InterruptedException, ExecutionException, IOExcept } @Test - public void testImportDataset() throws IOException, ExecutionException, InterruptedException { + public void testImportDataset() + throws IOException, ExecutionException, InterruptedException, TimeoutException { ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); String got = bout.toString(); assertThat(got).contains("Dataset imported."); From 7e64cb0b4da0c07fd73c36b0666517d79b7ab623 Mon Sep 17 00:00:00 2001 From: Noah Negrey Date: Wed, 22 Apr 2020 08:46:56 -0600 Subject: [PATCH 02/13] Update ImportDataset.java --- .../src/main/java/com/example/automl/ImportDataset.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java index 0fda7535be9..a9d90669e3d 100644 --- a/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java @@ -73,7 +73,7 @@ static void importDataset(String projectId, String datasetId, String path) } catch (TimeoutException e) { System.out.println("The operation's polling period was not long enough."); System.out.println("You can use the Operation's name to get the current status."); - System.out.println("The import job will still complete as expected."); + System.out.println("The import job is still running and will complete as expected."); throw e; } } From 962829dfc52cc506c8a0e348f14c026cc932b44d Mon Sep 17 00:00:00 2001 From: Noah Negrey Date: Wed, 22 Apr 2020 13:20:28 -0600 Subject: [PATCH 03/13] try bumping timeout AutoML provides no guarantee on how long this could take and normally would send an email followup. Though normally, I see this finish in under 10 mins. Trying to pin down if TASK CANCELLED is actually related to a timeout or not. --- .../src/main/java/com/example/automl/ImportDataset.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java index a9d90669e3d..3ead88326b3 100644 --- a/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java +++ b/automl/cloud-client/src/main/java/com/example/automl/ImportDataset.java @@ -68,7 +68,7 @@ static void importDataset(String projectId, String datasetId, String path) // If you want to wait for the operation to finish, adjust the timeout appropriately. The // operation will still run if you choose not to wait for it to complete. You can check the // status of your operation using the operation's name. - Empty response = operation.get(30, TimeUnit.MINUTES); + Empty response = operation.get(45, TimeUnit.MINUTES); System.out.format("Dataset imported. %s%n", response); } catch (TimeoutException e) { System.out.println("The operation's polling period was not long enough."); From 0b96bea21cdb21244b5902f746951287c022cb80 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 09:25:08 -0600 Subject: [PATCH 04/13] update timeouts for all import methods --- automl/beta/pom.xml | 3 +-- .../com/example/automl/ImportDataset.java | 8 +++++--- .../example/automl/TablesImportDataset.java | 2 +- .../com/example/automl/ImportDatasetTest.java | 4 +++- .../automl/TablesImportDatasetTest.java | 2 +- automl/cloud-client/pom.xml | 20 ++++++++++++++++--- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/automl/beta/pom.xml b/automl/beta/pom.xml index de781956c72..17a1fec5cb3 100644 --- a/automl/beta/pom.xml +++ b/automl/beta/pom.xml @@ -40,7 +40,7 @@ com.google.cloud libraries-bom - 4.4.1 + 5.2.0 pom import @@ -60,7 +60,6 @@ com.google.cloud google-cloud-storage - 1.107.0 net.sourceforge.argparse4j diff --git a/automl/beta/src/main/java/com/example/automl/ImportDataset.java b/automl/beta/src/main/java/com/example/automl/ImportDataset.java index d6cdec7e37a..470b260f51b 100644 --- a/automl/beta/src/main/java/com/example/automl/ImportDataset.java +++ b/automl/beta/src/main/java/com/example/automl/ImportDataset.java @@ -25,11 +25,13 @@ import java.io.IOException; import java.util.Arrays; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; class ImportDataset { public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { + throws IOException, ExecutionException, InterruptedException, TimeoutException { // TODO(developer): Replace these variables before running the sample. String projectId = "YOUR_PROJECT_ID"; String datasetId = "YOUR_DATASET_ID"; @@ -39,7 +41,7 @@ public static void main(String[] args) // Import a dataset static void importDataset(String projectId, String datasetId, String path) - throws IOException, ExecutionException, InterruptedException { + throws IOException, ExecutionException, InterruptedException, TimeoutException { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. @@ -55,7 +57,7 @@ static void importDataset(String projectId, String datasetId, String path) InputConfig inputConfig = InputConfig.newBuilder().setGcsSource(gcsSource).build(); System.out.println("Processing import..."); - Empty response = client.importDataAsync(datasetFullId, inputConfig).get(); + Empty response = client.importDataAsync(datasetFullId, inputConfig).get(45, TimeUnit.MINUTES); System.out.format("Dataset imported. %s\n", response); } } diff --git a/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java b/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java index 7ebc2b091da..26db2cad184 100644 --- a/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java +++ b/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java @@ -35,7 +35,7 @@ public static void main(String[] args) String projectId = "YOUR_PROJECT_ID"; String datasetId = "YOUR_DATASET_ID"; String path = "gs://BUCKET_ID/path/to//data.csv or bq://project_id.dataset_id.table_id"; - importDataset(projectId, datasetId, path); +// importDataset(projectId, datasetId, path); } // Import a dataset via BigQuery or Google Cloud Storage diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index db92201be1d..a275f4482ec 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -28,6 +28,7 @@ import java.io.PrintStream; import java.util.UUID; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; @@ -92,7 +93,8 @@ public void tearDown() throws InterruptedException, ExecutionException, IOExcept } @Test - public void testImportDataset() throws IOException, ExecutionException, InterruptedException { + public void testImportDataset() + throws IOException, ExecutionException, InterruptedException, TimeoutException { ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); String got = bout.toString(); assertThat(got).contains("Dataset imported."); diff --git a/automl/beta/src/test/java/com/example/automl/TablesImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/TablesImportDatasetTest.java index 8dea7e76e39..71cebe3371e 100644 --- a/automl/beta/src/test/java/com/example/automl/TablesImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/TablesImportDatasetTest.java @@ -65,7 +65,7 @@ public void tearDown() { @Test public void testTablesImportDataset() { try { - ImportDataset.importDataset( + TablesImportDataset.importDataset( PROJECT_ID, "TEN0000000000000000000", "gs://cloud-ml-tables-data/bank-marketing.csv"); String got = bout.toString(); assertThat(got).contains("The Dataset doesn't exist or is inaccessible for use with AutoMl."); diff --git a/automl/cloud-client/pom.xml b/automl/cloud-client/pom.xml index fa8882235d7..ebbede2fae1 100644 --- a/automl/cloud-client/pom.xml +++ b/automl/cloud-client/pom.xml @@ -32,18 +32,30 @@ UTF-8 + + + + + + com.google.cloud + libraries-bom + 5.2.0 + pom + import + + + + - com.google.cloud google-cloud-automl - 1.1.2 com.google.cloud google-cloud-storage - 1.107.0 net.sourceforge.argparse4j @@ -64,5 +76,7 @@ 1.0.1 test + + \ No newline at end of file From bc7b94825557ee226ce3ada6727ffc33e3da89e5 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 10:12:23 -0600 Subject: [PATCH 05/13] undo changes to TablesImport, add catch for Cancellation Exception --- .../com/example/automl/TablesImportDataset.java | 2 +- .../com/example/automl/ImportDatasetTest.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java b/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java index f504d08a75f..91863c3c5e8 100644 --- a/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java +++ b/automl/beta/src/main/java/com/example/automl/TablesImportDataset.java @@ -35,7 +35,7 @@ public static void main(String[] args) String projectId = "YOUR_PROJECT_ID"; String datasetId = "YOUR_DATASET_ID"; String path = "gs://BUCKET_ID/path/to//data.csv or bq://project_id.dataset_id.table_id"; -// importDataset(projectId, datasetId, path); + importDataset(projectId, datasetId, path); } // Import a dataset via BigQuery or Google Cloud Storage diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index a275f4482ec..b08e7fcd61b 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -23,6 +23,7 @@ import com.google.cloud.automl.v1beta1.Dataset; import com.google.cloud.automl.v1beta1.LocationName; import com.google.cloud.automl.v1beta1.TextExtractionDatasetMetadata; +import com.sun.applet2.preloader.CancelException; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; @@ -95,8 +96,16 @@ public void tearDown() throws InterruptedException, ExecutionException, IOExcept @Test public void testImportDataset() throws IOException, ExecutionException, InterruptedException, TimeoutException { - ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); - String got = bout.toString(); - assertThat(got).contains("Dataset imported."); + try { + ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); + String got = bout.toString(); + assertThat(got).contains("Dataset imported."); + } catch(CancelException e) { + System.out.println(e); + System.out.println(e.getMessage()); + System.out.println(e.getCause().getMessage()); + System.out.println(e.getCause().toString()); + throw e; + } } } From fdcfc5cd8ed7714083f0c5da9aa22cf92bc56718 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 10:13:45 -0600 Subject: [PATCH 06/13] update to correct CancelledException --- .../src/test/java/com/example/automl/ImportDatasetTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index b08e7fcd61b..2254a16a439 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import static junit.framework.TestCase.assertNotNull; +import com.google.api.gax.rpc.CancelledException; import com.google.cloud.automl.v1beta1.AutoMlClient; import com.google.cloud.automl.v1beta1.Dataset; import com.google.cloud.automl.v1beta1.LocationName; @@ -100,7 +101,7 @@ public void testImportDataset() ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); String got = bout.toString(); assertThat(got).contains("Dataset imported."); - } catch(CancelException e) { + } catch(CancelledException e) { System.out.println(e); System.out.println(e.getMessage()); System.out.println(e.getCause().getMessage()); From a593a349c5531d7c803f84a40720220baadad4eb Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 10:16:22 -0600 Subject: [PATCH 07/13] wrong cancellation again --- .../src/test/java/com/example/automl/ImportDatasetTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index 2254a16a439..9d5b2647a0d 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -29,6 +29,7 @@ import java.io.IOException; import java.io.PrintStream; import java.util.UUID; +import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; import org.junit.After; @@ -101,7 +102,7 @@ public void testImportDataset() ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); String got = bout.toString(); assertThat(got).contains("Dataset imported."); - } catch(CancelledException e) { + } catch(CancellationException e) { System.out.println(e); System.out.println(e.getMessage()); System.out.println(e.getCause().getMessage()); From 858a7b610b9acc19477e23a299a77f88b87b6d2c Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 10:49:18 -0600 Subject: [PATCH 08/13] run tests --- .../src/test/java/com/example/automl/ImportDatasetTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index 9d5b2647a0d..7054da1c41b 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -19,12 +19,10 @@ import static com.google.common.truth.Truth.assertThat; import static junit.framework.TestCase.assertNotNull; -import com.google.api.gax.rpc.CancelledException; import com.google.cloud.automl.v1beta1.AutoMlClient; import com.google.cloud.automl.v1beta1.Dataset; import com.google.cloud.automl.v1beta1.LocationName; import com.google.cloud.automl.v1beta1.TextExtractionDatasetMetadata; -import com.sun.applet2.preloader.CancelException; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; From 903409fe92aaafc904557dc1de05e806a2aeb0bb Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 12:25:42 -0600 Subject: [PATCH 09/13] log to error --- .../test/java/com/example/automl/ImportDatasetTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index 7054da1c41b..2ba968fe6c2 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -101,10 +101,10 @@ public void testImportDataset() String got = bout.toString(); assertThat(got).contains("Dataset imported."); } catch(CancellationException e) { - System.out.println(e); - System.out.println(e.getMessage()); - System.out.println(e.getCause().getMessage()); - System.out.println(e.getCause().toString()); + System.err.println(e); + System.err.println(e.getMessage()); + System.err.println(e.getCause().getMessage()); + System.err.println(e.getCause().toString()); throw e; } } From 29e9e6c477ac52420add556245df94df55c80ad0 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 13:42:06 -0600 Subject: [PATCH 10/13] test --- .../src/test/java/com/example/automl/ImportDatasetTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index 2ba968fe6c2..0a45e62cdd8 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -95,17 +95,17 @@ public void tearDown() throws InterruptedException, ExecutionException, IOExcept @Test public void testImportDataset() - throws IOException, ExecutionException, InterruptedException, TimeoutException { + throws Exception { try { ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); String got = bout.toString(); assertThat(got).contains("Dataset imported."); - } catch(CancellationException e) { + } catch (CancellationException e) { System.err.println(e); System.err.println(e.getMessage()); System.err.println(e.getCause().getMessage()); System.err.println(e.getCause().toString()); - throw e; + throw new Exception(e); } } } From dafc662f0ca89985acd645f8615c395351e9fad4 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 14:07:39 -0600 Subject: [PATCH 11/13] reset changes that printed error --- .../com/example/automl/ImportDatasetTest.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java index 0a45e62cdd8..577f0c140d1 100644 --- a/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java +++ b/automl/beta/src/test/java/com/example/automl/ImportDatasetTest.java @@ -27,7 +27,6 @@ import java.io.IOException; import java.io.PrintStream; import java.util.UUID; -import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; import org.junit.After; @@ -95,17 +94,9 @@ public void tearDown() throws InterruptedException, ExecutionException, IOExcept @Test public void testImportDataset() - throws Exception { - try { - ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); - String got = bout.toString(); - assertThat(got).contains("Dataset imported."); - } catch (CancellationException e) { - System.err.println(e); - System.err.println(e.getMessage()); - System.err.println(e.getCause().getMessage()); - System.err.println(e.getCause().toString()); - throw new Exception(e); - } + throws InterruptedException, ExecutionException, TimeoutException, IOException { + ImportDataset.importDataset(PROJECT_ID, datasetId, BUCKET + "/entity-extraction/dataset.csv"); + String got = bout.toString(); + assertThat(got).contains("Dataset imported."); } } From 7c6cdbd393a672cda35f9ab4a4ec89a22a02daf8 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 15:14:13 -0600 Subject: [PATCH 12/13] set retry settings --- .../main/java/com/example/automl/ImportDataset.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/automl/beta/src/main/java/com/example/automl/ImportDataset.java b/automl/beta/src/main/java/com/example/automl/ImportDataset.java index 470b260f51b..2d0305257e5 100644 --- a/automl/beta/src/main/java/com/example/automl/ImportDataset.java +++ b/automl/beta/src/main/java/com/example/automl/ImportDataset.java @@ -17,7 +17,9 @@ package com.example.automl; // [START automl_import_dataset_beta] +import com.google.api.gax.retrying.RetrySettings; import com.google.cloud.automl.v1beta1.AutoMlClient; +import com.google.cloud.automl.v1beta1.AutoMlSettings; import com.google.cloud.automl.v1beta1.DatasetName; import com.google.cloud.automl.v1beta1.GcsSource; import com.google.cloud.automl.v1beta1.InputConfig; @@ -27,6 +29,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import org.threeten.bp.Duration; class ImportDataset { @@ -42,10 +45,16 @@ public static void main(String[] args) // Import a dataset static void importDataset(String projectId, String datasetId, String path) throws IOException, ExecutionException, InterruptedException, TimeoutException { + Duration totalTimeout = Duration.ofMinutes(45); + RetrySettings retrySettings = RetrySettings.newBuilder().setTotalTimeout(totalTimeout).build(); + AutoMlSettings.Builder builder = AutoMlSettings.newBuilder(); + builder.importDataSettings().setRetrySettings(retrySettings).build(); + AutoMlSettings settings = builder.build(); + // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. - try (AutoMlClient client = AutoMlClient.create()) { + try (AutoMlClient client = AutoMlClient.create(settings)) { // Get the complete path of the dataset. DatasetName datasetFullId = DatasetName.of(projectId, "us-central1", datasetId); From 6a5b968753de3dee6366dbc3e9b6e0e2d51ce374 Mon Sep 17 00:00:00 2001 From: nnegrey Date: Fri, 24 Apr 2020 16:06:46 -0600 Subject: [PATCH 13/13] add timeout check to beta code --- .../com/example/automl/ImportDataset.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/automl/beta/src/main/java/com/example/automl/ImportDataset.java b/automl/beta/src/main/java/com/example/automl/ImportDataset.java index 2d0305257e5..651fd43eaf1 100644 --- a/automl/beta/src/main/java/com/example/automl/ImportDataset.java +++ b/automl/beta/src/main/java/com/example/automl/ImportDataset.java @@ -17,12 +17,14 @@ package com.example.automl; // [START automl_import_dataset_beta] +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.retrying.RetrySettings; import com.google.cloud.automl.v1beta1.AutoMlClient; import com.google.cloud.automl.v1beta1.AutoMlSettings; import com.google.cloud.automl.v1beta1.DatasetName; import com.google.cloud.automl.v1beta1.GcsSource; import com.google.cloud.automl.v1beta1.InputConfig; +import com.google.cloud.automl.v1beta1.OperationMetadata; import com.google.protobuf.Empty; import java.io.IOException; import java.util.Arrays; @@ -66,8 +68,22 @@ static void importDataset(String projectId, String datasetId, String path) InputConfig inputConfig = InputConfig.newBuilder().setGcsSource(gcsSource).build(); System.out.println("Processing import..."); - Empty response = client.importDataAsync(datasetFullId, inputConfig).get(45, TimeUnit.MINUTES); - System.out.format("Dataset imported. %s\n", response); + // Start the import job + OperationFuture operation = client + .importDataAsync(datasetFullId, inputConfig); + + System.out.format("Operation name: %s%n", operation.getName()); + + // If you want to wait for the operation to finish, adjust the timeout appropriately. The + // operation will still run if you choose not to wait for it to complete. You can check the + // status of your operation using the operation's name. + Empty response = operation.get(45, TimeUnit.MINUTES); + System.out.format("Dataset imported. %s%n", response); + } catch (TimeoutException e) { + System.out.println("The operation's polling period was not long enough."); + System.out.println("You can use the Operation's name to get the current status."); + System.out.println("The import job is still running and will complete as expected."); + throw e; } } }