This is an automated email from the ASF dual-hosted git repository.
wenjun 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 225e969d2d [DSIP-51][Task] Remove unused pigeon task plugin (#16219)
225e969d2d is described below
commit 225e969d2dd47f46d53d29cd4246752f2b175a33
Author: xiangzihao <[email protected]>
AuthorDate: Fri Jun 28 09:51:02 2024 +0800
[DSIP-51][Task] Remove unused pigeon task plugin (#16219)
---
docs/configs/docsdev.js | 8 -
docs/docs/en/guide/task/pigeon.md | 22 --
docs/docs/en/guide/upgrade/incompatible.md | 1 +
docs/docs/zh/guide/task/pigeon.md | 19 -
docs/docs/zh/guide/upgrade/incompatible.md | 1 +
docs/img/pigeon.png | Bin 1192 -> 0 bytes
.../main/resources/dynamic-task-type-config.yaml | 2 -
.../src/main/resources/task-type-config.yaml | 1 -
dolphinscheduler-bom/pom.xml | 6 -
.../src/main/resources/common.properties | 2 +-
dolphinscheduler-dist/release-docs/LICENSE | 1 -
.../licenses/LICENSE-Java-WebSocket.txt | 22 --
.../e2e/cases/workflow/BaseWorkflowE2ETest.java | 3 +-
.../e2e/pages/common/NavBarPage.java | 16 +-
.../e2e/pages/project/ProjectDetailPage.java | 3 -
.../e2e/pages/project/workflow/WorkflowForm.java | 2 +-
.../pages/project/workflow/WorkflowRunDialog.java | 4 +
.../pages/project/workflow/WorkflowSaveDialog.java | 13 +-
.../e2e/pages/resource/FileManagePage.java | 13 +-
.../e2e/core/DolphinSchedulerExtension.java | 2 +-
.../src/main/resources/application.yaml | 2 +-
.../storage/api/AbstractStorageOperator.java | 6 +-
.../dolphinscheduler-task-all/pom.xml | 6 -
.../dolphinscheduler-task-pigeon/pom.xml | 85 ----
.../dolphinscheduler-task-pigeon/readme.md | 0
.../plugin/task/pigeon/PigeonConfig.java | 86 -----
.../plugin/task/pigeon/PigeonParameters.java | 62 ---
.../plugin/task/pigeon/PigeonParamsConstants.java | 27 --
.../plugin/task/pigeon/PigeonTask.java | 430 ---------------------
.../plugin/task/pigeon/PigeonTaskChannel.java | 41 --
.../task/pigeon/PigeonTaskChannelFactory.java | 38 --
.../plugin/task/pigeon/config.properties | 26 --
.../plugin/task/pigeon/PigeonTaskTest.java | 142 -------
.../plugin/task/pigeon/PigeonTaskTest.json | 60 ---
dolphinscheduler-task-plugin/pom.xml | 1 -
.../public/images/task-icons/pigeon.png | Bin 1192 -> 0 bytes
.../public/images/task-icons/pigeon_hover.png | Bin 1167 -> 0 bytes
dolphinscheduler-ui/src/locales/en_US/project.ts | 1 -
dolphinscheduler-ui/src/locales/zh_CN/project.ts | 1 -
dolphinscheduler-ui/src/store/project/task-type.ts | 3 -
dolphinscheduler-ui/src/store/project/types.ts | 1 -
.../projects/task/components/node/format-data.ts | 4 -
.../projects/task/components/node/tasks/index.ts | 2 -
.../task/components/node/tasks/use-pigeon.ts | 68 ----
.../src/views/projects/task/constants/task-type.ts | 4 -
.../workflow/components/dag/dag.module.scss | 6 -
.../projects/workflow/definition/tree/index.tsx | 5 -
tools/dependencies/known-dependencies.txt | 1 -
48 files changed, 38 insertions(+), 1211 deletions(-)
diff --git a/docs/configs/docsdev.js b/docs/configs/docsdev.js
index 8039aa41f3..08155a006b 100644
--- a/docs/configs/docsdev.js
+++ b/docs/configs/docsdev.js
@@ -145,10 +145,6 @@ export default {
title: 'Sqoop',
link:
'/en-us/docs/dev/user_doc/guide/task/sqoop.html',
},
- {
- title: 'Pigeon',
- link:
'/en-us/docs/dev/user_doc/guide/task/pigeon.html',
- },
{
title: 'Conditions',
link:
'/en-us/docs/dev/user_doc/guide/task/conditions.html',
@@ -877,10 +873,6 @@ export default {
title: 'Sqoop',
link:
'/zh-cn/docs/dev/user_doc/guide/task/sqoop.html',
},
- {
- title: 'Pigeon',
- link:
'/zh-cn/docs/dev/user_doc/guide/task/pigeon.html',
- },
{
title: 'Conditions',
link:
'/zh-cn/docs/dev/user_doc/guide/task/conditions.html',
diff --git a/docs/docs/en/guide/task/pigeon.md
b/docs/docs/en/guide/task/pigeon.md
deleted file mode 100644
index 43d538bf8f..0000000000
--- a/docs/docs/en/guide/task/pigeon.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Pigeon
-
-## Overview
-
-Pigeon is a task used to trigger remote tasks, acquire logs or status by
calling remote WebSocket service. It is DolphinScheduler uses a remote
WebSocket service to call tasks.
-
-## Create Task
-
-- Click `Project Management -> Project Name -> Workflow Definition`, and click
the `Create Workflow` button to enter the DAG editing page.
-- Drag from the toolbar <img src="../../../../img/pigeon.png" width="20"/> to
the canvas to create a new Pigeon task.
-
-## Task Parameters
-
-[//]: # (TODO: use the commented anchor below once our website template
supports this syntax)
-[//]: # (- Please refer to [DolphinScheduler Task Parameters
Appendix](appendix.md#default-task-parameters) `Default Task
Parameters` section for default parameters.)
-
-- Please refer to [DolphinScheduler Task Parameters Appendix](appendix.md)
`Default Task Parameters` section for default parameters.
-
-| **Parameter** | **Description** |
-|------------------|---------------------------------------|
-| Target task name | Target task name of this Pigeon node. |
-
diff --git a/docs/docs/en/guide/upgrade/incompatible.md
b/docs/docs/en/guide/upgrade/incompatible.md
index a134cd5fd3..d20dba51ba 100644
--- a/docs/docs/en/guide/upgrade/incompatible.md
+++ b/docs/docs/en/guide/upgrade/incompatible.md
@@ -29,4 +29,5 @@ This document records the incompatible updates between each
version. You need to
## 3.3.0
* Remove the `udf-manage` function from the `resource center` ([#16209])
+* Remove the `Pigeon` from the `Task Plugin` ([#16218])
diff --git a/docs/docs/zh/guide/task/pigeon.md
b/docs/docs/zh/guide/task/pigeon.md
deleted file mode 100644
index d8138d3c02..0000000000
--- a/docs/docs/zh/guide/task/pigeon.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Pigeon
-
-Pigeon任务类型是通过调用远程websocket服务,实现远程任务的触发,状态、日志的获取,是 DolphinScheduler 通用远程
websocket 服务调用任务
-
-## 创建任务
-
-拖动工具栏中的<img src="../../../../img/pigeon.png" width="20"/>任务节点到画板中即能完成任务创建
-
-## 任务参数
-
-[//]: # (TODO: use the commented anchor below once our website template
supports this syntax)
-[//]: # (-
默认参数说明请参考[DolphinScheduler任务参数附录](appendix.md#默认任务参数)`默认任务参数`一栏。)
-
-- 默认参数说明请参考[DolphinScheduler任务参数附录](appendix.md)`默认任务参数`一栏。
-
-| **任务参数** | **描述** |
-|----------|-------------------|
-| 目标任务名 | 输入Pigeon任务的目标任务名称 |
-
diff --git a/docs/docs/zh/guide/upgrade/incompatible.md
b/docs/docs/zh/guide/upgrade/incompatible.md
index b25d35b1e3..a5260a0695 100644
--- a/docs/docs/zh/guide/upgrade/incompatible.md
+++ b/docs/docs/zh/guide/upgrade/incompatible.md
@@ -27,4 +27,5 @@
## 3.3.0
* 从 `资源中心` 中移除了 `udf-manage` 功能 ([#16209])
+* 从 `任务插件` 中移除了 `Pigeon` 类型 ([#16218])
diff --git a/docs/img/pigeon.png b/docs/img/pigeon.png
deleted file mode 100644
index 6fe21d2b1e..0000000000
Binary files a/docs/img/pigeon.png and /dev/null differ
diff --git
a/dolphinscheduler-api/src/main/resources/dynamic-task-type-config.yaml
b/dolphinscheduler-api/src/main/resources/dynamic-task-type-config.yaml
index a9a2d55ff8..74a2504d66 100644
--- a/dolphinscheduler-api/src/main/resources/dynamic-task-type-config.yaml
+++ b/dolphinscheduler-api/src/main/resources/dynamic-task-type-config.yaml
@@ -28,5 +28,3 @@ dynamic-task:
- {name: DATA_QUALITY,icon: shell-icon.png,hover: shell-hover.png}
machineLearning:
- {name: JUPYTER,icon: shell-icon.png,hover: shell-hover.png}
- other:
- - {name: PIGEON,icon: shell-icon.png,hover: shell-hover.png}
\ No newline at end of file
diff --git a/dolphinscheduler-api/src/main/resources/task-type-config.yaml
b/dolphinscheduler-api/src/main/resources/task-type-config.yaml
index 9105d50697..05d1e6290a 100644
--- a/dolphinscheduler-api/src/main/resources/task-type-config.yaml
+++ b/dolphinscheduler-api/src/main/resources/task-type-config.yaml
@@ -56,7 +56,6 @@ task:
- 'PYTORCH'
- 'KUBEFLOW'
other:
- - 'PIGEON'
- 'ZEPPELIN'
- 'CHUNJUN'
- 'DATASYNC'
diff --git a/dolphinscheduler-bom/pom.xml b/dolphinscheduler-bom/pom.xml
index 8c59d1c4ca..0635239f8c 100644
--- a/dolphinscheduler-bom/pom.xml
+++ b/dolphinscheduler-bom/pom.xml
@@ -31,7 +31,6 @@
<netty.version>4.1.53.Final</netty.version>
<spring-boot.version>2.7.3</spring-boot.version>
<spring-ldap.version>2.4.1</spring-ldap.version>
- <java-websocket.version>1.5.1</java-websocket.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
<quartz.version>2.3.2</quartz.version>
<druid.version>1.2.20</druid.version>
@@ -169,11 +168,6 @@
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.java-websocket</groupId>
- <artifactId>Java-WebSocket</artifactId>
- <version>${java-websocket.version}</version>
- </dependency>
<!-- mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
diff --git a/dolphinscheduler-common/src/main/resources/common.properties
b/dolphinscheduler-common/src/main/resources/common.properties
index cf1723700e..e0704bebe5 100644
--- a/dolphinscheduler-common/src/main/resources/common.properties
+++ b/dolphinscheduler-common/src/main/resources/common.properties
@@ -26,7 +26,7 @@ data.basedir.path=/tmp/dolphinscheduler
# use shared file mount point
resource.storage.type=LOCAL
# resource store on HDFS/S3 path, resource file will store to this base path,
self configuration, please make sure the directory exists on hdfs and have read
write permissions. "/dolphinscheduler" is recommended
-resource.storage.upload.base.path=/dolphinscheduler
+resource.storage.upload.base.path=/tmp/dolphinscheduler
# The Azure client ID (Azure Application (client) ID)
resource.azure.client.id=minioadmin
diff --git a/dolphinscheduler-dist/release-docs/LICENSE
b/dolphinscheduler-dist/release-docs/LICENSE
index 41400d26f5..290d0ab3f3 100644
--- a/dolphinscheduler-dist/release-docs/LICENSE
+++ b/dolphinscheduler-dist/release-docs/LICENSE
@@ -666,7 +666,6 @@ The text of each license is also included at
licenses/LICENSE-[project].txt.
animal-sniffer-annotations 1.19
https://mvnrepository.com/artifact/org.codehaus.mojo/animal-sniffer-annotations/1.19,
MIT
checker-qual 3.12.0
https://mvnrepository.com/artifact/org.checkerframework/checker-qual/3.12.0,
MIT + GPLv2
checker-qual 3.19.0
https://mvnrepository.com/artifact/org.checkerframework/checker-qual/3.19.0,
MIT + GPLv2
- Java-WebSocket 1.5.1: https://github.com/TooTallNate/Java-WebSocket, MIT
oshi-core 6.1.1:
https://mvnrepository.com/artifact/com.github.oshi/oshi-core/6.1.1, MIT
unirest-java 3.7.04-standalone:
https://mvnrepository.com/artifact/com.konghq/unirest-java/3.7.04, MIT
classgraph 4.8.83:
https://mvnrepository.com/artifact/io.github.classgraph/classgraph, MIT
diff --git
a/dolphinscheduler-dist/release-docs/licenses/LICENSE-Java-WebSocket.txt
b/dolphinscheduler-dist/release-docs/licenses/LICENSE-Java-WebSocket.txt
deleted file mode 100644
index dbf7415b41..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/LICENSE-Java-WebSocket.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2010-2020 Nathan Rajlich
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/workflow/BaseWorkflowE2ETest.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/workflow/BaseWorkflowE2ETest.java
index aab2c7c06f..c2ee2ee447 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/workflow/BaseWorkflowE2ETest.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/workflow/BaseWorkflowE2ETest.java
@@ -17,6 +17,7 @@
package org.apache.dolphinscheduler.e2e.cases.workflow;
+import java.time.Duration;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
@@ -46,7 +47,7 @@ import static
org.testcontainers.shaded.org.awaitility.Awaitility.await;
@Slf4j
public abstract class BaseWorkflowE2ETest {
- protected static String projectName = UUID.randomUUID().toString();
+ protected static final String projectName = UUID.randomUUID().toString();
protected static final AdminUser adminUser = new AdminUser();
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
index a6a64ccf92..7b00a9bd29 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
@@ -42,19 +42,19 @@ import java.time.Duration;
public class NavBarPage {
protected final RemoteWebDriver driver;
- @FindBy(css = ".tab-horizontal .n-menu-item:nth-child(2) >
.n-menu-item-content")
+ @FindBy(xpath = "//div[contains(@class,
'tab-horizontal')]//div[contains(@role,'menubar')]//span[contains(text(),
'Project')]")
private WebElement projectTab;
- @FindBy(css = ".tab-horizontal .n-menu-item:nth-child(3) >
.n-menu-item-content")
+ @FindBy(xpath = "//div[contains(@class,
'tab-horizontal')]//div[contains(@role,'menubar')]//span[contains(text(),
'Resources')]")
private WebElement resourceTab;
- @FindBy(css = ".tab-horizontal .n-menu-item:nth-child(4) >
.n-menu-item-content")
+ @FindBy(xpath = "//div[contains(@class,
'tab-horizontal')]//div[contains(@role,'menubar')]//span[contains(text(), 'Data
Quality')]")
private WebElement dataQualityTab;
- @FindBy(css = ".tab-horizontal .n-menu-item:nth-child(5) >
.n-menu-item-content")
+ @FindBy(xpath = "//div[contains(@class,
'tab-horizontal')]//div[contains(@role,'menubar')]//span[contains(text(),
'Datasource')]")
private WebElement dataSourceTab;
- @FindBy(css = ".tab-horizontal .n-menu-item:nth-child(7) >
.n-menu-item-content")
+ @FindBy(xpath = "//div[contains(@class,
'tab-horizontal')]//div[contains(@role,'menubar')]//span[contains(text(),
'Security')]")
private WebElement securityTab;
public NavBarPage(RemoteWebDriver driver) {
@@ -66,14 +66,14 @@ public class NavBarPage {
public <T extends NavBarItem> T goToNav(Class<T> nav) {
if (nav == ProjectPage.class) {
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.elementToBeClickable(projectTab));
- projectTab.click();
+ ((JavascriptExecutor)
driver).executeScript("arguments[0].click();", projectTab());
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("/projects/list"));
return nav.cast(new ProjectPage(driver));
}
if (nav == SecurityPage.class) {
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.elementToBeClickable(securityTab));
- securityTab.click();
+ ((JavascriptExecutor)
driver).executeScript("arguments[0].click();", securityTab());
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("/security/tenant-manage"));
return nav.cast(new SecurityPage(driver));
}
@@ -87,7 +87,7 @@ public class NavBarPage {
if (nav == DataSourcePage.class) {
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.elementToBeClickable(dataSourceTab));
- dataSourceTab.click();
+ ((JavascriptExecutor)
driver).executeScript("arguments[0].click();", dataSourceTab());
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("/datasource"));
return nav.cast(new DataSourcePage(driver));
}
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/ProjectDetailPage.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/ProjectDetailPage.java
index 6e06db5039..c2fedeccfb 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/ProjectDetailPage.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/ProjectDetailPage.java
@@ -19,7 +19,6 @@
*/
package org.apache.dolphinscheduler.e2e.pages.project;
-import java.time.Duration;
import lombok.SneakyThrows;
import org.apache.dolphinscheduler.e2e.core.WebDriverWaitFactory;
import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
@@ -27,14 +26,12 @@ import
org.apache.dolphinscheduler.e2e.pages.project.workflow.TaskInstanceTab;
import
org.apache.dolphinscheduler.e2e.pages.project.workflow.WorkflowDefinitionTab;
import
org.apache.dolphinscheduler.e2e.pages.project.workflow.WorkflowInstanceTab;
-import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.FindBy;
import lombok.Getter;
import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
@Getter
public final class ProjectDetailPage extends NavBarPage {
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowForm.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowForm.java
index 69573ab7ff..ce622b0397 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowForm.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowForm.java
@@ -110,7 +110,7 @@ public final class WorkflowForm {
public WorkflowSaveDialog submit() {
buttonSave().click();
-
+
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(.,'Basic
Information')]")));
return new WorkflowSaveDialog(this);
}
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowRunDialog.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowRunDialog.java
index 9e337be43e..ac8c22e5da 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowRunDialog.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowRunDialog.java
@@ -20,6 +20,8 @@
package org.apache.dolphinscheduler.e2e.pages.project.workflow;
import org.apache.dolphinscheduler.e2e.core.WebDriverWaitFactory;
+
+import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
@@ -45,6 +47,8 @@ public final class WorkflowRunDialog {
}
public WorkflowDefinitionTab submit() {
+ By runDialogTitleXpath = By.xpath(String.format("//*[contains(text(),
'%s')]", "Please set the parameters before starting"));
+
WebDriverWaitFactory.createWebDriverWait(parent.driver()).until(ExpectedConditions.visibilityOfElementLocated(runDialogTitleXpath));
WebDriverWaitFactory.createWebDriverWait(parent.driver()).until(ExpectedConditions.elementToBeClickable(buttonSubmit()));
buttonSubmit().click();
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowSaveDialog.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowSaveDialog.java
index 6f7b8470ae..d61b6a8fb7 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowSaveDialog.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/project/workflow/WorkflowSaveDialog.java
@@ -20,7 +20,11 @@
package org.apache.dolphinscheduler.e2e.pages.project.workflow;
import lombok.Getter;
+
+import org.apache.dolphinscheduler.e2e.core.WebDriverWaitFactory;
+
import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
@@ -44,7 +48,7 @@ public final class WorkflowSaveDialog {
})
private WebElement inputName;
- @FindBy(className = "btn-submit")
+ @FindBy(xpath = "//div[contains(text(), 'Basic
Information')]/../following-sibling::div[contains(@class,
'n-card__footer')]//button[contains(@class, 'btn-submit')]")
private WebElement buttonSubmit;
@FindBys({
@@ -72,8 +76,6 @@ public final class WorkflowSaveDialog {
public WorkflowSaveDialog addGlobalParam(String key, String value) {
final int len =
globalParamsItems().findElements(By.tagName("input")).size();
- final WebDriver driver = parent().driver();
-
if (len == 0) {
buttonGlobalCustomParameters().click();
@@ -90,8 +92,9 @@ public final class WorkflowSaveDialog {
}
public WorkflowForm submit() {
- buttonSubmit().click();
-
+
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.elementToBeClickable(buttonSubmit));
+ buttonSubmit.click();
+
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("workflow-definition"));
return parent;
}
}
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
index 412acf0f2a..f2d594f155 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
@@ -62,8 +62,6 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
private final RenameBox renameBox;
- private final CreateFileBox createFileBox;
-
private final UploadFileBox uploadFileBox;
private final EditFileBox editFileBox;
@@ -90,8 +88,6 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
renameBox = new RenameBox();
- createFileBox = new CreateFileBox();
-
uploadFileBox = new UploadFileBox();
editFileBox = new EditFileBox();
@@ -175,10 +171,11 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("/resource/file/create"));
- createFileBox().inputFileName().sendKeys(fileName);
- createFileBox().codeEditor().content(scripts);
- createFileBox().buttonSubmit().click();
- // todo: check if the operation is successful
+ CreateFileBox createFileBox = new CreateFileBox();
+ createFileBox.inputFileName().sendKeys(fileName);
+ createFileBox.codeEditor().content(scripts);
+ createFileBox.buttonSubmit().click();
+
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("/resource/file-manage"));
return this;
}
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-core/src/main/java/org/apache/dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-core/src/main/java/org/apache/dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
index d40afe1f3a..eeadc41e25 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-core/src/main/java/org/apache/dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-core/src/main/java/org/apache/dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
@@ -79,7 +79,7 @@ final class DolphinSchedulerExtension implements
BeforeAllCallback, AfterAllCall
@Override
@SuppressWarnings("UnstableApiUsage")
public void beforeAll(ExtensionContext context) throws IOException {
- Awaitility.setDefaultTimeout(Duration.ofSeconds(60));
+ Awaitility.setDefaultTimeout(Duration.ofSeconds(120));
Awaitility.setDefaultPollInterval(Duration.ofMillis(500));
setRecordPath();
diff --git
a/dolphinscheduler-standalone-server/src/main/resources/application.yaml
b/dolphinscheduler-standalone-server/src/main/resources/application.yaml
index 906fc42085..e88cafa8cc 100644
--- a/dolphinscheduler-standalone-server/src/main/resources/application.yaml
+++ b/dolphinscheduler-standalone-server/src/main/resources/application.yaml
@@ -211,7 +211,7 @@ worker:
server-load-protection:
enabled: true
# Worker max system cpu usage, when the worker's system cpu usage is
smaller then this value, worker server can be dispatched tasks.
- max-system-cpu-usage-percentage-thresholds: 0.9
+ max-system-cpu-usage-percentage-thresholds: 1
# Worker max jvm cpu usage, when the worker's jvm cpu usage is smaller
then this value, worker server can be dispatched tasks.
max-jvm-cpu-usage-percentage-thresholds: 0.9
# Worker max System memory usage , when the worker's system memory usage
is smaller then this value, worker server can be dispatched tasks.
diff --git
a/dolphinscheduler-storage-plugin/dolphinscheduler-storage-api/src/main/java/org/apache/dolphinscheduler/plugin/storage/api/AbstractStorageOperator.java
b/dolphinscheduler-storage-plugin/dolphinscheduler-storage-api/src/main/java/org/apache/dolphinscheduler/plugin/storage/api/AbstractStorageOperator.java
index 34a4e464b5..924c581248 100644
---
a/dolphinscheduler-storage-plugin/dolphinscheduler-storage-api/src/main/java/org/apache/dolphinscheduler/plugin/storage/api/AbstractStorageOperator.java
+++
b/dolphinscheduler-storage-plugin/dolphinscheduler-storage-api/src/main/java/org/apache/dolphinscheduler/plugin/storage/api/AbstractStorageOperator.java
@@ -26,11 +26,15 @@ import org.apache.commons.lang3.StringUtils;
import java.io.File;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.google.common.base.Preconditions;
import com.google.common.io.Files;
public abstract class AbstractStorageOperator implements StorageOperator {
+ private static final Logger log =
LoggerFactory.getLogger(AbstractStorageOperator.class);
protected final String resourceBaseAbsolutePath;
public AbstractStorageOperator(String resourceBaseAbsolutePath) {
@@ -60,7 +64,7 @@ public abstract class AbstractStorageOperator implements
StorageOperator {
@Override
public String getStorageBaseDirectory() {
// All directory should end with File.separator
- return PropertyUtils.getString(Constants.RESOURCE_UPLOAD_PATH,
"/dolphinscheduler");
+ return PropertyUtils.getString(Constants.RESOURCE_UPLOAD_PATH,
"/tmp/dolphinscheduler");
}
@Override
diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml
b/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml
index 5e4c74b27a..fbaea0dddc 100644
--- a/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml
+++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml
@@ -64,12 +64,6 @@
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.dolphinscheduler</groupId>
- <artifactId>dolphinscheduler-task-pigeon</artifactId>
- <version>${project.version}</version>
- </dependency>
-
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-task-procedure</artifactId>
diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/pom.xml
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/pom.xml
deleted file mode 100644
index e4f036ae7d..0000000000
--- a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/pom.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.dolphinscheduler</groupId>
- <artifactId>dolphinscheduler-task-plugin</artifactId>
- <version>dev-SNAPSHOT</version>
- </parent>
-
- <artifactId>dolphinscheduler-task-pigeon</artifactId>
- <packaging>jar</packaging>
- <dependencies>
-
- <dependency>
- <groupId>org.apache.dolphinscheduler</groupId>
- <artifactId>dolphinscheduler-task-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dolphinscheduler</groupId>
- <artifactId>dolphinscheduler-spi</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-collections4</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
-
-
<!--https://github.com/dreamhead/moco/blob/master/moco-doc/usage.md#socket-->
- <dependency>
- <groupId>com.github.dreamhead</groupId>
- <artifactId>moco-core</artifactId>
- <version>1.2.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.github.dreamhead</groupId>
- <artifactId>moco-runner</artifactId>
- <version>1.2.0</version>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.java-websocket</groupId>
- <artifactId>Java-WebSocket</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- </dependency>
- </dependencies>
-</project>
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/readme.md
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/readme.md
deleted file mode 100644
index e69de29bb2..0000000000
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonConfig.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonConfig.java
deleted file mode 100644
index fb5c1c7677..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonConfig.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.ResourceBundle;
-
-public class PigeonConfig {
-
- private static PigeonConfig cfg;
-
- private final String jobTriggerUrl;
- private final String jobTriggerPostBody;
- private final String jobStatusUrl;
- private final String jobStatusPostBody;
-
- private final String jobLogsFetchUrl;
- private final String jobCancelPostBody;
-
- public static synchronized PigeonConfig getInstance() {
- if (cfg == null) {
- cfg = new PigeonConfig();
- }
- return cfg;
- }
-
- private PigeonConfig() {
- ResourceBundle bundle =
-
ResourceBundle.getBundle(PigeonConfig.class.getPackage().getName().replace(".",
"/") + "/config");
- this.jobTriggerUrl = bundle.getString("job.trigger.url");
- this.jobStatusUrl = bundle.getString("job.status.url");
- this.jobTriggerPostBody = bundle.getString("job.trigger.post.body");
- this.jobStatusPostBody = bundle.getString("job.status.post.body");
- this.jobLogsFetchUrl = bundle.getString("job.logs.fetch.url");
- this.jobCancelPostBody = bundle.getString("job.cancel.post.body");
- }
-
- public String getJobCancelPostBody(int taskId) {
- return String.format(jobCancelPostBody, taskId);
- }
-
- public String getJobTriggerUrl(String tisHost) {
- checkHost(tisHost);
- return String.format(this.jobTriggerUrl, tisHost);
- }
-
- public String getJobTriggerPostBody() {
- return jobTriggerPostBody;
- }
-
- public String getJobStatusPostBody(int taskId) {
- return String.format(jobStatusPostBody, taskId);
- }
-
- public String getJobLogsFetchUrl(String host, String jobName, int taskId) {
- checkHost(host);
- return String.format(jobLogsFetchUrl, host, jobName, taskId);
- }
-
- public String getJobStatusUrl(String tisHost) {
- checkHost(tisHost);
- return String.format(this.jobStatusUrl, tisHost);
- }
-
- private static void checkHost(String tisHost) {
- if (StringUtils.isBlank(tisHost)) {
- throw new IllegalArgumentException("param tisHost can not be
null");
- }
- }
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonParameters.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonParameters.java
deleted file mode 100644
index f2b9aaf3eb..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonParameters.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-import org.apache.dolphinscheduler.plugin.task.api.model.ResourceInfo;
-import
org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.Collections;
-import java.util.List;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * TIS parameter
- */
-@Slf4j
-public class PigeonParameters extends AbstractParameters {
-
- /**
- * Pigeon target job name
- */
- private String targetJobName;
-
- public String getTargetJobName() {
- return targetJobName;
- }
-
- public void setTargetJobName(String targetJobName) {
- this.targetJobName = targetJobName;
- }
-
- @Override
- public boolean checkParameters() {
- if (StringUtils.isBlank(this.targetJobName)) {
- log.error("checkParameters faild targetJobName can not be null");
- return false;
- }
- return true;
- }
-
- @Override
- public List<ResourceInfo> getResourceFilesList() {
- return Collections.emptyList();
- }
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonParamsConstants.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonParamsConstants.java
deleted file mode 100644
index e50755a728..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonParamsConstants.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-public class PigeonParamsConstants {
-
- public static String NAME_TARGET_JOB_NAME = "targetJobName";
- public static String TARGET_JOB_NAME = NAME_TARGET_JOB_NAME;
-
- private PigeonParamsConstants() {
- }
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTask.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTask.java
deleted file mode 100644
index 55af378e83..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTask.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-import org.apache.dolphinscheduler.common.utils.JSONUtils;
-import org.apache.dolphinscheduler.plugin.task.api.AbstractRemoteTask;
-import org.apache.dolphinscheduler.plugin.task.api.TaskCallBack;
-import org.apache.dolphinscheduler.plugin.task.api.TaskConstants;
-import org.apache.dolphinscheduler.plugin.task.api.TaskException;
-import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
-import
org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpEntity;
-import org.apache.http.StatusLine;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import lombok.extern.slf4j.Slf4j;
-
-import org.java_websocket.client.WebSocketClient;
-import org.java_websocket.handshake.ServerHandshake;
-
-/**
- * TIS DataX Task
- **/
-@Slf4j
-public class PigeonTask extends AbstractRemoteTask {
-
- public static final String KEY_POOL_VAR_PIGEON_HOST = "p_host";
- private final TaskExecutionContext taskExecutionContext;
-
- private PigeonParameters parameters;
- private BizResult triggerResult;
- private final PigeonConfig config;
-
- public PigeonTask(TaskExecutionContext taskExecutionContext) {
- super(taskExecutionContext);
- this.taskExecutionContext = taskExecutionContext;
- this.config = PigeonConfig.getInstance();
- }
-
- @Override
- public List<String> getApplicationIds() throws TaskException {
- return Collections.emptyList();
- }
-
- @Override
- public void init() throws TaskException {
- super.init();
- parameters =
JSONUtils.parseObject(taskExecutionContext.getTaskParams(),
PigeonParameters.class);
- log.info("Initialize PIGEON task params {}",
JSONUtils.toPrettyJsonString(parameters));
- if (parameters == null || !parameters.checkParameters()) {
- throw new TaskException("datax task params is not valid");
- }
- }
-
- // todo split handle to submit and track
- @Override
- public void handle(TaskCallBack taskCallBack) throws TaskException {
- // Trigger PIGEON DataX pipeline
- log.info("start execute PIGEON task");
- long startTime = System.currentTimeMillis();
- String targetJobName = this.parameters.getTargetJobName();
- String host = getHost();
- try {
- final String triggerUrl = getTriggerUrl();
- final String getStatusUrl = config.getJobStatusUrl(host);
- HttpPost post = new HttpPost(triggerUrl);
- post.addHeader("appname", targetJobName);
- addFormUrlencoded(post);
- StringEntity entity = new
StringEntity(config.getJobTriggerPostBody(), StandardCharsets.UTF_8);
- post.setEntity(entity);
- ExecResult execState = null;
- int taskId;
- WebSocketClient webSocket = null;
- try (
- CloseableHttpClient client = HttpClients.createDefault();
- // trigger to start PIGEON dataX task
- CloseableHttpResponse response = client.execute(post)) {
- triggerResult = processResponse(triggerUrl, response,
BizResult.class);
- if (!triggerResult.isSuccess()) {
- List<String> errormsg = triggerResult.getErrormsg();
- StringBuffer errs = new StringBuffer();
- if (CollectionUtils.isNotEmpty(errormsg)) {
-
errs.append(",errs:").append(errormsg.stream().collect(Collectors.joining(",")));
- }
- throw new Exception("trigger PIGEON job faild taskName:" +
targetJobName + errs.toString());
- }
- taskId = triggerResult.getBizresult().getTaskid();
-
- webSocket = receiveRealtimeLog(host, targetJobName, taskId);
-
- setAppIds(String.valueOf(taskId));
-
- CloseableHttpResponse status = null;
-
- while (true) {
- try {
- post = new HttpPost(getStatusUrl);
- entity = new StringEntity("{\n taskid: " + taskId +
"\n, log: false }", StandardCharsets.UTF_8);
- post.setEntity(entity);
- status = client.execute(post);
- StatusResult execStatus =
processResponse(getStatusUrl, status, StatusResult.class);
- Map bizresult = execStatus.getBizresult();
- Map s = (Map) bizresult.get("status");
- execState = ExecResult.parse((Integer) s.get("state"));
- if (execState == ExecResult.SUCCESS || execState ==
ExecResult.FAILD) {
- break;
- }
- Thread.sleep(3000);
- } finally {
- status.close();
- }
- }
- } finally {
- if (webSocket != null) {
- Thread.sleep(4000);
- try {
- webSocket.close();
- } catch (Throwable e) {
- log.warn(e.getMessage(), e);
- }
- }
- }
-
- long costTime = System.currentTimeMillis() - startTime;
- log.info("PIGEON task: {},taskId:{} costTime : {} milliseconds,
statusCode : {}",
- targetJobName, taskId, costTime, (execState ==
ExecResult.SUCCESS) ? "'success'" : "'failure'");
- setExitStatusCode((execState == ExecResult.SUCCESS) ?
TaskConstants.EXIT_CODE_SUCCESS
- : TaskConstants.EXIT_CODE_FAILURE);
- } catch (Exception e) {
- log.error("execute PIGEON dataX faild,PIGEON task name:" +
targetJobName, e);
- setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
- if (e instanceof InterruptedException) {
- Thread.currentThread().interrupt();
- }
- throw new TaskException("Execute pigeon task failed", e);
- }
- }
-
- @Override
- public void submitApplication() throws TaskException {
-
- }
-
- @Override
- public void trackApplicationStatus() throws TaskException {
-
- }
-
- private void addFormUrlencoded(HttpPost post) {
- post.addHeader("content-type", "application/x-www-form-urlencoded");
- }
-
- @Override
- public void cancelApplication() throws TaskException {
- log.info("start to cancelApplication");
- Objects.requireNonNull(triggerResult, "triggerResult can not be null");
- log.info("start to cancelApplication taskId:{}",
triggerResult.getTaskId());
- final String triggerUrl = getTriggerUrl();
-
- StringEntity entity =
- new
StringEntity(config.getJobCancelPostBody(triggerResult.getTaskId()),
StandardCharsets.UTF_8);
-
- CancelResult cancelResult = null;
- HttpPost post = new HttpPost(triggerUrl);
- addFormUrlencoded(post);
- post.setEntity(entity);
- try (
- CloseableHttpClient client = HttpClients.createDefault();
- // trigger to start TIS dataX task
- CloseableHttpResponse response = client.execute(post)) {
- cancelResult = processResponse(triggerUrl, response,
CancelResult.class);
- if (!cancelResult.isSuccess()) {
- List<String> errormsg = triggerResult.getErrormsg();
- StringBuffer errs = new StringBuffer();
- if (CollectionUtils.isNotEmpty(errormsg)) {
-
errs.append(",errs:").append(errormsg.stream().collect(Collectors.joining(",")));
- }
- throw new TaskException("cancel PIGEON job faild taskId:" +
triggerResult.getTaskId() + errs);
- }
- } catch (ClientProtocolException e) {
- throw new TaskException("client protocol error", e);
- } catch (Exception e) {
- throw new TaskException("pigeon execute error", e);
- }
- }
-
- private String getTriggerUrl() {
- final String tisHost = getHost();
- return config.getJobTriggerUrl(tisHost);
- }
-
- private String getHost() {
- final String host =
taskExecutionContext.getDefinedParams().get(KEY_POOL_VAR_PIGEON_HOST);
- if (StringUtils.isEmpty(host)) {
- throw new IllegalStateException("global var '" +
KEY_POOL_VAR_PIGEON_HOST + "' can not be empty");
- }
- return host;
- }
-
- private WebSocketClient receiveRealtimeLog(final String tisHost, String
dataXName, int taskId) throws Exception {
- final String applyURI = config.getJobLogsFetchUrl(tisHost, dataXName,
taskId);
- log.info("apply ws connection,uri:{}", applyURI);
- WebSocketClient webSocketClient = new WebSocketClient(new
URI(applyURI)) {
-
- @Override
- public void onOpen(ServerHandshake handshakedata) {
- log.info("start to receive remote execute log");
- }
-
- @Override
- public void onMessage(String message) {
- ExecLog execLog = JSONUtils.parseObject(message,
ExecLog.class);
- log.info(execLog.getMsg());
- }
-
- @Override
- public void onClose(int code, String reason, boolean remote) {
- log.info("stop to receive remote log,reason:{},taskId:{}",
reason, taskId);
- }
-
- @Override
- public void onError(Exception t) {
- log.error(t.getMessage(), t);
- }
- };
- webSocketClient.connect();
- return webSocketClient;
- }
-
- private <T extends AjaxResult> T processResponse(String applyUrl,
CloseableHttpResponse response,
- Class<T> clazz) throws
Exception {
- StatusLine resStatus = response.getStatusLine();
- if (HttpURLConnection.HTTP_OK != resStatus.getStatusCode()) {
- throw new IllegalStateException("request server " + applyUrl + "
faild:" + resStatus.getReasonPhrase());
- }
- HttpEntity entity = response.getEntity();
- String resp = EntityUtils.toString(entity, StandardCharsets.UTF_8);
- T result = JSONUtils.parseObject(resp, clazz);
- return result;
- }
-
- @Override
- public AbstractParameters getParameters() {
- Objects.requireNonNull(this.parameters, "tisParameters can not be
null");
- return this.parameters;
- }
-
- private static class CancelResult extends AjaxResult<Object> {
-
- private Object bizresult;
-
- @Override
- public Object getBizresult() {
- return this.bizresult;
- }
-
- public void setBizresult(Object bizresult) {
- this.bizresult = bizresult;
- }
- }
-
- private static class BizResult extends AjaxResult<TriggerBuildResult> {
-
- private TriggerBuildResult bizresult;
-
- @Override
- public TriggerBuildResult getBizresult() {
- return this.bizresult;
- }
-
- public int getTaskId() {
- return bizresult.taskid;
- }
-
- public void setBizresult(TriggerBuildResult bizresult) {
- this.bizresult = bizresult;
- }
- }
-
- private static class StatusResult extends AjaxResult<Map> {
-
- private Map bizresult;
-
- @Override
- public Map getBizresult() {
- return this.bizresult;
- }
-
- public void setBizresult(Map bizresult) {
- this.bizresult = bizresult;
- }
- }
-
- private abstract static class AjaxResult<T> {
-
- private boolean success;
-
- private List<String> errormsg;
-
- private List<String> msg;
-
- public abstract T getBizresult();
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List<String> getErrormsg() {
- return this.errormsg;
- }
-
- public void setErrormsg(List<String> errormsg) {
- this.errormsg = errormsg;
- }
-
- public List<String> getMsg() {
- return this.msg;
- }
-
- public void setMsg(List<String> msg) {
- this.msg = msg;
- }
-
- }
-
- private static class TriggerBuildResult {
-
- private int taskid;
-
- public int getTaskid() {
- return taskid;
- }
-
- public void setTaskid(int taskid) {
- this.taskid = taskid;
- }
- }
-
- private enum ExecResult {
-
- SUCCESS(1), FAILD(-1), DOING(2), ASYN_DOING(22), CANCEL(3);
-
- private final int value;
-
- public static ExecResult parse(int value) {
- for (ExecResult r : values()) {
- if (r.value == value) {
- return r;
- }
- }
- throw new IllegalStateException("vale:" + value + " is illegal");
- }
-
- private ExecResult(int value) {
- this.value = value;
- }
-
- public int getValue() {
- return this.value;
- }
- }
-
- private static class ExecLog {
-
- private String logType;
- private String msg;
- private int taskId;
-
- public String getLogType() {
- return logType;
- }
-
- public void setLogType(String logType) {
- this.logType = logType;
- }
-
- public String getMsg() {
- return msg;
- }
-
- public void setMsg(String msg) {
- this.msg = msg;
- }
-
- public int getTaskId() {
- return taskId;
- }
-
- public void setTaskId(int taskId) {
- this.taskId = taskId;
- }
- }
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskChannel.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskChannel.java
deleted file mode 100644
index 112f087a57..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskChannel.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-import org.apache.dolphinscheduler.common.utils.JSONUtils;
-import org.apache.dolphinscheduler.plugin.task.api.AbstractTask;
-import org.apache.dolphinscheduler.plugin.task.api.TaskChannel;
-import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
-import
org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class PigeonTaskChannel implements TaskChannel {
-
- @Override
- public AbstractTask createTask(TaskExecutionContext taskRequest) {
- return new PigeonTask(taskRequest);
- }
-
- @Override
- public AbstractParameters parseParameters(String taskParams) {
- return JSONUtils.parseObject(taskParams, PigeonParameters.class);
- }
-
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskChannelFactory.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskChannelFactory.java
deleted file mode 100644
index 584f131a42..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskChannelFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-import org.apache.dolphinscheduler.plugin.task.api.TaskChannel;
-import org.apache.dolphinscheduler.plugin.task.api.TaskChannelFactory;
-
-import com.google.auto.service.AutoService;
-
-@AutoService(TaskChannelFactory.class)
-public class PigeonTaskChannelFactory implements TaskChannelFactory {
-
- @Override
- public TaskChannel create() {
- return new PigeonTaskChannel();
- }
-
- @Override
- public String getName() {
- return "PIGEON";
- }
-
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/resources/org/apache/dolphinscheduler/plugin/task/pigeon/config.properties
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/resources/org/apache/dolphinscheduler/plugin/task/pigeon/config.properties
deleted file mode 100644
index c54e53ad41..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/main/resources/org/apache/dolphinscheduler/plugin/task/pigeon/config.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-job.trigger.url=http://%s/tjs/coredefine/coredefine.ajax
-job.trigger.post.body=action=datax_action&emethod=trigger_fullbuild_task
-
-job.cancel.post.body=action=core_action&event_submit_do_cancel_task=y&taskid=%s
-
-job.status.url=http://%s/tjs/config/config.ajax?action=collection_action&emethod=get_task_status
-job.status.post.body={\n taskid: %s\n, log: false }
-
-job.logs.fetch.url=ws://%s/tjs/download/logfeedback?logtype=full&collection=%s&taskid=%s
\ No newline at end of file
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/test/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/test/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.java
deleted file mode 100644
index 3eed4c20c4..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/test/java/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.plugin.task.pigeon;
-
-import static com.github.dreamhead.moco.Moco.file;
-import static com.github.dreamhead.moco.MocoJsonRunner.jsonHttpServer;
-import static com.github.dreamhead.moco.Runner.running;
-
-import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
-import org.apache.dolphinscheduler.plugin.task.api.enums.TaskExecutionStatus;
-
-import org.apache.commons.io.IOUtils;
-
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Objects;
-import java.util.UUID;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.github.dreamhead.moco.HttpServer;
-
-public class PigeonTaskTest {
-
- private static final Logger logger =
LoggerFactory.getLogger(PigeonTaskTest.class);
- private PigeonTask pigeonTask;
-
- private TaskExecutionContext taskExecutionContext;
-
- @BeforeEach
- public void before() throws Exception {
-
- String taskParams = "{\"targetJobName\":\"mysql_elastic\"}";
-
- taskExecutionContext = Mockito.mock(TaskExecutionContext.class);
-
Mockito.when(taskExecutionContext.getTaskParams()).thenReturn(taskParams);
- Mockito.when(taskExecutionContext.getExecutePath()).thenReturn("/tmp");
-
Mockito.when(taskExecutionContext.getTaskAppId()).thenReturn(UUID.randomUUID().toString());
- Mockito.when(taskExecutionContext.getTenantCode()).thenReturn("root");
-
Mockito.when(taskExecutionContext.getStartTime()).thenReturn(System.currentTimeMillis());
- Mockito.when(taskExecutionContext.getTaskTimeout()).thenReturn(10000);
- Mockito.when(taskExecutionContext.getLogPath()).thenReturn("/tmp/dx");
- // Mockito.when(taskExecutionContext.getVarPool())
- // .thenReturn("[{\"direct\":\"IN\",\"prop\":\"" +
TISTask.KEY_POOL_VAR_TIS_HOST +
- // "\",\"type\":\"VARCHAR\",\"value\":\"127.0.0.1:8080\"}]");
- Map<String, String> gloabParams =
- Collections.singletonMap(PigeonTask.KEY_POOL_VAR_PIGEON_HOST,
"127.0.0.1:8080");
-
Mockito.when(taskExecutionContext.getDefinedParams()).thenReturn(gloabParams);
-
- pigeonTask = new PigeonTask(taskExecutionContext);
- pigeonTask.init();
-
- }
-
- @Test
- public void testGetTISConfigParams() {
- PigeonConfig cfg = PigeonConfig.getInstance();
- String tisHost = "127.0.0.1:8080";
-
Assertions.assertEquals("http://127.0.0.1:8080/tjs/coredefine/coredefine.ajax",
cfg.getJobTriggerUrl(tisHost));
- String jobName = "mysql_elastic";
- int taskId = 123;
- Assertions.assertEquals(
- "ws://" + tisHost +
"/tjs/download/logfeedback?logtype=full&collection=mysql_elastic&taskid=" +
taskId,
- cfg.getJobLogsFetchUrl(tisHost, jobName, taskId));
-
-
Assertions.assertEquals("action=datax_action&emethod=trigger_fullbuild_task",
cfg.getJobTriggerPostBody());
-
- Assertions.assertEquals(
-
"http://127.0.0.1:8080/tjs/config/config.ajax?action=collection_action&emethod=get_task_status",
- cfg.getJobStatusUrl(tisHost));
-
- Assertions.assertEquals("{\n taskid: " + taskId + "\n, log: false }",
cfg.getJobStatusPostBody(taskId));
-
-
Assertions.assertEquals("action=core_action&event_submit_do_cancel_task=y&taskid="
+ taskId,
- cfg.getJobCancelPostBody(taskId));
- }
-
- @Test
- public void testInit() throws Exception {
- try {
- pigeonTask.init();
- } catch (Exception e) {
- Assertions.fail(e.getMessage());
- }
- }
-
- @Test
- public void testHandle() throws Exception {
- HttpServer server = jsonHttpServer(8080,
-
file("src/test/resources/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.json"));
-
- running(server, () -> {
- pigeonTask.handle(null);
-
- Assertions.assertEquals(TaskExecutionStatus.SUCCESS,
pigeonTask.getExitStatus());
- });
- }
-
- private String loadResContent(String resName) {
- try (InputStream i = this.getClass().getResourceAsStream(resName)) {
- Objects.requireNonNull(i, "resource " + resName + " relevant
stream content can not be null");
- String content = IOUtils.toString(i, StandardCharsets.UTF_8);
-
- return content;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- // @Test
- // public void testCancelApplication()
- // throws Exception {
- // try {
- // tisTask.cancelApplication(true);
- // } catch (Exception e) {
- // Assertions.fail(e.getMessage());
- // }
- // }
-
-}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/test/resources/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.json
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/test/resources/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.json
deleted file mode 100644
index 5aef31fd21..0000000000
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pigeon/src/test/resources/org/apache/dolphinscheduler/plugin/task/pigeon/PigeonTaskTest.json
+++ /dev/null
@@ -1,60 +0,0 @@
-[
- {
- "description": "trigger task execute",
- "request": {
- "uri": "/tjs/coredefine/coredefine.ajax",
- "method": "post",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "appname": "mysql_elastic"
- },
- "text": "action=datax_action&emethod=trigger_fullbuild_task"
- },
- "response": {
- "text": "{\n \"success\":true,\n \"errormsg\":[],\n \"msg\":[],\n
\"bizresult\":{\"taskid\": \"1087\"}\n}"
- }
- },
- {
- "description": "Get task execute status",
- "request": {
- "uri": "/tjs/config/config.ajax",
- "method": "post",
- "headers": {
- "Content-Type": "text/plain; charset=UTF-8"
- },
- "queries": {
- "action": "collection_action",
- "emethod": "get_task_status"
- },
- "text": "{\n taskid: 1087\n, log: false }"
- },
- "response": {
- "seq": [
- {
- "text": "{\n \"success\": true,\n \"errormsg\": [\n \"err1\"\n
],\n \"bizresult\": {\n \"status\": {\n \"state\": 2\n }\n }\n}"
- },
- {
- "text": "{\n \"success\": true,\n \"errormsg\": [\n \"err1\"\n
],\n \"bizresult\": {\n \"status\": {\n \"state\": 1\n }\n }\n}"
- }
- ]
- }
- },
- {
- "websocket": {
- "uri": "/tjs/download/logfeedback",
- "connected": "connected",
- "sessions": [
- {
- "request": {
- "text": "logtype=full&collection=mysql_elastic&taskid=1087"
- },
- "response": {
- "broadcast": {
- "content": "{\n \"logType\": \"FULL\",\n \"msg\": \"message
1\",\n \"taskId\": \"1087\"\n}"
- }
- }
- }
- ]
- }
- }
-]
\ No newline at end of file
diff --git a/dolphinscheduler-task-plugin/pom.xml
b/dolphinscheduler-task-plugin/pom.xml
index f4c1573226..9036e88b67 100644
--- a/dolphinscheduler-task-plugin/pom.xml
+++ b/dolphinscheduler-task-plugin/pom.xml
@@ -40,7 +40,6 @@
<module>dolphinscheduler-task-sql</module>
<module>dolphinscheduler-task-sqoop</module>
<module>dolphinscheduler-task-procedure</module>
- <module>dolphinscheduler-task-pigeon</module>
<module>dolphinscheduler-task-dataquality</module>
<module>dolphinscheduler-task-seatunnel</module>
<module>dolphinscheduler-task-emr</module>
diff --git a/dolphinscheduler-ui/public/images/task-icons/pigeon.png
b/dolphinscheduler-ui/public/images/task-icons/pigeon.png
deleted file mode 100644
index 6fe21d2b1e..0000000000
Binary files a/dolphinscheduler-ui/public/images/task-icons/pigeon.png and
/dev/null differ
diff --git a/dolphinscheduler-ui/public/images/task-icons/pigeon_hover.png
b/dolphinscheduler-ui/public/images/task-icons/pigeon_hover.png
deleted file mode 100644
index d9d651bf5d..0000000000
Binary files a/dolphinscheduler-ui/public/images/task-icons/pigeon_hover.png
and /dev/null differ
diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts
b/dolphinscheduler-ui/src/locales/en_US/project.ts
index bd3b626518..1f366f5393 100644
--- a/dolphinscheduler-ui/src/locales/en_US/project.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/project.ts
@@ -533,7 +533,6 @@ export default {
body_not_contains: 'Content does not contain',
http_parameters_position: 'Http Parameters Position',
target_task_name: 'Target Task Name',
- target_task_name_tips: 'Please enter the Pigeon task name(required)',
datasource_type: 'Datasource types',
datasource_instances: 'Datasource instances',
sql_type: 'SQL Type',
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
index 98494495d2..1f3c2624e3 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
@@ -519,7 +519,6 @@ export default {
body_not_contains: '内容不包含',
http_parameters_position: '参数位置',
target_task_name: '目标任务名',
- target_task_name_tips: '请输入Pigeon任务名(必填)',
datasource_type: '数据源类型',
datasource_instances: '数据源实例',
sql_type: 'SQL类型',
diff --git a/dolphinscheduler-ui/src/store/project/task-type.ts
b/dolphinscheduler-ui/src/store/project/task-type.ts
index 4583335a1a..826f0b13c3 100644
--- a/dolphinscheduler-ui/src/store/project/task-type.ts
+++ b/dolphinscheduler-ui/src/store/project/task-type.ts
@@ -63,9 +63,6 @@ export const TASK_TYPES_MAP = {
DATAX: {
alias: 'DataX'
},
- PIGEON: {
- alias: 'PIGEON'
- },
SQOOP: {
alias: 'SQOOP',
helperLinkDisable: true
diff --git a/dolphinscheduler-ui/src/store/project/types.ts
b/dolphinscheduler-ui/src/store/project/types.ts
index e486bd9c5c..cb48ba8654 100644
--- a/dolphinscheduler-ui/src/store/project/types.ts
+++ b/dolphinscheduler-ui/src/store/project/types.ts
@@ -33,7 +33,6 @@ type TaskType =
| 'DEPENDENT'
| 'HTTP'
| 'DATAX'
- | 'PIGEON'
| 'SQOOP'
| 'CONDITIONS'
| 'DATA_QUALITY'
diff --git
a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
index 9a9dad5476..73348adada 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
@@ -432,10 +432,6 @@ export function formatParams(data: INodeData): {
taskParams.others = data.others
}
- if (data.taskType === 'PIGEON') {
- taskParams.targetJobName = data.targetJobName
- }
-
if (data.taskType === 'HIVECLI') {
taskParams.hiveCliTaskExecutionType = data.hiveCliTaskExecutionType
taskParams.hiveSqlScript = data.hiveSqlScript
diff --git
a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts
b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts
index 41f877d80c..9fbc219b7f 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts
@@ -19,7 +19,6 @@ import { useFlink } from './use-flink'
import { useFlinkStream } from './use-flink-stream'
import { useShell } from './use-shell'
import { useSubProcess } from './use-sub-process'
-import { usePigeon } from './use-pigeon'
import { usePython } from './use-python'
import { useSpark } from './use-spark'
import { useMr } from './use-mr'
@@ -63,7 +62,6 @@ export default {
MR: useMr,
FLINK: useFlink,
HTTP: useHttp,
- PIGEON: usePigeon,
SQL: useSql,
PROCEDURE: useProcedure,
SQOOP: useSqoop,
diff --git
a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-pigeon.ts
b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-pigeon.ts
deleted file mode 100644
index 22b879919b..0000000000
---
a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-pigeon.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { reactive } from 'vue'
-import * as Fields from '../fields/index'
-import type { IJsonItem, INodeData, ITaskData } from '../types'
-
-export function usePigeon({
- projectCode,
- from = 0,
- readonly,
- data
-}: {
- projectCode: number
- from?: number
- readonly?: boolean
- data?: ITaskData
-}) {
- const model = reactive({
- taskType: 'PIGEON',
- name: '',
- flag: 'YES',
- description: '',
- timeoutFlag: false,
- environmentCode: null,
- failRetryInterval: 1,
- failRetryTimes: 0,
- workerGroup: 'default',
- delayTime: 0,
- timeout: 30,
- targetJobName: '',
- timeoutNotifyStrategy: ['WARN']
- } as INodeData)
-
- return {
- json: [
- Fields.useName(from),
- ...Fields.useTaskDefinition({ projectCode, from, readonly, data, model
}),
- Fields.useRunFlag(),
- Fields.useCache(),
- Fields.useDescription(),
- Fields.useTaskPriority(),
- Fields.useWorkerGroup(projectCode),
- Fields.useEnvironmentName(model, !data?.id),
- ...Fields.useTaskGroup(model, projectCode),
- ...Fields.useFailed(),
- Fields.useDelayTime(model),
- ...Fields.useTimeoutAlarm(model),
- Fields.useTargetTaskName(),
- Fields.usePreTasks()
- ] as IJsonItem[],
- model
- }
-}
diff --git a/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts
b/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts
index 9d6e26b640..d6ad7dd288 100644
--- a/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts
@@ -27,7 +27,6 @@ export type TaskType =
| 'DEPENDENT'
| 'HTTP'
| 'DATAX'
- | 'PIGEON'
| 'SQOOP'
| 'CONDITIONS'
| 'DATA_QUALITY'
@@ -97,9 +96,6 @@ export const TASK_TYPES_MAP = {
DATAX: {
alias: 'DataX'
},
- PIGEON: {
- alias: 'PIGEON'
- },
SQOOP: {
alias: 'SQOOP',
helperLinkDisable: true
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss
b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss
index 9bcb2fd7e9..3a57c026c7 100644
---
a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss
+++
b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss
@@ -138,9 +138,6 @@ $bgLight: #ffffff;
&.icon-datax {
background-image: url('/images/task-icons/datax.png');
}
- &.icon-pigeon {
- background-image: url('/images/task-icons/pigeon.png');
- }
&.icon-sqoop {
background-image: url('/images/task-icons/sqoop.png');
}
@@ -254,9 +251,6 @@ $bgLight: #ffffff;
&.icon-datax {
background-image: url('/images/task-icons/datax_hover.png');
}
- &.icon-pigeon {
- background-image: url('/images/task-icons/pigeon_hover.png');
- }
&.icon-sqoop {
background-image: url('/images/task-icons/sqoop_hover.png');
}
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/definition/tree/index.tsx
b/dolphinscheduler-ui/src/views/projects/workflow/definition/tree/index.tsx
index 79252c9e46..4aeee0938f 100644
--- a/dolphinscheduler-ui/src/views/projects/workflow/definition/tree/index.tsx
+++ b/dolphinscheduler-ui/src/views/projects/workflow/definition/tree/index.tsx
@@ -127,11 +127,6 @@ export default defineComponent({
color: '#75CC71',
image: `${import.meta.env.BASE_URL}images/task-icons/datax.png`
},
- {
- taskType: 'PIGEON',
- color: '#5EC459',
- image: `${import.meta.env.BASE_URL}images/task-icons/pigeon.png`
- },
{
taskType: 'SQOOP',
color: '#f98b3d',
diff --git a/tools/dependencies/known-dependencies.txt
b/tools/dependencies/known-dependencies.txt
index 8e76b77767..49b2f1367d 100644
--- a/tools/dependencies/known-dependencies.txt
+++ b/tools/dependencies/known-dependencies.txt
@@ -1,6 +1,5 @@
HdrHistogram-2.1.12.jar
HikariCP-4.0.3.jar
-Java-WebSocket-1.5.1.jar
LatencyUtils-2.0.3.jar
SparseBitSet-1.2.jar
accessors-smart-2.4.8.jar