Skip to content

Commit ed4ef1b

Browse files
committed
Make GCP SA token refresh non-blocking with warning on failure
Port of Go SDK #1544. The GCP SA access token (X-Databricks-GCP-SA-Access-Token) refresh is now non-blocking in both GoogleIdCredentialsProvider and GoogleCredentialsCredentialsProvider. On failure, a warning is logged and the header is skipped instead of throwing an exception. The token is also now always attempted regardless of client type (not just for ACCOUNT clients). Co-authored-by: Isaac
1 parent 2dd4a6d commit ed4ef1b

File tree

2 files changed

+10
-19
lines changed

2 files changed

+10
-19
lines changed

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

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,12 @@ public HeaderFactory configure(DatabricksConfig config) {
6666
Map<String, String> headers = new HashMap<>();
6767
headers.put("Authorization", String.format("Bearer %s", idToken.getTokenValue()));
6868

69-
if (config.getClientType() == ClientType.ACCOUNT) {
70-
AccessToken token;
71-
try {
72-
token = finalServiceAccountCredentials.createScoped(GCP_SCOPES).refreshAccessToken();
73-
} catch (IOException e) {
74-
String message =
75-
"Failed to refresh access token from Google service account credentials.";
76-
LOG.error(message + e);
77-
throw new DatabricksException(message, e);
78-
}
69+
try {
70+
AccessToken token =
71+
finalServiceAccountCredentials.createScoped(GCP_SCOPES).refreshAccessToken();
7972
headers.put(SA_ACCESS_TOKEN_HEADER, token.getTokenValue());
73+
} catch (IOException e) {
74+
LOG.warn("Failed to refresh GCP SA access token, skipping header: {}", e.getMessage());
8075
}
8176

8277
return headers;

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,11 @@ public HeaderFactory configure(DatabricksConfig config) {
6969
throw new DatabricksException(message, e);
7070
}
7171

72-
if (config.getClientType() == ClientType.ACCOUNT) {
73-
try {
74-
headers.put(
75-
SA_ACCESS_TOKEN_HEADER, gcpScopedCredentials.refreshAccessToken().getTokenValue());
76-
} catch (IOException e) {
77-
String message = "Failed to refresh access token from scoped id token credentials.";
78-
LOG.error(message + e);
79-
throw new DatabricksException(message, e);
80-
}
72+
try {
73+
headers.put(
74+
SA_ACCESS_TOKEN_HEADER, gcpScopedCredentials.refreshAccessToken().getTokenValue());
75+
} catch (IOException e) {
76+
LOG.warn("Failed to refresh GCP SA access token, skipping header: {}", e.getMessage());
8177
}
8278

8379
return headers;

0 commit comments

Comments
 (0)