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<>();

Reply via email to