Skip to content

Commit 87a8458

Browse files
Solved PECO-1642
1 parent 2dc2268 commit 87a8458

File tree

5 files changed

+26
-10
lines changed

5 files changed

+26
-10
lines changed

src/main/java/com/databricks/jdbc/client/impl/sdk/DatabricksSdkClient.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class DatabricksSdkClient implements DatabricksClient {
3737
private static final Logger LOGGER = LoggerFactory.getLogger(DatabricksSdkClient.class);
3838
private static final String SYNC_TIMEOUT_VALUE = "10s";
3939
private static final String ASYNC_TIMEOUT_VALUE = "0s";
40-
private static final int STATEMENT_RESULT_POLL_INTERVAL_MILLIS = 200;
40+
private int STATEMENT_RESULT_POLL_INTERVAL_MILLIS = 200;
4141

4242
private final IDatabricksConnectionContext connectionContext;
4343
private final DatabricksConfig databricksConfig;
@@ -61,6 +61,7 @@ public DatabricksSdkClient(IDatabricksConnectionContext connectionContext)
6161

6262
OAuthAuthenticator authenticator = new OAuthAuthenticator(connectionContext);
6363
this.workspaceClient = authenticator.getWorkspaceClient();
64+
this.STATEMENT_RESULT_POLL_INTERVAL_MILLIS = connectionContext.getInterval();
6465
}
6566

