Skip to content

Commit b06c626

Browse files
authored
Fix interrupt handling (#272)
## Changes Current implementation does not work well when client interrupts a thread where SDK code is running. Once interrupted, the logic continues to run till the timeout (default 20mins) without sleeping at all. Each time thread.sleep is called, it throws interrupt exception and this results in calling the status API continuously without delay. The PR is changing the handling to throw DatabricksException when the thread is interrupted so that clients can stop the processing and handle the exception as they wish. ## Tests All unit tests are successful.
1 parent 2abbcdb commit b06c626

File tree

10 files changed

+23
-0
lines changed

10 files changed

+23
-0
lines changed

.codegen/api.java.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public class {{.PascalName}}API {
9696
Thread.sleep((long) (sleep * 1000L + Math.random() * 1000));
9797
} catch (InterruptedException e) {
9898
Thread.currentThread().interrupt();
99+
throw new DatabricksException("Current thread was interrupted", e);
99100
}
100101
attempt++;
101102
}

databricks-sdk-java/src/main/java/com/databricks/sdk/core/ApiClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ private Response executeInner(Request in) {
288288
timer.sleep(sleepMillis);
289289
} catch (InterruptedException ex) {
290290
Thread.currentThread().interrupt();
291+
throw new DatabricksException("Current thread was interrupted", ex);
291292
}
292293
}
293294
}

databricks-sdk-java/src/main/java/com/databricks/sdk/service/compute/ClustersAPI.java

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/compute/CommandExecutionAPI.java

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobsAPI.java

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/PipelinesAPI.java

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/provisioning/WorkspacesAPI.java

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/ServingEndpointsAPI.java

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/WarehousesAPI.java

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/service/vectorsearch/VectorSearchEndpointsAPI.java

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)