From a47b4d0672abfdb6c6b867c8743b6af146671453 Mon Sep 17 00:00:00 2001 From: JieguangZhou Date: Thu, 3 Nov 2022 16:33:39 +0800 Subject: [PATCH] [Feature][Task] Transfer files between tasks (#12552) * add data transfer between tasks * add delete DATA_TRANSFER API * convert Result to DeleteDataTransferResponse * add api UT * fix final * fix doc --- docs/configs/docsdev.js | 8 + .../docs/en/guide/parameter/file-parameter.md | 102 +++++++ .../docs/zh/guide/parameter/file-parameter.md | 101 +++++++ .../parameter/file_parameter_input_dir.png | Bin 0 -> 73563 bytes .../parameter/file_parameter_input_file.png | Bin 0 -> 53893 bytes .../dev/parameter/file_parameter_output.png | Bin 0 -> 123982 bytes .../api/controller/ResourcesController.java | 20 ++ .../resources/DeleteDataTransferResponse.java | 33 +++ .../api/service/ResourcesService.java | 9 + .../service/impl/ResourcesServiceImpl.java | 62 ++++ .../api/service/ResourcesServiceTest.java | 48 ++++ dolphinscheduler-bom/pom.xml | 8 + dolphinscheduler-dist/release-docs/LICENSE | 1 + .../release-docs/licenses/LICENSE-zt-zip.txt | 202 +++++++++++++ .../plugin/task/api/enums/DataType.java | 2 +- .../node/fields/use-custom-params.ts | 4 + dolphinscheduler-worker/pom.xml | 5 + .../runner/WorkerTaskExecuteRunnable.java | 5 + .../worker/utils/TaskFilesTransferUtils.java | 270 ++++++++++++++++++ .../utils/TaskFilesTransferUtilsTest.java | 255 +++++++++++++++++ tools/dependencies/known-dependencies.txt | 1 + 21 files changed, 1135 insertions(+), 1 deletion(-) create mode 100644 docs/docs/en/guide/parameter/file-parameter.md create mode 100644 docs/docs/zh/guide/parameter/file-parameter.md create mode 100644 docs/img/new_ui/dev/parameter/file_parameter_input_dir.png create mode 100644 docs/img/new_ui/dev/parameter/file_parameter_input_file.png create mode 100644 docs/img/new_ui/dev/parameter/file_parameter_output.png create mode 100644 dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/DeleteDataTransferResponse.java create mode 100644 dolphinscheduler-dist/release-docs/licenses/LICENSE-zt-zip.txt create mode 100644 dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtils.java create mode 100644 dolphinscheduler-worker/src/test/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtilsTest.java diff --git a/docs/configs/docsdev.js b/docs/configs/docsdev.js index 60b038b3e7..5e44389f87 100644 --- a/docs/configs/docsdev.js +++ b/docs/configs/docsdev.js @@ -238,6 +238,10 @@ export default { title: 'Parameter Priority', link: '/en-us/docs/dev/user_doc/guide/parameter/priority.html', }, + { + title: 'File Parameter', + link: '/en-us/docs/dev/user_doc/guide/parameter/file-parameter.html', + }, ], }, { @@ -890,6 +894,10 @@ export default { title: '参数优先级', link: '/zh-cn/docs/dev/user_doc/guide/parameter/priority.html', }, + { + title: '文件参数传递', + link: '/zh-cn/docs/dev/user_doc/guide/parameter/file-parameter.html', + }, ], }, { diff --git a/docs/docs/en/guide/parameter/file-parameter.md b/docs/docs/en/guide/parameter/file-parameter.md new file mode 100644 index 0000000000..4ba9b30424 --- /dev/null +++ b/docs/docs/en/guide/parameter/file-parameter.md @@ -0,0 +1,102 @@ +# FILE Parameter + +Use the file parameter to pass files (or folders, hereinafter referred to as **files**) in the working directory of the upstream task to the downstream task in the same workflow instance. The following scenarios may be used + +- In the ETL task, pass the data files processed by multiple upstream tasks to a specific downstream task. +- In the machine learning scenario, pass the data set file of the upstream data preparation task to the downstream model training task. + +## Usage + +### Configure file parameter + +File parameter configuration method: click the plus sign on the right side of "Custom Parameters" on the task definition page to configure. + +### Output file to downstream task + +**Four options of custom parameters are:** + +- Parameter name: the identifier used when passing tasks, such as `KEY1` and `KEY2` in the figure below +- Direction: OUT, which means outputting the file to the downstream task +- Parameter type: FILE, indicating file parameter +- Parameter value: output file path, such as `data` and `data/test2/text.txt` in the figure below + +The configuration in the figure below indicates that the `output` task passes two file data to the downstream task, respectively: + +- Pass out the folder `data`, and mark it as `dir-data`. The downstream task can get this folder through `output.dir-data` +- Pass out the file `data/test2/text.txt`, and mark it as `file-text`. The downstream task can get this folder through `output.file-text` + +![img.png](../../../../img/new_ui/dev/parameter/file_parameter_output.png) + +### Get the file from the upstream task + +**Four options of custom parameters are:** + +- Parameter name: the position where the upstream file is saved after input, such as `input_dir` used in the figure below +- Direction: IN, which means to get the file from the upstream task +- Parameter type: FILE, indicating file parameter +- Parameter value: the identifier of the upstream file, in the format of `taskName.KEY`. For example, `output.dir-data` in the figure below, where `output` is the name of the upstream task, and `dir-data` is the file identifier output by the upstream task + +The configuration in the figure below indicates that the task gets the folder identified by `dir-data` from the upstream task `output` and saves it as `input_dir` + +![img.png](../../../../img/new_ui/dev/parameter/file_parameter_input_dir.png) + +The configuration in the figure below indicates that the task gets the file identified by `file-text` from the upstream task `output` and saves it as `input.txt` + +![img.png](../../../../img/new_ui/dev/parameter/file_parameter_input_file.png) + +## Other + +### Note + +- The file transfer between upstream and downstream tasks is based on the resource center as a transfer, and the data is saved in the `DATA_TRANSFER` directory of the resource center. Therefore, **the resource center function must be enabled**, please refer to [Resource Center Configuration Details](../resource/configuration.md) for details, otherwise the file parameter function cannot be used. +- The file naming rule is `DATA_TRANSFER/DATE/ProcessDefineCode/ProcessDefineVersion_ProcessInstanceID/TaskName_TaskInstanceID_FileName` +- If the transferred file data is a folder, it will be packaged into a compressed file with a suffix of `.zip` and uploaded. The downstream task will unzip and save it in the corresponding directory after receiving it +- If you need to delete the file data, you can delete the corresponding folder in the `DATA_TRANSFER` directory of the resource center. If you delete the date subdirectory directly, all the file data under that date will be deleted. You can also use the [Open API interface](../open-api.md) (`resources/data-transfer`) to delete the corresponding file data (delete data N days ago). +- If there is a task chain task1->task2->tas3, then the downstream task task3 can also get the file data of task1 +- Support one-to-many transmission and many-to-one transmission +- If you frequently transfer a large number of files, it is obvious that the system IO performance will be affected by the amount of transferred data + +### Example + +You can save the following YAML file locally and then execute `pydolphinscheduler yaml -f data-transfer.yaml` to run the Demo. + +```yaml +# Define the workflow +workflow: + name: "data-transfer" + run: true + +# Define the tasks under the workflow +tasks: + - name: output + task_type: Shell + command: | + mkdir -p data/test1 data/test2 + echo "test1 message" >> data/test1/text.txt + echo "test2 message" >> data/test2/text.txt + tree . + local_params: + - { "prop": "dir-data", "direct": "OUT", "type": "FILE", "value": "data" } + - { "prop": "file-text", "direct": "OUT", "type": "FILE", "value": "data/test2/text.txt" } + + - name: input_dir + task_type: Shell + deps: [output] + command: | + tree . + cat input_dir/test1/text.txt + cat input_dir/test2/text.txt + local_params: + - { "prop": "input_dir", "direct": "IN", "type": "FILE", "value": "output.dir-data" } + + + - name: input_file + task_type: Shell + deps: [output] + command: | + tree . + cat input.txt + local_params: + - { "prop": "input.txt", "direct": "IN", "type": "FILE", "value": "output.file-text" } +``` + diff --git a/docs/docs/zh/guide/parameter/file-parameter.md b/docs/docs/zh/guide/parameter/file-parameter.md new file mode 100644 index 0000000000..6ddfcbf44e --- /dev/null +++ b/docs/docs/zh/guide/parameter/file-parameter.md @@ -0,0 +1,101 @@ +# 文件参数 + +通过配置文件参数,在同一工作流实例中,可以将上游任务工作目录下的文件(或文件夹,下统一以**文件**代替)传递给下游任务。 如以下场景可能使用到 + +- 在ETL任务中,将多个上游任务处理好的数据文件一起传递给特定的下游任务。 +- 在机器学习场景中,将上游数据准备任务的数据集文件传递给下游模型训练任务。 + +## 使用方式 + +### 配置文件参数 + +文件参数配置方式如下:在任务定义页面,点击“自定义参数”右边的加号,即可进行配置。 + +### 输出文件给下游任务 + +**自定义参数四个选项分别为:** + +- 参数名:任务间传递时使用的标识,如下图中使用的`KEY1`和`KEY2` +- 方向:OUT, 则表示输出文件给下游任务 +- 参数类型:FILE, 表示文件参数 +- 参数值:输出的文件路径,如下图中的`data`和`data/test2/text.txt` + +下图的配置表示任务`output`向下游任务传递两个文件数据,分别为: +- 传出文件夹 `data`, 并标记为`dir-data`, 下游任务可以通过`output.dir-data`获取该文件夹 +- 传出文件 `data/test2/text.txt`, 并标记为`file-text`, 下游任务可以通过`output.file-text`获取该文件夹 + +![img.png](../../../../img/new_ui/dev/parameter/file_parameter_output.png) + +### 获取上游任务的文件 + +**自定义参数四个选项分别为:** + +- 参数名:上游文件输入后保存的位置,如下图中使用的`input_dir` +- 方向:IN, 则表示从上游任务获取文件 +- 参数类型:FILE, 表示文件参数 +- 参数值:上游文件的标识,为 `taskName.KEY` 的格式 如下图中的`output.dir-data`, 其中`output`为上游任务的名称,`dir-data`为上游任务中输出的文件标识 + +下图的配置表示任务从上游任务`output`中获取标识为`dir-data`的文件夹,并保存为`input_dir` + +![img.png](../../../../img/new_ui/dev/parameter/file_parameter_input_dir.png) + +下图的配置表示任务从上游任务`output`中获取标识为`file-text`的文件,并保存为`input.txt` + +![img.png](../../../../img/new_ui/dev/parameter/file_parameter_input_file.png) + +## 其他 + +### 备注 + +- 上下游任务间的文件传递基于资源中心作为中转,数据保存在资源中心`DATA_TRANSFER`的目录下, 因此**必须开启资源中心功能**,详情请参考[资源中心配置详情](../resource/configuration.md), 否则无法使用文件参数功能。 +- 文件命名规则为 `DATA_TRANSFER/日期/工作流Code/工作流版本_工作流实例ID/任务名称_任务实例ID_文件名` +- 若传输的文件数据为文件夹,则会打包成后缀为`.zip`的压缩文件再上传,下游任务接到后会解压并保存在对应目录 +- 若需要删除文件数据,可以在资源中心的`DATA_TRANSFER`目录下删除对应文件夹即可, 如直接按照日期子目录删除,会删除该日期下所有的文件数据. 也可以使用`resources/data-transfer`[Open API 接口](../open-api.md)(删除N天前的数据)删除对应文件数据。 +- 如果存在任务链 task1->task2->tas3, 则最下游任务task3也能获取task1的文件数据 +- 支持一对多传输以及多对一传输 +- 如果频繁大量传输文件,毫无疑问会因传输的数据量影响到系统IO性能 + +### 样例 + +你可以保存以下YAML文件到本地,然后执行`pydolphinscheduler yaml -f data-transfer.yaml`即可运行Demo. + +```yaml +# Define the workflow +workflow: + name: "data-transfer" + run: true + +# Define the tasks under the workflow +tasks: + - name: output + task_type: Shell + command: | + mkdir -p data/test1 data/test2 + echo "test1 message" >> data/test1/text.txt + echo "test2 message" >> data/test2/text.txt + tree . + local_params: + - { "prop": "dir-data", "direct": "OUT", "type": "FILE", "value": "data" } + - { "prop": "file-text", "direct": "OUT", "type": "FILE", "value": "data/test2/text.txt" } + + - name: input_dir + task_type: Shell + deps: [output] + command: | + tree . + cat input_dir/test1/text.txt + cat input_dir/test2/text.txt + local_params: + - { "prop": "input_dir", "direct": "IN", "type": "FILE", "value": "output.dir-data" } + + + - name: input_file + task_type: Shell + deps: [output] + command: | + tree . + cat input.txt + local_params: + - { "prop": "input.txt", "direct": "IN", "type": "FILE", "value": "output.file-text" } +``` + diff --git a/docs/img/new_ui/dev/parameter/file_parameter_input_dir.png b/docs/img/new_ui/dev/parameter/file_parameter_input_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..e510782585e09559720ff03cfcc9265cae862342 GIT binary patch literal 73563 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 WT|~#^sDxqwKZ>%-GR0EwKL39l6rQpG literal 0 HcmV?d00001 diff --git a/docs/img/new_ui/dev/parameter/file_parameter_input_file.png b/docs/img/new_ui/dev/parameter/file_parameter_input_file.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2f13133cdedf3f6469c71796e91cd39b22d67d GIT binary patch literal 53893 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

XSZeB$CrDQ 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 TUa9RBlyk|{;yn7?jp+XiSG=y5 literal 0 HcmV?d00001 diff --git a/docs/img/new_ui/dev/parameter/file_parameter_output.png b/docs/img/new_ui/dev/parameter/file_parameter_output.png new file mode 100644 index 0000000000000000000000000000000000000000..48bece4f6791b3030bf2eb6419b639960b2d190d GIT binary patch literal 123982 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 successList; + + private List failedList; + +} diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java index c0c7a7d211..753e293a73 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java @@ -17,6 +17,7 @@ package org.apache.dolphinscheduler.api.service; +import org.apache.dolphinscheduler.api.dto.resources.DeleteDataTransferResponse; import org.apache.dolphinscheduler.api.utils.Result; import org.apache.dolphinscheduler.common.enums.ProgramType; import org.apache.dolphinscheduler.dao.entity.Resource; @@ -230,6 +231,14 @@ public interface ResourcesService { */ Resource queryResourcesFileInfo(String userName, String fullName); + /** + * delete DATA_TRANSFER data in resource center + * + * @param loginUser user who query resource + * @param days number of days + */ + DeleteDataTransferResponse deleteDataTransferData(User loginUser, Integer days); + /** * unauthorized file * diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java index d82a0e4b7d..91aff2347f 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java @@ -26,6 +26,7 @@ import static org.apache.dolphinscheduler.common.constants.Constants.FORMAT_S_S; import static org.apache.dolphinscheduler.common.constants.Constants.JAR; import static org.apache.dolphinscheduler.common.constants.Constants.PERIOD; +import org.apache.dolphinscheduler.api.dto.resources.DeleteDataTransferResponse; import org.apache.dolphinscheduler.api.dto.resources.ResourceComponent; import org.apache.dolphinscheduler.api.dto.resources.filter.ResourceFilter; import org.apache.dolphinscheduler.api.dto.resources.visitor.ResourceTreeVisitor; @@ -71,9 +72,12 @@ import org.apache.commons.beanutils.BeanMap; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import java.io.File; import java.io.IOException; import java.rmi.ServerException; import java.text.MessageFormat; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -1871,6 +1875,64 @@ public class ResourcesServiceImpl extends BaseServiceImpl implements ResourcesSe return (Resource) resourceResponse.getData(); } + @Override + public DeleteDataTransferResponse deleteDataTransferData(User loginUser, Integer days) { + DeleteDataTransferResponse result = new DeleteDataTransferResponse(); + + User user = userMapper.selectById(loginUser.getId()); + if (user == null) { + logger.error("user {} not exists", loginUser.getId()); + putMsg(result, Status.USER_NOT_EXIST, loginUser.getId()); + return result; + } + + Tenant tenant = tenantMapper.queryById(user.getTenantId()); + if (tenant == null) { + logger.error("tenant not exists"); + putMsg(result, Status.CURRENT_LOGIN_USER_TENANT_NOT_EXIST); + return result; + } + + String tenantCode = tenant.getTenantCode(); + + String baseFolder = storageOperate.getResourceFileName(tenantCode, "DATA_TRANSFER"); + + LocalDateTime now = LocalDateTime.now(); + now = now.minus(days, ChronoUnit.DAYS); + String deleteDate = now.toLocalDate().toString().replace("-", ""); + List storageEntities; + try { + storageEntities = new ArrayList<>( + storageOperate.listFilesStatus(baseFolder, baseFolder, tenantCode, ResourceType.FILE)); + } catch (Exception e) { + logger.error("delete data transfer data error", e); + putMsg(result, Status.DELETE_RESOURCE_ERROR); + return result; + } + + List successList = new ArrayList<>(); + List failList = new ArrayList<>(); + + for (StorageEntity storageEntity : storageEntities) { + File path = new File(storageEntity.getFullName()); + String date = path.getName(); + if (date.compareTo(deleteDate) <= 0) { + try { + storageOperate.delete(storageEntity.getFullName(), true); + successList.add(storageEntity.getFullName()); + } catch (Exception ex) { + logger.error("delete data transfer data {} error, please delete it manually", date, ex); + failList.add(storageEntity.getFullName()); + } + } + } + + result.setSuccessList(successList); + result.setFailedList(failList); + putMsg(result, Status.SUCCESS); + return result; + } + /** * unauthorized file * diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java index ecfbc72548..21f0a08d21 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.api.service; import static org.mockito.ArgumentMatchers.eq; +import org.apache.dolphinscheduler.api.dto.resources.DeleteDataTransferResponse; import org.apache.dolphinscheduler.api.enums.Status; import org.apache.dolphinscheduler.api.permission.ResourcePermissionCheckService; import org.apache.dolphinscheduler.api.service.impl.BaseServiceImpl; @@ -46,6 +47,7 @@ import org.apache.dolphinscheduler.spi.enums.ResourceType; import org.apache.commons.collections.CollectionUtils; import java.io.IOException; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -876,6 +878,52 @@ public class ResourcesServiceTest { Assertions.assertTrue(CollectionUtils.isNotEmpty(resources)); } + @Test + public void testDeleteDataTransferData() throws Exception { + User user = getUser(); + Mockito.when(userMapper.selectById(user.getId())).thenReturn(getUser()); + Mockito.when(tenantMapper.queryById(user.getTenantId())).thenReturn(getTenant()); + + StorageEntity storageEntity1 = Mockito.mock(StorageEntity.class); + StorageEntity storageEntity2 = Mockito.mock(StorageEntity.class); + StorageEntity storageEntity3 = Mockito.mock(StorageEntity.class); + StorageEntity storageEntity4 = Mockito.mock(StorageEntity.class); + StorageEntity storageEntity5 = Mockito.mock(StorageEntity.class); + + Mockito.when(storageEntity1.getFullName()).thenReturn("DATA_TRANSFER/20220101"); + Mockito.when(storageEntity2.getFullName()).thenReturn("DATA_TRANSFER/20220102"); + Mockito.when(storageEntity3.getFullName()).thenReturn("DATA_TRANSFER/20220103"); + Mockito.when(storageEntity4.getFullName()).thenReturn("DATA_TRANSFER/20220104"); + Mockito.when(storageEntity5.getFullName()).thenReturn("DATA_TRANSFER/20220105"); + + List storageEntityList = new ArrayList<>(); + storageEntityList.add(storageEntity1); + storageEntityList.add(storageEntity2); + storageEntityList.add(storageEntity3); + storageEntityList.add(storageEntity4); + storageEntityList.add(storageEntity5); + + Mockito.when(storageOperate.listFilesStatus(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(storageEntityList); + + LocalDateTime localDateTime = LocalDateTime.of(2022, 1, 5, 0, 0, 0); + try (MockedStatic mockHook = Mockito.mockStatic(LocalDateTime.class)) { + mockHook.when(LocalDateTime::now).thenReturn(localDateTime); + DeleteDataTransferResponse response = resourcesService.deleteDataTransferData(user, 3); + + Assertions.assertEquals(response.getSuccessList().size(), 2); + Assertions.assertEquals(response.getSuccessList().get(0), "DATA_TRANSFER/20220101"); + Assertions.assertEquals(response.getSuccessList().get(1), "DATA_TRANSFER/20220102"); + } + + try (MockedStatic mockHook = Mockito.mockStatic(LocalDateTime.class)) { + mockHook.when(LocalDateTime::now).thenReturn(localDateTime); + DeleteDataTransferResponse response = resourcesService.deleteDataTransferData(user, 0); + Assertions.assertEquals(response.getSuccessList().size(), 5); + } + + } + @Test public void testCatFile() { diff --git a/dolphinscheduler-bom/pom.xml b/dolphinscheduler-bom/pom.xml index 668a9b0ada..f33032e880 100644 --- a/dolphinscheduler-bom/pom.xml +++ b/dolphinscheduler-bom/pom.xml @@ -99,6 +99,7 @@ 2.17.282 1.6.9 1.9.7 + 1.15 @@ -771,6 +772,13 @@ springdoc-openapi-ui ${springdoc-openapi-ui.version} + + + org.zeroturnaround + zt-zip + ${zt-zip.version} + + diff --git a/dolphinscheduler-dist/release-docs/LICENSE b/dolphinscheduler-dist/release-docs/LICENSE index 84502593dc..fc1ae6aa65 100644 --- a/dolphinscheduler-dist/release-docs/LICENSE +++ b/dolphinscheduler-dist/release-docs/LICENSE @@ -498,6 +498,7 @@ The text of each license is also included at licenses/LICENSE-[project].txt. sdk-core 2.17.282: https://mvnrepository.com/artifact/software.amazon.awssdk/sdk-core/2.17.282, Apache 2.0 third-party-jackson-core 2.17.282: https://mvnrepository.com/artifact/software.amazon.awssdk/third-party-jackson-core/2.17.282, Apache 2.0 utils 2.17.282: https://mvnrepository.com/artifact/software.amazon.awssdk/utils/2.17.282, Apache 2.0 + zt-zip 1.15: https://github.com/zeroturnaround/zt-zip/blob/master/LICENSE, Apache 2.0 ======================================================================== BSD licenses diff --git a/dolphinscheduler-dist/release-docs/licenses/LICENSE-zt-zip.txt b/dolphinscheduler-dist/release-docs/licenses/LICENSE-zt-zip.txt new file mode 100644 index 0000000000..c8491cd91a --- /dev/null +++ b/dolphinscheduler-dist/release-docs/licenses/LICENSE-zt-zip.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2012 ZeroTurnaround LLC. + + Licensed 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. \ No newline at end of file diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/enums/DataType.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/enums/DataType.java index 16e0a0aa65..34c26dae5a 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/enums/DataType.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/enums/DataType.java @@ -33,5 +33,5 @@ public enum DataType { * 8 Boolean * 9 list */ - VARCHAR, INTEGER, LONG, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP, BOOLEAN, LIST + VARCHAR, INTEGER, LONG, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP, BOOLEAN, LIST, FILE } diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-custom-params.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-custom-params.ts index fb9d098d45..2052f524fe 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-custom-params.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-custom-params.ts @@ -143,6 +143,10 @@ export const TYPE_LIST = [ { value: 'LIST', label: 'LIST' + }, + { + value: 'FILE', + label: 'FILE' } ] diff --git a/dolphinscheduler-worker/pom.xml b/dolphinscheduler-worker/pom.xml index 50a07e07ac..5386d78263 100644 --- a/dolphinscheduler-worker/pom.xml +++ b/dolphinscheduler-worker/pom.xml @@ -101,6 +101,11 @@ spring-cloud-starter-kubernetes-fabric8-config + + org.zeroturnaround + zt-zip + + diff --git a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerTaskExecuteRunnable.java b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerTaskExecuteRunnable.java index fdbd2fd448..e4ef748eee 100644 --- a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerTaskExecuteRunnable.java +++ b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerTaskExecuteRunnable.java @@ -41,6 +41,7 @@ import org.apache.dolphinscheduler.remote.command.CommandType; import org.apache.dolphinscheduler.server.worker.config.WorkerConfig; import org.apache.dolphinscheduler.server.worker.rpc.WorkerMessageSender; import org.apache.dolphinscheduler.server.worker.utils.TaskExecutionCheckerUtils; +import org.apache.dolphinscheduler.server.worker.utils.TaskFilesTransferUtils; import org.apache.dolphinscheduler.service.alert.AlertClientService; import org.apache.dolphinscheduler.service.storage.StorageOperate; import org.apache.dolphinscheduler.service.task.TaskPluginManager; @@ -221,6 +222,8 @@ public abstract class WorkerTaskExecuteRunnable implements Runnable { TaskExecutionCheckerUtils.downloadResourcesIfNeeded(storageOperate, taskExecutionContext, logger); logger.info("Resources:{} check success", taskExecutionContext.getResources()); + TaskFilesTransferUtils.downloadUpstreamFiles(taskExecutionContext, storageOperate); + TaskChannel taskChannel = taskPluginManager.getTaskChannelMap().get(taskExecutionContext.getTaskType()); if (null == taskChannel) { throw new TaskPluginException(String.format("%s task plugin not found, please check config file.", @@ -261,6 +264,8 @@ public abstract class WorkerTaskExecuteRunnable implements Runnable { taskExecutionContext.setProcessId(task.getProcessId()); taskExecutionContext.setAppIds(task.getAppIds()); taskExecutionContext.setVarPool(JSONUtils.toJsonString(task.getParameters().getVarPool())); + // upload out files and modify the "OUT FILE" property in VarPool + TaskFilesTransferUtils.uploadOutputFiles(taskExecutionContext, storageOperate); workerMessageSender.sendMessageWithRetry(taskExecutionContext, masterAddress, CommandType.TASK_EXECUTE_RESULT); logger.info("Send task execute result to master, the current task status: {}", diff --git a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtils.java b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtils.java new file mode 100644 index 0000000000..9e3238a0d1 --- /dev/null +++ b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtils.java @@ -0,0 +1,270 @@ +/* + * 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.server.worker.utils; + +import org.apache.dolphinscheduler.common.utils.DateUtils; +import org.apache.dolphinscheduler.common.utils.JSONUtils; +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.enums.DataType; +import org.apache.dolphinscheduler.plugin.task.api.enums.Direct; +import org.apache.dolphinscheduler.plugin.task.api.model.Property; +import org.apache.dolphinscheduler.service.storage.StorageOperate; + +import org.apache.commons.lang3.StringUtils; + +import java.io.File; +import java.io.IOException; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.zeroturnaround.zip.ZipUtil; + +import com.fasterxml.jackson.databind.JsonNode; + +public class TaskFilesTransferUtils { + + protected final static Logger logger = LoggerFactory + .getLogger(String.format(TaskConstants.TASK_LOG_LOGGER_NAME_FORMAT, TaskFilesTransferUtils.class)); + + // tmp path in local path for transfer + final static String DOWNLOAD_TMP = ".DT_TMP"; + + // suffix of the package file + final static String PACK_SUFFIX = "_ds_pack.zip"; + + // root path in resource storage + final static String RESOURCE_TAG = "DATA_TRANSFER"; + + private TaskFilesTransferUtils() { + throw new IllegalStateException("Utility class"); + } + + /** + * upload output files to resource storage + * + * @param taskExecutionContext is the context of task + * @param storageOperate is the storage operate + * @throws TaskException TaskException + */ + public static void uploadOutputFiles(TaskExecutionContext taskExecutionContext, + StorageOperate storageOperate) throws TaskException { + List varPools = getVarPools(taskExecutionContext); + // get map of varPools for quick search + Map varPoolsMap = varPools.stream().collect(Collectors.toMap(Property::getProp, x -> x)); + + // get OUTPUT FILE parameters + List localParamsProperty = getFileLocalParams(taskExecutionContext, Direct.OUT); + + if (localParamsProperty.isEmpty()) { + return; + } + + logger.info("Upload output files ..."); + for (Property property : localParamsProperty) { + // get local file path + String srcPath = + packIfDir(String.format("%s/%s", taskExecutionContext.getExecutePath(), property.getValue())); + // get remote file path + String resourcePath = getResourcePath(taskExecutionContext, new File(srcPath).getName()); + try { + // upload file to storage + String resourceWholePath = + storageOperate.getResourceFileName(taskExecutionContext.getTenantCode(), resourcePath); + logger.info("{} --- Local:{} to Remote:{}", property, srcPath, resourceWholePath); + storageOperate.upload(taskExecutionContext.getTenantCode(), srcPath, resourceWholePath, false, true); + } catch (IOException ex) { + throw new TaskException("Upload file to storage error", ex); + } + + // update varPool + Property oriProperty; + // if the property is not in varPool, add it + if (varPoolsMap.containsKey(property.getProp())) { + oriProperty = varPoolsMap.get(property.getProp()); + } else { + oriProperty = new Property(property.getProp(), Direct.OUT, DataType.FILE, property.getValue()); + varPools.add(oriProperty); + } + oriProperty.setProp(String.format("%s.%s", taskExecutionContext.getTaskName(), oriProperty.getProp())); + oriProperty.setValue(resourcePath); + } + taskExecutionContext.setVarPool(JSONUtils.toJsonString(varPools)); + } + + /** + * download upstream files from storage + * only download files which are defined in the task parameters + * + * @param taskExecutionContext is the context of task + * @param storageOperate is the storage operate + * @throws TaskException task exception + */ + public static void downloadUpstreamFiles(TaskExecutionContext taskExecutionContext, StorageOperate storageOperate) { + List varPools = getVarPools(taskExecutionContext); + // get map of varPools for quick search + Map varPoolsMap = varPools.stream().collect(Collectors.toMap(Property::getProp, x -> x)); + + // get "IN FILE" parameters + List localParamsProperty = getFileLocalParams(taskExecutionContext, Direct.IN); + + if (localParamsProperty.isEmpty()) { + return; + } + + String executePath = taskExecutionContext.getExecutePath(); + // data path to download packaged data + String downloadTmpPath = String.format("%s/%s", executePath, DOWNLOAD_TMP); + + logger.info("Download upstream files..."); + for (Property property : localParamsProperty) { + Property inVarPool = varPoolsMap.get(property.getValue()); + if (inVarPool == null) { + logger.error("{} not in {}", property.getValue(), varPoolsMap.keySet()); + throw new TaskException(String.format("Can not find upstream file using %s, please check the key", + property.getValue())); + } + + String resourcePath = inVarPool.getValue(); + String targetPath = String.format("%s/%s", executePath, property.getProp()); + + String downloadPath; + // If the data is packaged, download it to a special directory (DOWNLOAD_TMP) and unpack it to the + // targetPath + boolean isPack = resourcePath.endsWith(PACK_SUFFIX); + if (isPack) { + downloadPath = String.format("%s/%s", downloadTmpPath, new File(resourcePath).getName()); + } else { + downloadPath = targetPath; + } + + try { + String resourceWholePath = + storageOperate.getResourceFileName(taskExecutionContext.getTenantCode(), resourcePath); + logger.info("{} --- Remote:{} to Local:{}", property, resourceWholePath, downloadPath); + storageOperate.download(taskExecutionContext.getTenantCode(), resourceWholePath, downloadPath, false, + true); + } catch (IOException ex) { + throw new TaskException("Download file from storage error", ex); + } + + // unpack if the data is packaged + if (isPack) { + File downloadFile = new File(downloadPath); + logger.info("Unpack {} to {}", downloadPath, targetPath); + ZipUtil.unpack(downloadFile, new File(targetPath)); + } + } + + // delete DownloadTmp Folder if DownloadTmpPath exists + try { + org.apache.commons.io.FileUtils.deleteDirectory(new File(downloadTmpPath)); + } catch (IOException e) { + logger.error("Delete DownloadTmpPath {} failed, this will not affect the task status", downloadTmpPath, e); + } + } + + /** + * get local parameters property which type is FILE and direction is equal to direct + * + * @param taskExecutionContext is the context of task + * @param direct may be Direct.IN or Direct.OUT. + * @return List + */ + public static List getFileLocalParams(TaskExecutionContext taskExecutionContext, Direct direct) { + List localParamsProperty = new ArrayList<>(); + JsonNode taskParams = JSONUtils.parseObject(taskExecutionContext.getTaskParams()); + for (JsonNode localParam : taskParams.get("localParams")) { + Property property = JSONUtils.parseObject(localParam.toString(), Property.class); + + if (property.getDirect().equals(direct) && property.getType().equals(DataType.FILE)) { + localParamsProperty.add(property); + } + } + return localParamsProperty; + } + + /** + * get Resource path for manage files in storage + * + * @param taskExecutionContext is the context of task + * @param fileName is the file name + * @return resource path, RESOURCE_TAG/DATE/ProcessDefineCode/ProcessDefineVersion_ProcessInstanceID/TaskName_TaskInstanceID_FileName + */ + public static String getResourcePath(TaskExecutionContext taskExecutionContext, String fileName) { + String date = + DateUtils.formatTimeStamp(taskExecutionContext.getEndTime(), DateTimeFormatter.ofPattern("yyyyMMdd")); + // get resource Folder: RESOURCE_TAG/DATE/ProcessDefineCode/ProcessDefineVersion_ProcessInstanceID + String resourceFolder = String.format("%s/%s/%d/%d_%d", RESOURCE_TAG, date, + taskExecutionContext.getProcessDefineCode(), taskExecutionContext.getProcessDefineVersion(), + taskExecutionContext.getProcessInstanceId()); + // get resource fileL: resourceFolder/TaskName_TaskInstanceID_FileName + return String.format("%s/%s_%s_%s", resourceFolder, taskExecutionContext.getTaskName().replace(" ", "_"), + taskExecutionContext.getTaskInstanceId(), fileName); + } + + /** + * get varPool from taskExecutionContext + * + * @param taskExecutionContext is the context of task + * @return List + */ + public static List getVarPools(TaskExecutionContext taskExecutionContext) { + List varPools = new ArrayList<>(); + + // get varPool + String varPoolString = taskExecutionContext.getVarPool(); + if (StringUtils.isEmpty(varPoolString)) { + return varPools; + } + // parse varPool + for (JsonNode varPoolData : JSONUtils.parseArray(varPoolString)) { + Property property = JSONUtils.parseObject(varPoolData.toString(), Property.class); + varPools.add(property); + } + return varPools; + } + + /** + * If the path is a directory, pack it and return the path of the package + * + * @param path is the input path, may be a file or a directory + * @return new path + */ + public static String packIfDir(String path) throws TaskException { + File file = new File(path); + if (!file.exists()) { + throw new TaskException(String.format("%s dose not exists", path)); + } + String newPath; + if (file.isDirectory()) { + newPath = file.getPath() + PACK_SUFFIX; + logger.info("Pack {} to {}", path, newPath); + ZipUtil.pack(file, new File(newPath)); + } else { + newPath = path; + } + return newPath; + } +} diff --git a/dolphinscheduler-worker/src/test/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtilsTest.java b/dolphinscheduler-worker/src/test/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtilsTest.java new file mode 100644 index 0000000000..94a6a36ae1 --- /dev/null +++ b/dolphinscheduler-worker/src/test/java/org/apache/dolphinscheduler/server/worker/utils/TaskFilesTransferUtilsTest.java @@ -0,0 +1,255 @@ +/* + * 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.server.worker.utils; + +import org.apache.dolphinscheduler.common.utils.DateUtils; +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.enums.DataType; +import org.apache.dolphinscheduler.plugin.task.api.enums.Direct; +import org.apache.dolphinscheduler.plugin.task.api.model.Property; +import org.apache.dolphinscheduler.service.storage.StorageOperate; + +import org.apache.curator.shaded.com.google.common.io.Files; + +import java.io.File; +import java.io.IOException; +import java.time.format.DateTimeFormatter; +import java.util.List; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.zeroturnaround.zip.ZipUtil; + +public class TaskFilesTransferUtilsTest { + + private final long processDefineCode = 123; + private final int processDefineVersion = 456; + private final int processInstanceId = 678; + private final int taskInstanceId = 789; + private final String taskName = "test"; + + private final String tenantCode = "ubuntu"; + + private long endTime; + + private String exceptTemplate; + + @BeforeEach + void init() { + endTime = System.currentTimeMillis(); + String date = DateUtils.formatTimeStamp(endTime, DateTimeFormatter.ofPattern("yyyyMMdd")); + exceptTemplate = String.format("%s/%s/%d/%d_%d/%s_%d", + TaskFilesTransferUtils.RESOURCE_TAG, + date, + processDefineCode, + processDefineVersion, + processInstanceId, + taskName, + taskInstanceId); + } + + @Test + void testUploadOutputFiles() throws IOException { + File executePath = Files.createTempDir(); + File folderPath = new File(executePath, "data"); + File file = new File(folderPath.getPath() + "/test.txt"); + if (!(folderPath.mkdirs() && file.createNewFile())) { + return; + } + String varPool = "[" + + String.format("{\"prop\":\"folder\",\"direct\":\"OUT\",\"type\":\"FILE\",\"value\":\"%s\"},", + folderPath.getName()) + + + String.format(" {\"prop\":\"file\",\"direct\":\"OUT\",\"type\":\"FILE\",\"value\":\"%s/%s\"},", + folderPath.getName(), file.getName()) + + + "{\"prop\":\"a\",\"direct\":\"OUT\",\"type\":\"VARCHAR\",\"value\":\"a\"}," + + "{\"prop\":\"b\",\"direct\":\"OUT\",\"type\":\"VARCHAR\",\"value\":\"b\"}" + + "]"; + String taskParams = String.format("{\"localParams\": %s}", varPool); + TaskExecutionContext taskExecutionContext = TaskExecutionContext.builder() + .varPool(varPool) + .taskParams(taskParams) + .processInstanceId(processInstanceId) + .processDefineVersion(processDefineVersion) + .processDefineCode(processDefineCode) + .taskInstanceId(taskInstanceId) + .taskName(taskName) + .tenantCode(tenantCode) + .executePath(executePath.toString()) + .endTime(endTime) + .build(); + + List oriProperties = TaskFilesTransferUtils.getVarPools(taskExecutionContext); + + StorageOperate storageOperate = Mockito.mock(StorageOperate.class); + TaskFilesTransferUtils.uploadOutputFiles(taskExecutionContext, storageOperate); + System.out.println(taskExecutionContext.getVarPool()); + + String exceptFolder = + String.format("%s_%s", exceptTemplate, folderPath.getName() + TaskFilesTransferUtils.PACK_SUFFIX); + String exceptFile = String.format("%s_%s", exceptTemplate, file.getName()); + + List properties = TaskFilesTransferUtils.getVarPools(taskExecutionContext); + Assertions.assertEquals(4, properties.size()); + + Assertions.assertEquals(String.format("%s.%s", taskName, "folder"), properties.get(0).getProp()); + Assertions.assertEquals(exceptFolder, properties.get(0).getValue()); + + Assertions.assertEquals(String.format("%s.%s", taskName, "file"), properties.get(1).getProp()); + Assertions.assertEquals(exceptFile, properties.get(1).getValue()); + + Assertions.assertEquals(oriProperties.get(2).getProp(), properties.get(2).getProp()); + Assertions.assertEquals(oriProperties.get(3).getValue(), properties.get(3).getValue()); + + } + + @Test + void testDownloadUpstreamFiles() { + File executePath = Files.createTempDir(); + String folderPath = exceptTemplate + "_folder" + TaskFilesTransferUtils.PACK_SUFFIX; + String filePath = exceptTemplate + "_file"; + String varPool = "[" + + String.format( + "{\"prop\":\"task1.folder\",\"direct\":\"IN\",\"type\":\"FILE\",\"value\":\"%s\"},", folderPath) + + + String.format(" {\"prop\":\"task2.file\",\"direct\":\"IN\",\"type\":\"FILE\",\"value\":\"%s\"},", + filePath) + + + "{\"prop\":\"a\",\"direct\":\"OUT\",\"type\":\"VARCHAR\",\"value\":\"a\"}," + + "{\"prop\":\"b\",\"direct\":\"OUT\",\"type\":\"VARCHAR\",\"value\":\"b\"}" + + "]"; + String varPoolParams = "[" + + "{\"prop\":\"folder\",\"direct\":\"IN\",\"type\":\"FILE\",\"value\":\"task1.folder\"}," + + " {\"prop\":\"file\",\"direct\":\"IN\",\"type\":\"FILE\",\"value\":\"task2.file\"}" + + "]"; + String taskParams = String.format("{\"localParams\": %s}", varPoolParams); + TaskExecutionContext taskExecutionContext = TaskExecutionContext.builder() + .varPool(varPool) + .taskParams(taskParams) + .processInstanceId(processInstanceId) + .processDefineVersion(processDefineVersion) + .processDefineCode(processDefineCode) + .taskInstanceId(taskInstanceId) + .taskName(taskName) + .tenantCode(tenantCode) + .executePath(executePath.toString()) + .endTime(endTime) + .build(); + + StorageOperate storageOperate = Mockito.mock(StorageOperate.class); + Mockito.mockStatic(ZipUtil.class); + Assertions.assertDoesNotThrow( + () -> TaskFilesTransferUtils.downloadUpstreamFiles(taskExecutionContext, storageOperate)); + } + + @Test + void testGetFileLocalParams() { + String taskParams = "{\"localParams\":[" + + "{\"prop\":\"inputFile\",\"direct\":\"IN\",\"type\":\"FILE\",\"value\":\"task1.data\"}," + + "{\"prop\":\"outputFile\",\"direct\":\"OUT\",\"type\":\"FILE\",\"value\":\"data\"}," + + "{\"prop\":\"a\",\"direct\":\"IN\",\"type\":\"VARCHAR\",\"value\":\"a\"}," + + "{\"prop\":\"b\",\"direct\":\"OUT\",\"type\":\"VARCHAR\",\"value\":\"b\"}" + + "]}"; + TaskExecutionContext taskExecutionContext = Mockito.mock(TaskExecutionContext.class); + Mockito.when(taskExecutionContext.getTaskParams()).thenReturn(taskParams); + + List fileLocalParamsIn = TaskFilesTransferUtils.getFileLocalParams(taskExecutionContext, Direct.IN); + Assertions.assertEquals(1, fileLocalParamsIn.size()); + Assertions.assertEquals("inputFile", fileLocalParamsIn.get(0).getProp()); + Assertions.assertEquals("task1.data", fileLocalParamsIn.get(0).getValue()); + + List fileLocalParamsOut = TaskFilesTransferUtils.getFileLocalParams(taskExecutionContext, Direct.OUT); + Assertions.assertEquals(1, fileLocalParamsOut.size()); + Assertions.assertEquals("outputFile", fileLocalParamsOut.get(0).getProp()); + Assertions.assertEquals("data", fileLocalParamsOut.get(0).getValue()); + + } + + @Test + void testGetResourcePath() { + String fileName = "test.txt"; + TaskExecutionContext taskExecutionContext = Mockito.mock(TaskExecutionContext.class); + + Mockito.when(taskExecutionContext.getEndTime()).thenReturn(endTime); + + Mockito.when(taskExecutionContext.getProcessDefineCode()).thenReturn(processDefineCode); + Mockito.when(taskExecutionContext.getProcessDefineVersion()).thenReturn(processDefineVersion); + Mockito.when(taskExecutionContext.getProcessInstanceId()).thenReturn(processInstanceId); + Mockito.when(taskExecutionContext.getTaskInstanceId()).thenReturn(taskInstanceId); + Mockito.when(taskExecutionContext.getTaskName()).thenReturn(taskName); + + String except = String.format("%s_%s", exceptTemplate, fileName); + Assertions.assertEquals(except, TaskFilesTransferUtils.getResourcePath(taskExecutionContext, fileName)); + + } + + @Test + void testGetVarPools() { + String varPoolsString = "[" + + "{\"prop\":\"input\",\"direct\":\"IN\",\"type\":\"FILE\",\"value\":\"task1.output\"}" + + ",{\"prop\":\"a\",\"direct\":\"IN\",\"type\":\"VARCHAR\",\"value\":\"${a}\"}" + + "]"; + TaskExecutionContext taskExecutionContext = Mockito.mock(TaskExecutionContext.class); + Mockito.when(taskExecutionContext.getVarPool()).thenReturn(varPoolsString); + + List varPools = TaskFilesTransferUtils.getVarPools(taskExecutionContext); + Assertions.assertEquals(2, varPools.size()); + + Property varPool0 = varPools.get(0); + Assertions.assertEquals("input", varPool0.getProp()); + Assertions.assertEquals(Direct.IN, varPool0.getDirect()); + Assertions.assertEquals(DataType.FILE, varPool0.getType()); + Assertions.assertEquals("task1.output", varPool0.getValue()); + + Property varPool1 = varPools.get(1); + Assertions.assertEquals("a", varPool1.getProp()); + Assertions.assertEquals(Direct.IN, varPool1.getDirect()); + Assertions.assertEquals(DataType.VARCHAR, varPool1.getType()); + Assertions.assertEquals("${a}", varPool1.getValue()); + + Mockito.when(taskExecutionContext.getVarPool()).thenReturn("[]"); + List varPoolsEmpty = TaskFilesTransferUtils.getVarPools(taskExecutionContext); + Assertions.assertEquals(0, varPoolsEmpty.size()); + + Mockito.when(taskExecutionContext.getVarPool()).thenReturn(null); + List varPoolsNull = TaskFilesTransferUtils.getVarPools(taskExecutionContext); + Assertions.assertEquals(0, varPoolsNull.size()); + + } + + @Test + void testPackIfDir() throws Exception { + File folderPath = Files.createTempDir(); + File file1 = new File(folderPath.getPath() + "/test.txt"); + File file2 = new File(folderPath.getPath() + "/test.zip"); + boolean isSuccess1 = file1.createNewFile(); + boolean isSuccess2 = file2.createNewFile(); + + Assertions.assertTrue(isSuccess1); + Assertions.assertTrue(isSuccess2); + + Assertions.assertEquals(file1.getPath(), TaskFilesTransferUtils.packIfDir(file1.getPath())); + Assertions.assertEquals(file2.getPath(), TaskFilesTransferUtils.packIfDir(file2.getPath())); + + String expectFolderPackPath = folderPath.getPath() + TaskFilesTransferUtils.PACK_SUFFIX; + Assertions.assertEquals(expectFolderPackPath, TaskFilesTransferUtils.packIfDir(folderPath.getPath())); + } +} diff --git a/tools/dependencies/known-dependencies.txt b/tools/dependencies/known-dependencies.txt index 5309687598..73cc2d603b 100644 --- a/tools/dependencies/known-dependencies.txt +++ b/tools/dependencies/known-dependencies.txt @@ -338,6 +338,7 @@ woodstox-core-5.3.0.jar xmlbeans-3.1.0.jar zeppelin-client-0.10.1.jar zeppelin-common-0.10.1.jar +zt-zip-1.15.jar grpc-api-1.41.0.jar grpc-context-1.41.0.jar grpc-core-1.41.0.jar