6667
public DatabricksSdkClient(
@@ -77,6 +78,8 @@ public DatabricksSdkClient(
7778
this.workspaceClient =
7879
new WorkspaceClient(true /* mock */, apiClient)
7980
.withStatementExecutionImpl(statementExecutionService);
81+
82+
this.STATEMENT_RESULT_POLL_INTERVAL_MILLIS = connectionContext.getInterval();
8083
}
8184

8285
@Override
@@ -160,7 +163,7 @@ public DatabricksResultSet executeStatement(
160163
while (responseState == StatementState.PENDING || responseState == StatementState.RUNNING) {
161164
if (pollCount > 0) { // First poll happens without a delay
162165
try {
163-
Thread.sleep(STATEMENT_RESULT_POLL_INTERVAL_MILLIS); // TODO: make this configurable
166+
Thread.sleep(STATEMENT_RESULT_POLL_INTERVAL_MILLIS);
164167
} catch (InterruptedException e) {
165168
throw new DatabricksTimeoutException("Thread interrupted due to statement timeout");
166169
}

src/main/java/com/databricks/jdbc/driver/DatabricksConnectionContext.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,13 @@ public String getToken() {
172172
: getParameter(DatabricksJdbcConstants.PWD);
173173
}
174174

175+
@Override
176+
public int getInterval() {
177+
return getParameter(POLL_INTERVAL) == null
178+
? POLL_INTERVAL_DEFAULT
179+
: Integer.parseInt((getParameter(DatabricksJdbcConstants.POLL_INTERVAL)));
180+
}
181+
175182
public String getCloud() throws DatabricksParsingException {
176183
String hostURL = getHostUrl();
177184
if (hostURL.contains("azuredatabricks.net")

src/main/java/com/databricks/jdbc/driver/DatabricksJdbcConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public final class DatabricksJdbcConstants {
5757
static final String UID = "uid";
5858
static final String PWD = "pwd";
5959

60+
static final String POLL_INTERVAL = "asyncexecpollinterval";
61+
static final int POLL_INTERVAL_DEFAULT = 200;
6062
static final String AWS_CLIENT_ID = "databricks-sql-jdbc";
6163

6264
static final String AAD_CLIENT_ID = "96eecda7-19ea-49cc-abb5-240097d554f5";

src/main/java/com/databricks/jdbc/driver/IDatabricksConnectionContext.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,7 @@ public static AuthMech parseAuthMech(String authMech) {
114114

115115
String getEndpointURL() throws DatabricksParsingException;
116116

117+
int getInterval();
118+
117119
DatabricksClientType getClientType();
118120
}

src/test/java/com/databricks/jdbc/local/DriverTester.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void testGetTablesOSS_StatementExecution() throws Exception {
3636
DriverManager.drivers().forEach(driver -> System.out.println(driver.getClass()));
3737
// Getting the connection
3838
String jdbcUrl =
39-
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/791ba2a31c7fd70a;";
39+
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;asyncexecpollinterval=200;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/791ba2a31c7fd70a;";
4040
Connection con = DriverManager.getConnection(jdbcUrl, "[email protected]", "x");
4141
System.out.println("Connection established......");
4242
Statement statement = con.createStatement();
@@ -54,11 +54,13 @@ void testGetTablesOSS_Metadata() throws Exception {
5454
DriverManager.drivers().forEach(driver -> System.out.println(driver.getClass()));
5555
// Getting the connection
5656
String jdbcUrl =
57-
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/791ba2a31c7fd70a;";
58-
Connection con = DriverManager.getConnection(jdbcUrl, "[email protected]", "x");
57+
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;asyncexecpollinterval=200;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/791ba2a31c7fd70a;";
58+
Connection con = DriverManager.getConnection(jdbcUrl, "[email protected]", "dapiecd97706ac974a03b199ec117cf0bdf6");
5959
System.out.println("Connection established......");
60-
DatabaseMetaData metaData = con.getMetaData();
61-
ResultSet resultSet = metaData.getCatalogs();
60+
// DatabaseMetaData metaData = con.getMetaData();
61+
// ResultSet resultSet = metaData.getCatalogs();
62+
Statement statement = con.createStatement();
63+
ResultSet resultSet = statement.executeQuery("select * from main.newschema_agni.agni_table");
6264
printResultSet(resultSet);
6365
resultSet.close();
6466
con.close();
@@ -70,7 +72,7 @@ void testArclight() throws Exception {
7072
DriverManager.drivers().forEach(driver -> System.out.println(driver.getClass()));
7173
// Getting the connection
7274
String jdbcUrl =
73-
"jdbc:databricks://arclight-staging-e2-arclight-dmk-qa-staging-us-east-1.staging.cloud.databricks.com:443/default;transportMode=https;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/8561171c1d9afb1f;";
75+
"jdbc:databricks://arclight-staging-e2-arclight-dmk-qa-staging-us-east-1.staging.cloud.databricks.com:443/default;transportMode=https;asyncexecpollinterval=200;ssl=1;AuthMech=3;httpPath=/sql/1.0/warehouses/8561171c1d9afb1f;";
7476
Connection con = DriverManager.getConnection(jdbcUrl, "[email protected]", "xx");
7577
System.out.println("Connection established......");
7678
// Retrieving data
@@ -91,7 +93,7 @@ void testAllPurposeClusters() throws Exception {
9193
DriverManager.registerDriver(new com.databricks.jdbc.driver.DatabricksDriver());
9294
DriverManager.drivers().forEach(driver -> System.out.println(driver.getClass()));
9395
String jdbcUrl =
94-
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;ssl=1;httpPath=sql/protocolv1/o/6051921418418893/1115-130834-ms4m0yv;AuthMech=3;UID=token;";
96+
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;asyncexecpollinterval=200;ssl=1;httpPath=sql/protocolv1/o/6051921418418893/1115-130834-ms4m0yv;AuthMech=3;UID=token;";
9597
Connection con = DriverManager.getConnection(jdbcUrl, "[email protected]", "x");
9698
System.out.println("Connection established......");
9799
Statement statement = con.createStatement();
@@ -107,7 +109,7 @@ void testAllPurposeClustersMetadata() throws Exception {
107109
DriverManager.registerDriver(new com.databricks.jdbc.driver.DatabricksDriver());
108110
DriverManager.drivers().forEach(driver -> System.out.println(driver.getClass()));
109111
String jdbcUrl =
110-
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;ssl=1;httpPath=sql/protocolv1/o/6051921418418893/1115-130834-ms4m0yv;AuthMech=3;UID=token;";
112+
"jdbc:databricks://e2-dogfood.staging.cloud.databricks.com:443/default;transportMode=https;asyncexecpollinterval=200;ssl=1;httpPath=sql/protocolv1/o/6051921418418893/1115-130834-ms4m0yv;AuthMech=3;UID=token;";
111113
Connection con = DriverManager.getConnection(jdbcUrl, "[email protected]", "xx");
112114
System.out.println("Connection established......");
113115
ResultSet resultSet = con.getMetaData().getPrimaryKeys("main", "ggm_pk", "table_with_pk");

0 commit comments

Comments
 (0)