Skip to content

Commit 41e5cc4

Browse files
authored
Fix UC volume GET operation (#602)
* Fix UC volume GET operation * Add tests
1 parent 2f3a3fd commit 41e5cc4

File tree

5 files changed

+37
-4
lines changed

5 files changed

+37
-4
lines changed

src/main/java/com/databricks/jdbc/api/impl/arrow/ArrowResultChunk.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ void downloadData(IDatabricksHttpClient httpClient, CompressionCodec compression
255255
HttpGet getRequest = new HttpGet(uriBuilder.build());
256256
addHeaders(getRequest, chunkLink.getHttpHeaders());
257257
// Retry would be done in http client, we should not bother about that here
258-
response = httpClient.execute(getRequest);
258+
response = httpClient.execute(getRequest, true);
259259
checkHTTPError(response);
260260
String context =
261261
String.format(

src/main/java/com/databricks/jdbc/dbclient/IDatabricksHttpClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,14 @@ public interface IDatabricksHttpClient {
1414
* @return http response
1515
*/
1616
CloseableHttpResponse execute(HttpUriRequest request) throws DatabricksHttpException;
17+
18+
/**
19+
* Executes the given http request and returns the response
20+
*
21+
* @param request underlying http request
22+
* @param supportGzipEncoding whether to support gzip encoding header
23+
* @return http response
24+
*/
25+
CloseableHttpResponse execute(HttpUriRequest request, boolean supportGzipEncoding)
26+
throws DatabricksHttpException;
1727
}

src/main/java/com/databricks/jdbc/dbclient/impl/http/DatabricksHttpClient.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,15 @@ public class DatabricksHttpClient implements IDatabricksHttpClient, Closeable {
6565

6666
@Override
6767
public CloseableHttpResponse execute(HttpUriRequest request) throws DatabricksHttpException {
68+
return execute(request, false);
69+
}
70+
71+
@Override
72+
public CloseableHttpResponse execute(HttpUriRequest request, boolean supportGzipEncoding)
73+
throws DatabricksHttpException {
6874
LOGGER.debug(
6975
String.format("Executing HTTP request [{%s}]", RequestSanitizer.sanitizeRequest(request)));
70-
if (!DriverUtil.isRunningAgainstFake()) {
76+
if (!DriverUtil.isRunningAgainstFake() && supportGzipEncoding) {
7177
// TODO : allow gzip in wiremock
7278
request.setHeader("Content-Encoding", "gzip");
7379
}

src/test/java/com/databricks/jdbc/api/impl/arrow/ArrowStreamResultTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static com.databricks.jdbc.TestConstants.*;
44
import static java.lang.Math.min;
55
import static org.junit.jupiter.api.Assertions.*;
6+
import static org.mockito.ArgumentMatchers.eq;
67
import static org.mockito.ArgumentMatchers.isA;
78
import static org.mockito.Mockito.when;
89

@@ -115,7 +116,7 @@ public void testIteration() throws Exception {
115116
DatabricksSession session = new DatabricksSession(connectionContext, mockedSdkClient);
116117
setupMockResponse();
117118
setupResultChunkMocks();
118-
when(mockHttpClient.execute(isA(HttpUriRequest.class))).thenReturn(httpResponse);
119+
when(mockHttpClient.execute(isA(HttpUriRequest.class), eq(true))).thenReturn(httpResponse);
119120

120121
ArrowStreamResult result =
121122
new ArrowStreamResult(resultManifest, resultData, STATEMENT_ID, session, mockHttpClient);
@@ -195,7 +196,7 @@ public void testGetObject() throws Exception {
195196
DatabricksSession session = new DatabricksSession(connectionContext, mockedSdkClient);
196197

197198
setupMockResponse();
198-
when(mockHttpClient.execute(isA(HttpUriRequest.class))).thenReturn(httpResponse);
199+
when(mockHttpClient.execute(isA(HttpUriRequest.class), eq(true))).thenReturn(httpResponse);
199200

200201
ArrowStreamResult result =
201202
new ArrowStreamResult(resultManifest, resultData, STATEMENT_ID, session, mockHttpClient);

src/test/java/com/databricks/jdbc/dbclient/impl/http/DatabricksHttpClientTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,22 @@ public void testSetFakeServiceRouteInHttpClientThrowsHTTPError() {
171171
System.clearProperty(testTargetURI + FAKE_SERVICE_URI_PROP_SUFFIX);
172172
}
173173

174+
@Test
175+
void testExecuteWithGzipHeaders() throws Exception {
176+
HttpUriRequest request = new HttpGet("https://databricks.com");
177+
databricksHttpClient.execute(request);
178+
179+
assertFalse(request.containsHeader("Content-Encoding"));
180+
181+
System.setProperty(IS_FAKE_SERVICE_TEST_PROP, "true");
182+
databricksHttpClient.execute(request, true);
183+
assertFalse(request.containsHeader("Content-Encoding"));
184+
System.setProperty(IS_FAKE_SERVICE_TEST_PROP, "false");
185+
186+
databricksHttpClient.execute(request, true);
187+
assertTrue(request.containsHeader("Content-Encoding"));
188+
}
189+
174190
@Test
175191
void testExecuteThrowsError() throws IOException {
176192
when(mockRequest.getURI()).thenReturn(URI.create("https://databricks.com"));

0 commit comments

Comments
 (0)