This is an automated email from the ASF dual-hosted git repository.
SbloodyS pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new c366e26217 [Fix-18696][Task] Send HTTP Parameters with DELETE requests
(#18704)
c366e26217 is described below
commit c366e26217d589378eaa98b64f9b29808927a662
Author: mengzhe gan <[email protected]>
AuthorDate: Thu Oct 15 09:41:33 2026 +0800
[Fix-18696][Task] Send HTTP Parameters with DELETE requests (#18704)
---
.../dolphinscheduler/common/utils/OkHttpUtils.java | 42 ++++++++++++++++++++--
.../plugin/task/http/HttpTask.java | 3 +-
.../plugin/task/http/HttpTaskTest.java | 25 +++++++++++++
3 files changed, 67 insertions(+), 3 deletions(-)
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OkHttpUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OkHttpUtils.java
index b98353ad1c..a6ac285750 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OkHttpUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OkHttpUtils.java
@@ -248,10 +248,27 @@ public class OkHttpUtils {
*/
public static @NonNull OkHttpResponse delete(@NonNull String url,
@Nullable
OkHttpRequestHeaders okHttpRequestHeaders,
+ @Nullable Map<String, Object>
requestParams,
int connectTimeout,
int writeTimeout,
int readTimeout) throws
IOException {
- return delete(url, okHttpRequestHeaders, connectTimeout, writeTimeout,
readTimeout, false);
+ return delete(url, okHttpRequestHeaders, requestParams,
connectTimeout, writeTimeout, readTimeout, false);
+ }
+
+ /**
+ * http delete request
+ * @param connectTimeout connect timeout in milliseconds
+ * @param writeTimeout write timeout in milliseconds
+ * @param readTimeout read timeout in milliseconds
+ * @return OkHttpResponse
+ * @throws RuntimeException
+ */
+ public static @NonNull OkHttpResponse delete(@NonNull String url,
+ @Nullable
OkHttpRequestHeaders okHttpRequestHeaders,
+ int connectTimeout,
+ int writeTimeout,
+ int readTimeout) throws
IOException {
+ return delete(url, okHttpRequestHeaders, null, connectTimeout,
writeTimeout, readTimeout, false);
}
/**
@@ -269,8 +286,29 @@ public class OkHttpUtils {
int writeTimeout,
int readTimeout,
boolean keepAlive) throws
IOException {
+ return delete(url, okHttpRequestHeaders, null, connectTimeout,
writeTimeout, readTimeout, keepAlive);
+ }
+
+ /**
+ * http delete request
+ * @param requestParams the request parameters appended to the url, same
as the GET path
+ * @param connectTimeout connect timeout in milliseconds
+ * @param writeTimeout write timeout in milliseconds
+ * @param readTimeout read timeout in milliseconds
+ * @param keepAlive whether to enable TCP keepalive (SO_KEEPALIVE) on the
socket
+ * @return OkHttpResponse
+ * @throws RuntimeException
+ */
+ public static @NonNull OkHttpResponse delete(@NonNull String url,
+ @Nullable
OkHttpRequestHeaders okHttpRequestHeaders,
+ @Nullable Map<String, Object>
requestParams,
+ int connectTimeout,
+ int writeTimeout,
+ int readTimeout,
+ boolean keepAlive) throws
IOException {
OkHttpClient client = getHttpClient(connectTimeout, writeTimeout,
readTimeout, keepAlive);
- Request.Builder requestBuilder = new Request.Builder().url(url);
+ String finalUrl = addUrlParams(requestParams, url);
+ Request.Builder requestBuilder = new Request.Builder().url(finalUrl);
addHeader(okHttpRequestHeaders.getHeaders(), requestBuilder);
requestBuilder = requestBuilder.delete();
try (Response response =
client.newCall(requestBuilder.build()).execute()) {
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/main/java/org/apache/dolphinscheduler/plugin/task/http/HttpTask.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/main/java/org/apache/dolphinscheduler/plugin/task/http/HttpTask.java
index b442c83af4..cfd29eeebf 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/main/java/org/apache/dolphinscheduler/plugin/task/http/HttpTask.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/main/java/org/apache/dolphinscheduler/plugin/task/http/HttpTask.java
@@ -195,8 +195,9 @@ public class HttpTask extends AbstractTask {
OkHttpRequestHeaders okHttpRequestHeaders = new OkHttpRequestHeaders();
okHttpRequestHeaders.setHeaders(getHeaders());
okHttpRequestHeaders.setOkHttpRequestHeaderContentType(getContentType());
+ Map<String, Object> requestParams = getRequestParams();
- OkHttpResponse okHttpResponse =
OkHttpUtils.delete(httpParameters.getUrl(), okHttpRequestHeaders,
+ OkHttpResponse okHttpResponse =
OkHttpUtils.delete(httpParameters.getUrl(), okHttpRequestHeaders, requestParams,
httpParameters.getConnectTimeout(),
httpParameters.getConnectTimeout(),
httpParameters.getConnectTimeout(),
httpParameters.isSocketKeepAlive());
addDefaultOutput(JSONUtils.toJsonString(okHttpResponse));
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/test/java/org/apache/dolphinscheduler/plugin/task/http/HttpTaskTest.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/test/java/org/apache/dolphinscheduler/plugin/task/http/HttpTaskTest.java
index d9491afdf8..3b39ae288c 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/test/java/org/apache/dolphinscheduler/plugin/task/http/HttpTaskTest.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-http/src/test/java/org/apache/dolphinscheduler/plugin/task/http/HttpTaskTest.java
@@ -241,6 +241,31 @@ public class HttpTaskTest {
Assertions.assertEquals(EXIT_CODE_SUCCESS,
httpTask.getExitStatusCode());
}
+ @Test
+ public void testDeleteRequestSendsHttpParameterParamsAsQuery() throws
Exception {
+ // #18696: the DELETE path used to drop PARAMETER-typed HTTP Parameters
+ // entirely; it must append them to the url like the GET path does
+ List<HttpProperty> httpParams = new ArrayList<>();
+ HttpProperty property = new HttpProperty();
+ property.setProp("day");
+ property.setValue("${day}");
+ property.setHttpParametersType(HttpParametersType.PARAMETER);
+ httpParams.add(property);
+
+ Map<String, String> prepareParamsMap = new HashMap<>();
+ prepareParamsMap.put("day", "20220812");
+
+ HttpTask httpTask = generateHttpTask(DEFAULT_MOCK_PATH,
HttpRequestMethod.DELETE, null,
+ httpParams, prepareParamsMap,
HttpCheckCondition.STATUS_CODE_DEFAULT, null,
+ HttpStatus.SC_OK, "{}");
+ httpTask.handle(null);
+
+ RecordedRequest request = getLatestMockWebServer().takeRequest(1,
TimeUnit.SECONDS);
+ Assertions.assertEquals("DELETE", request.getMethod());
+ Assertions.assertEquals("/test?day=20220812", request.getPath());
+ Assertions.assertEquals(EXIT_CODE_SUCCESS,
httpTask.getExitStatusCode());
+ }
+
@Test
public void testHandleWithHttpParameterParams() throws Exception {
List<HttpProperty> httpParams = new ArrayList<>();