From 4d530f961219fb32aa010affd36b67789b7a90ba Mon Sep 17 00:00:00 2001
From: break60 <790061044@qq.com>
Date: Mon, 3 Aug 2020 11:10:08 +0800
Subject: [PATCH 1/9] Before creating a workflow, clear the canvas
---
.../src/js/conf/home/pages/dag/_source/dag.js | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
index ff8a4528d5..5a41091029 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
@@ -52,7 +52,9 @@ Dag.prototype.setConfig = function (o) {
*/
Dag.prototype.create = function () {
const self = this
- jsPlumb.ready(() => {
+ let plumbIns = jsPlumb.getInstance()
+ plumbIns.reset()
+ plumbIns.ready(() => {
JSP.init({
dag: this.dag,
instance: this.instance,
@@ -304,7 +306,9 @@ Dag.prototype.backfill = function (arg) {
locationsValue = dataObject
const self = this
- jsPlumb.ready(() => {
+ let plumbIns = jsPlumb.getInstance()
+ plumbIns.reset()
+ plumbIns.ready(() => {
JSP.init({
dag: this.dag,
instance: this.instance,
@@ -326,7 +330,9 @@ Dag.prototype.backfill = function (arg) {
})
} else {
const self = this
- jsPlumb.ready(() => {
+ let plumbIns = jsPlumb.getInstance()
+ plumbIns.reset()
+ plumbIns.ready(() => {
JSP.init({
dag: this.dag,
instance: this.instance,
From 00fc39823f7e5c8839a11b338a3787913ff89762 Mon Sep 17 00:00:00 2001
From: wuchunfu <319355703@qq.com>
Date: Mon, 3 Aug 2020 13:50:30 +0800
Subject: [PATCH 2/9] [Fix-3256][ui] herry pick commit from dev for Fix admin
user info update error (#3306)
---
sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql | 2 +-
.../release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql | 2 +-
sql/dolphinscheduler-postgre.sql | 2 +-
sql/dolphinscheduler_mysql.sql | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql b/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql
index e8c797b1a9..fd65d3091e 100644
--- a/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql
+++ b/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql
@@ -16,7 +16,7 @@
*/
-- Records of t_escheduler_user,user : admin , password : dolphinscheduler123
-INSERT INTO `t_escheduler_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO `t_escheduler_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
INSERT INTO `t_escheduler_alertgroup` VALUES (1, 'default admin warning group', '0', 'default admin warning group','2018-11-29 10:20:39', '2018-11-29 10:20:39');
INSERT INTO `t_escheduler_relation_user_alertgroup` VALUES ('1', '1', '1', '2018-11-29 10:22:33', '2018-11-29 10:22:33');
diff --git a/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql b/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql
index 4b83d78fea..d075cab9bf 100644
--- a/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql
+++ b/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql
@@ -16,7 +16,7 @@
*/
-- Records of t_ds_user,user : admin , password : dolphinscheduler123
-INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
-- Records of t_ds_alertgroup,dolphinscheduler warning group
INSERT INTO t_ds_alertgroup(group_name,group_type,description,create_time,update_time) VALUES ('dolphinscheduler warning group', '0', 'dolphinscheduler warning group','2018-11-29 10:20:39', '2018-11-29 10:20:39');
diff --git a/sql/dolphinscheduler-postgre.sql b/sql/dolphinscheduler-postgre.sql
index b16965a437..df93c1b9c7 100644
--- a/sql/dolphinscheduler-postgre.sql
+++ b/sql/dolphinscheduler-postgre.sql
@@ -750,7 +750,7 @@ ALTER TABLE t_ds_worker_server ALTER COLUMN id SET DEFAULT NEXTVAL('t_ds_worker_
-- Records of t_ds_user?user : admin , password : dolphinscheduler123
-INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,state,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', 1, '2018-03-27 15:48:50', '2018-10-24 17:40:22');
-- Records of t_ds_alertgroup,dolphinscheduler warning group
INSERT INTO t_ds_alertgroup(group_name,group_type,description,create_time,update_time) VALUES ('dolphinscheduler warning group', '0', 'dolphinscheduler warning group','2018-11-29 10:20:39', '2018-11-29 10:20:39');
diff --git a/sql/dolphinscheduler_mysql.sql b/sql/dolphinscheduler_mysql.sql
index a6e75f50d2..657014b422 100644
--- a/sql/dolphinscheduler_mysql.sql
+++ b/sql/dolphinscheduler_mysql.sql
@@ -814,4 +814,4 @@ INSERT INTO `t_ds_relation_user_alertgroup` VALUES ('1', '1', '1', '2018-11-29 1
-- ----------------------------
-- Records of t_ds_user
-- ----------------------------
-INSERT INTO `t_ds_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22', null);
+INSERT INTO `t_ds_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22', null, 1);
From 811fd48f0a27b3112092b4f8b4fbeb5d55cf2da0 Mon Sep 17 00:00:00 2001
From: break60 <790061044@qq.com>
Date: Tue, 4 Aug 2020 10:22:00 +0800
Subject: [PATCH 3/9] Before creating a workflow, clear the canvas (#3388)
* Before creating a workflow, clear the canvas
* [Fix-3256][ui] herry pick commit from dev for Fix admin user info update error (#3306)
Co-authored-by: wuchunfu <319355703@qq.com>
---
.../src/js/conf/home/pages/dag/_source/dag.js | 12 +++++++++---
.../mysql/dolphinscheduler_dml.sql | 2 +-
.../postgresql/dolphinscheduler_dml.sql | 2 +-
sql/dolphinscheduler-postgre.sql | 2 +-
sql/dolphinscheduler_mysql.sql | 2 +-
5 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
index ff8a4528d5..5a41091029 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
@@ -52,7 +52,9 @@ Dag.prototype.setConfig = function (o) {
*/
Dag.prototype.create = function () {
const self = this
- jsPlumb.ready(() => {
+ let plumbIns = jsPlumb.getInstance()
+ plumbIns.reset()
+ plumbIns.ready(() => {
JSP.init({
dag: this.dag,
instance: this.instance,
@@ -304,7 +306,9 @@ Dag.prototype.backfill = function (arg) {
locationsValue = dataObject
const self = this
- jsPlumb.ready(() => {
+ let plumbIns = jsPlumb.getInstance()
+ plumbIns.reset()
+ plumbIns.ready(() => {
JSP.init({
dag: this.dag,
instance: this.instance,
@@ -326,7 +330,9 @@ Dag.prototype.backfill = function (arg) {
})
} else {
const self = this
- jsPlumb.ready(() => {
+ let plumbIns = jsPlumb.getInstance()
+ plumbIns.reset()
+ plumbIns.ready(() => {
JSP.init({
dag: this.dag,
instance: this.instance,
diff --git a/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql b/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql
index e8c797b1a9..fd65d3091e 100644
--- a/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql
+++ b/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_dml.sql
@@ -16,7 +16,7 @@
*/
-- Records of t_escheduler_user,user : admin , password : dolphinscheduler123
-INSERT INTO `t_escheduler_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO `t_escheduler_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
INSERT INTO `t_escheduler_alertgroup` VALUES (1, 'default admin warning group', '0', 'default admin warning group','2018-11-29 10:20:39', '2018-11-29 10:20:39');
INSERT INTO `t_escheduler_relation_user_alertgroup` VALUES ('1', '1', '1', '2018-11-29 10:22:33', '2018-11-29 10:22:33');
diff --git a/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql b/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql
index 4b83d78fea..d075cab9bf 100644
--- a/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql
+++ b/sql/create/release-1.2.0_schema/postgresql/dolphinscheduler_dml.sql
@@ -16,7 +16,7 @@
*/
-- Records of t_ds_user,user : admin , password : dolphinscheduler123
-INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
-- Records of t_ds_alertgroup,dolphinscheduler warning group
INSERT INTO t_ds_alertgroup(group_name,group_type,description,create_time,update_time) VALUES ('dolphinscheduler warning group', '0', 'dolphinscheduler warning group','2018-11-29 10:20:39', '2018-11-29 10:20:39');
diff --git a/sql/dolphinscheduler-postgre.sql b/sql/dolphinscheduler-postgre.sql
index b16965a437..df93c1b9c7 100644
--- a/sql/dolphinscheduler-postgre.sql
+++ b/sql/dolphinscheduler-postgre.sql
@@ -750,7 +750,7 @@ ALTER TABLE t_ds_worker_server ALTER COLUMN id SET DEFAULT NEXTVAL('t_ds_worker_
-- Records of t_ds_user?user : admin , password : dolphinscheduler123
-INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO t_ds_user(user_name,user_password,user_type,email,phone,tenant_id,state,create_time,update_time) VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', 1, '2018-03-27 15:48:50', '2018-10-24 17:40:22');
-- Records of t_ds_alertgroup,dolphinscheduler warning group
INSERT INTO t_ds_alertgroup(group_name,group_type,description,create_time,update_time) VALUES ('dolphinscheduler warning group', '0', 'dolphinscheduler warning group','2018-11-29 10:20:39', '2018-11-29 10:20:39');
diff --git a/sql/dolphinscheduler_mysql.sql b/sql/dolphinscheduler_mysql.sql
index a6e75f50d2..657014b422 100644
--- a/sql/dolphinscheduler_mysql.sql
+++ b/sql/dolphinscheduler_mysql.sql
@@ -814,4 +814,4 @@ INSERT INTO `t_ds_relation_user_alertgroup` VALUES ('1', '1', '1', '2018-11-29 1
-- ----------------------------
-- Records of t_ds_user
-- ----------------------------
-INSERT INTO `t_ds_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', 'xx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22', null);
+INSERT INTO `t_ds_user` VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', 'xxx@qq.com', '', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22', null, 1);
From 55f2a5f89c96fd7d9098cb712dfd4c29b9cfbe0d Mon Sep 17 00:00:00 2001
From: break60 <790061044@qq.com>
Date: Tue, 4 Aug 2020 11:07:30 +0800
Subject: [PATCH 4/9] [Feture-3327][ui]Add the function of re-uploading files
in the resource center
---
.../pages/taskInstance/_source/list.vue | 1 +
.../pages/file/pages/list/_source/list.vue | 18 +-
.../file/pages/subdirectory/_source/list.vue | 18 +-
.../pages/udf/pages/resource/_source/list.vue | 19 +-
.../fileUpdate/fileChildReUpdate.vue | 336 ++++++++++++++++++
.../components/fileUpdate/fileReUpload.vue | 335 +++++++++++++++++
.../src/js/module/components/nav/nav.vue | 89 ++++-
.../src/js/module/i18n/locale/en_US.js | 1 +
.../src/js/module/i18n/locale/zh_CN.js | 1 +
9 files changed, 814 insertions(+), 4 deletions(-)
create mode 100644 dolphinscheduler-ui/src/js/module/components/fileUpdate/fileChildReUpdate.vue
create mode 100644 dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
index cdcf0b0785..5fd0392ce0 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
@@ -98,6 +98,7 @@
data-toggle="tooltip"
:title="$t('View log')"
icon="ans-icon-log"
+ :disabled="item.taskType==='SUB_PROCESS'? true: false"
@click="_refreshLog(item)">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue
index 4ccfa2eff3..4f256f8563 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue
@@ -40,7 +40,7 @@
{{$t('Update Time')}}
|
-
+ |
{{$t('Operation')}}
|
@@ -79,6 +79,18 @@
@click="_edit(item,$index)"
icon="ans-icon-edit">
+
+
+
+
{{$t('Update Time')}}
-
+ |
{{$t('Operation')}}
|
@@ -79,6 +79,18 @@
@click="_edit(item,$index)"
icon="ans-icon-edit">
+
+
+
+
{{$t('Update Time')}}
-
+ |
{{$t('Operation')}}
|
@@ -76,6 +76,16 @@
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue b/dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue
new file mode 100644
index 0000000000..c0ea678470
--- /dev/null
+++ b/dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue
@@ -0,0 +1,335 @@
+/*
+ * 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.
+ */
+
+
+
+
+
+
+
+
+
+
diff --git a/dolphinscheduler-ui/src/js/module/components/nav/nav.vue b/dolphinscheduler-ui/src/js/module/components/nav/nav.vue
index 7c82dc660e..697c3c5889 100644
--- a/dolphinscheduler-ui/src/js/module/components/nav/nav.vue
+++ b/dolphinscheduler-ui/src/js/module/components/nav/nav.vue
@@ -155,7 +155,9 @@
import { mapState, mapActions } from 'vuex'
import { findComponentDownward } from '@/module/util/'
import mFileUpdate from '@/module/components/fileUpdate/fileUpdate'
+ import mFileReUpload from '@/module/components/fileUpdate/fileReUpload'
import mFileChildUpdate from '@/module/components/fileUpdate/fileChildUpdate'
+ import mFileChildReUpdate from '@/module/components/fileUpdate/fileChildReUpdate'
import mResourceChildUpdate from '@/module/components/fileUpdate/resourceChildUpdate'
import mDefinitionUpdate from '@/module/components/fileUpdate/definitionUpdate'
import mProgressBar from '@/module/components/progressBar/progressBar'
@@ -262,6 +264,91 @@
}
})
},
+ /* fileReUpload */
+ _fileReUpload (type,item) {
+ if (this.progress) {
+ this._toggleArchive()
+ return
+ }
+ let self = this
+ let modal = this.$modal.dialog({
+ closable: false,
+ showMask: true,
+ escClose: true,
+ className: 'update-file-modal',
+ transitionName: 'opacityp',
+ render (h) {
+ return h(mFileReUpload, {
+ on: {
+ onProgress (val) {
+ self.progress = val
+ },
+ onUpdate () {
+ findComponentDownward(self.$root, `resource-list-index-${type}`)._updateList()
+ self.isUpdate = false
+ self.progress = 0
+ modal.remove()
+ },
+ onArchive () {
+ self.isUpdate = true
+ },
+ close () {
+ self.progress = 0
+ modal.remove()
+ }
+ },
+ props: {
+ type: type,
+ fileName: item.fileName,
+ desc: item.description,
+ id: item.id
+ }
+ })
+ }
+ })
+ },
+ _fileChildReUpload (type,item,data) {
+ if (this.progress) {
+ this._toggleArchive()
+ return
+ }
+ let self = this
+ let modal = this.$modal.dialog({
+ closable: false,
+ showMask: true,
+ escClose: true,
+ className: 'update-file-modal',
+ transitionName: 'opacityp',
+ render (h) {
+ return h(mFileChildReUpdate, {
+ on: {
+ onProgress (val) {
+ self.progress = val
+ },
+ onUpdate () {
+ findComponentDownward(self.$root, `resource-list-index-${type}`)._updateList(data)
+ self.isUpdate = false
+ self.progress = 0
+ modal.remove()
+ },
+ onArchive () {
+ self.isUpdate = true
+ },
+ close () {
+ self.progress = 0
+ modal.remove()
+ }
+ },
+ props: {
+ type: type,
+ fileName: item.fileName,
+ desc: item.description,
+ id: item.id
+ }
+ })
+ }
+ })
+ },
_fileChildUpdate (type,data) {
if (this.progress) {
this._toggleArchive()
@@ -372,7 +459,7 @@
computed: {
...mapState('user', ['userInfo'])
},
- components: { mFileUpdate, mProgressBar, mDefinitionUpdate }
+ components: { mFileUpdate, mProgressBar, mDefinitionUpdate, mFileReUpload, mFileChildReUpdate }
}
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
index 009f2bdac2..170ebbc38d 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
@@ -335,6 +335,7 @@ export default {
Delete: 'Delete',
'Please enter keyword': 'Please enter keyword',
'File Upload': 'File Upload',
+ 'File ReUpload': 'File ReUpload',
'Drag the file into the current upload window': 'Drag the file into the current upload window',
'Drag area upload': 'Drag area upload',
Upload: 'Upload',
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
index c38eac25e5..704b447b12 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
@@ -333,6 +333,7 @@ export default {
'Drag the file into the current upload window': '请将文件拖拽到当前上传窗口内!',
'Drag area upload': '拖动区域上传',
Upload: '上传',
+ 'ReUpload File': '重新上传文件',
'Please enter file name': '请输入文件名',
'Please select the file to upload': '请选择要上传的文件',
'Resources manage': '资源中心',
From 78672b035900d5d06f1f66af73f2ee41f87086ca Mon Sep 17 00:00:00 2001
From: break60 <790061044@qq.com>
Date: Tue, 4 Aug 2020 11:40:49 +0800
Subject: [PATCH 5/9] [Feture-3327][ui]Add the function of re-uploading files
in the resource center (#3394)
* Before creating a workflow, clear the canvas
* [Fix-3256][ui] herry pick commit from dev for Fix admin user info update error (#3306)
* [Feture-3327][ui]Add the function of re-uploading files in the resource center
Co-authored-by: wuchunfu <319355703@qq.com>
---
.../pages/taskInstance/_source/list.vue | 1 +
.../pages/file/pages/list/_source/list.vue | 18 +-
.../file/pages/subdirectory/_source/list.vue | 18 +-
.../pages/udf/pages/resource/_source/list.vue | 19 +-
.../fileUpdate/fileChildReUpdate.vue | 336 ++++++++++++++++++
.../components/fileUpdate/fileReUpload.vue | 335 +++++++++++++++++
.../src/js/module/components/nav/nav.vue | 89 ++++-
.../src/js/module/i18n/locale/en_US.js | 1 +
.../src/js/module/i18n/locale/zh_CN.js | 1 +
9 files changed, 814 insertions(+), 4 deletions(-)
create mode 100644 dolphinscheduler-ui/src/js/module/components/fileUpdate/fileChildReUpdate.vue
create mode 100644 dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
index cdcf0b0785..5fd0392ce0 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
@@ -98,6 +98,7 @@
data-toggle="tooltip"
:title="$t('View log')"
icon="ans-icon-log"
+ :disabled="item.taskType==='SUB_PROCESS'? true: false"
@click="_refreshLog(item)">
|
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue
index 4ccfa2eff3..4f256f8563 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/list/_source/list.vue
@@ -40,7 +40,7 @@
{{$t('Update Time')}}
|
-
+ |
{{$t('Operation')}}
|
@@ -79,6 +79,18 @@
@click="_edit(item,$index)"
icon="ans-icon-edit">
+
+
+
+
{{$t('Update Time')}}
-
+ |
{{$t('Operation')}}
|
@@ -79,6 +79,18 @@
@click="_edit(item,$index)"
icon="ans-icon-edit">
+
+
+
+
{{$t('Update Time')}}
-
+ |
{{$t('Operation')}}
|
@@ -76,6 +76,16 @@
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue b/dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue
new file mode 100644
index 0000000000..c0ea678470
--- /dev/null
+++ b/dolphinscheduler-ui/src/js/module/components/fileUpdate/fileReUpload.vue
@@ -0,0 +1,335 @@
+/*
+ * 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.
+ */
+
+
+
+
+
+
+
+
+
+
diff --git a/dolphinscheduler-ui/src/js/module/components/nav/nav.vue b/dolphinscheduler-ui/src/js/module/components/nav/nav.vue
index 7c82dc660e..697c3c5889 100644
--- a/dolphinscheduler-ui/src/js/module/components/nav/nav.vue
+++ b/dolphinscheduler-ui/src/js/module/components/nav/nav.vue
@@ -155,7 +155,9 @@
import { mapState, mapActions } from 'vuex'
import { findComponentDownward } from '@/module/util/'
import mFileUpdate from '@/module/components/fileUpdate/fileUpdate'
+ import mFileReUpload from '@/module/components/fileUpdate/fileReUpload'
import mFileChildUpdate from '@/module/components/fileUpdate/fileChildUpdate'
+ import mFileChildReUpdate from '@/module/components/fileUpdate/fileChildReUpdate'
import mResourceChildUpdate from '@/module/components/fileUpdate/resourceChildUpdate'
import mDefinitionUpdate from '@/module/components/fileUpdate/definitionUpdate'
import mProgressBar from '@/module/components/progressBar/progressBar'
@@ -262,6 +264,91 @@
}
})
},
+ /* fileReUpload */
+ _fileReUpload (type,item) {
+ if (this.progress) {
+ this._toggleArchive()
+ return
+ }
+ let self = this
+ let modal = this.$modal.dialog({
+ closable: false,
+ showMask: true,
+ escClose: true,
+ className: 'update-file-modal',
+ transitionName: 'opacityp',
+ render (h) {
+ return h(mFileReUpload, {
+ on: {
+ onProgress (val) {
+ self.progress = val
+ },
+ onUpdate () {
+ findComponentDownward(self.$root, `resource-list-index-${type}`)._updateList()
+ self.isUpdate = false
+ self.progress = 0
+ modal.remove()
+ },
+ onArchive () {
+ self.isUpdate = true
+ },
+ close () {
+ self.progress = 0
+ modal.remove()
+ }
+ },
+ props: {
+ type: type,
+ fileName: item.fileName,
+ desc: item.description,
+ id: item.id
+ }
+ })
+ }
+ })
+ },
+ _fileChildReUpload (type,item,data) {
+ if (this.progress) {
+ this._toggleArchive()
+ return
+ }
+ let self = this
+ let modal = this.$modal.dialog({
+ closable: false,
+ showMask: true,
+ escClose: true,
+ className: 'update-file-modal',
+ transitionName: 'opacityp',
+ render (h) {
+ return h(mFileChildReUpdate, {
+ on: {
+ onProgress (val) {
+ self.progress = val
+ },
+ onUpdate () {
+ findComponentDownward(self.$root, `resource-list-index-${type}`)._updateList(data)
+ self.isUpdate = false
+ self.progress = 0
+ modal.remove()
+ },
+ onArchive () {
+ self.isUpdate = true
+ },
+ close () {
+ self.progress = 0
+ modal.remove()
+ }
+ },
+ props: {
+ type: type,
+ fileName: item.fileName,
+ desc: item.description,
+ id: item.id
+ }
+ })
+ }
+ })
+ },
_fileChildUpdate (type,data) {
if (this.progress) {
this._toggleArchive()
@@ -372,7 +459,7 @@
computed: {
...mapState('user', ['userInfo'])
},
- components: { mFileUpdate, mProgressBar, mDefinitionUpdate }
+ components: { mFileUpdate, mProgressBar, mDefinitionUpdate, mFileReUpload, mFileChildReUpdate }
}
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
index 009f2bdac2..170ebbc38d 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
@@ -335,6 +335,7 @@ export default {
Delete: 'Delete',
'Please enter keyword': 'Please enter keyword',
'File Upload': 'File Upload',
+ 'File ReUpload': 'File ReUpload',
'Drag the file into the current upload window': 'Drag the file into the current upload window',
'Drag area upload': 'Drag area upload',
Upload: 'Upload',
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
index c38eac25e5..704b447b12 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
@@ -333,6 +333,7 @@ export default {
'Drag the file into the current upload window': '请将文件拖拽到当前上传窗口内!',
'Drag area upload': '拖动区域上传',
Upload: '上传',
+ 'ReUpload File': '重新上传文件',
'Please enter file name': '请输入文件名',
'Please select the file to upload': '请选择要上传的文件',
'Resources manage': '资源中心',
From 88bc30b32b9af8dc1e8b306fb7808175e50f8fab Mon Sep 17 00:00:00 2001
From: lgcareer <18610854716@163.com>
Date: Tue, 4 Aug 2020 14:55:49 +0800
Subject: [PATCH 6/9] [Improvement-3327][api]support re-upload the resource
file (#3395)
---
.../api/controller/ResourcesController.java | 35 +++----
.../api/service/ResourcesService.java | 91 ++++++++++++++++---
.../api/service/ResourcesServiceTest.java | 19 ++--
3 files changed, 102 insertions(+), 43 deletions(-)
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
index cc09b2d650..2af8ccd767 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
@@ -16,6 +16,11 @@
*/
package org.apache.dolphinscheduler.api.controller;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang.StringUtils;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.exceptions.ApiException;
import org.apache.dolphinscheduler.api.service.ResourcesService;
@@ -26,11 +31,6 @@ import org.apache.dolphinscheduler.common.enums.ResourceType;
import org.apache.dolphinscheduler.common.enums.UdfType;
import org.apache.dolphinscheduler.common.utils.ParameterUtils;
import org.apache.dolphinscheduler.dao.entity.User;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -63,23 +63,15 @@ public class ResourcesController extends BaseController {
private UdfFuncService udfFuncService;
/**
- * create resource
+ * create directory
*
- * @param loginUser login user
- * @param alias alias
- * @param description description
- * @param type type
- * @return create result code
- */
-
- /**
* @param loginUser login user
* @param type type
* @param alias alias
* @param description description
* @param pid parent id
* @param currentDir current directory
- * @return
+ * @return create result code
*/
@ApiOperation(value = "createDirctory", notes = "CREATE_RESOURCE_NOTES")
@ApiImplicitParams({
@@ -140,6 +132,7 @@ public class ResourcesController extends BaseController {
* @param resourceId resource id
* @param type resource type
* @param description description
+ * @param file resource file
* @return update result code
*/
@ApiOperation(value = "updateResource", notes = "UPDATE_RESOURCE_NOTES")
@@ -147,7 +140,8 @@ public class ResourcesController extends BaseController {
@ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType = "Int", example = "100"),
@ApiImplicitParam(name = "type", value = "RESOURCE_TYPE", required = true, dataType = "ResourceType"),
@ApiImplicitParam(name = "name", value = "RESOURCE_NAME", required = true, dataType = "String"),
- @ApiImplicitParam(name = "description", value = "RESOURCE_DESC", dataType = "String")
+ @ApiImplicitParam(name = "description", value = "RESOURCE_DESC", dataType = "String"),
+ @ApiImplicitParam(name = "file", value = "RESOURCE_FILE", required = true, dataType = "MultipartFile")
})
@PostMapping(value = "/update")
@ApiException(UPDATE_RESOURCE_ERROR)
@@ -155,10 +149,11 @@ public class ResourcesController extends BaseController {
@RequestParam(value = "id") int resourceId,
@RequestParam(value = "type") ResourceType type,
@RequestParam(value = "name") String alias,
- @RequestParam(value = "description", required = false) String description) {
- logger.info("login user {}, update resource, type: {}, resource alias: {}, desc: {}",
- loginUser.getUserName(), type, alias, description);
- return resourceService.updateResource(loginUser, resourceId, alias, description, type);
+ @RequestParam(value = "description", required = false) String description,
+ @RequestParam(value = "file" ,required = false) MultipartFile file) {
+ logger.info("login user {}, update resource, type: {}, resource alias: {}, desc: {}, file: {}",
+ loginUser.getUserName(), type, alias, description, file);
+ return resourceService.updateResource(loginUser, resourceId, alias, description, type, file);
}
/**
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 15b106f63e..e0ee7117c4 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
@@ -287,6 +287,7 @@ public class ResourcesService extends BaseService {
* @param name name
* @param desc description
* @param type resource type
+ * @param file resource file
* @return update result code
*/
@Transactional(rollbackFor = Exception.class)
@@ -294,7 +295,8 @@ public class ResourcesService extends BaseService {
int resourceId,
String name,
String desc,
- ResourceType type) {
+ ResourceType type,
+ MultipartFile file) {
Result result = new Result();
// if resource upload startup
@@ -330,6 +332,42 @@ public class ResourcesService extends BaseService {
return result;
}
+ if (file != null) {
+
+ // file is empty
+ if (file.isEmpty()) {
+ logger.error("file is empty: {}", file.getOriginalFilename());
+ putMsg(result, Status.RESOURCE_FILE_IS_EMPTY);
+ return result;
+ }
+
+ // file suffix
+ String fileSuffix = FileUtils.suffix(file.getOriginalFilename());
+ String nameSuffix = FileUtils.suffix(name);
+
+ // determine file suffix
+ if (!(StringUtils.isNotEmpty(fileSuffix) && fileSuffix.equalsIgnoreCase(nameSuffix))) {
+ /**
+ * rename file suffix and original suffix must be consistent
+ */
+ logger.error("rename file suffix and original suffix must be consistent: {}", file.getOriginalFilename());
+ putMsg(result, Status.RESOURCE_SUFFIX_FORBID_CHANGE);
+ return result;
+ }
+
+ //If resource type is UDF, only jar packages are allowed to be uploaded, and the suffix must be .jar
+ if (Constants.UDF.equals(type.name()) && !JAR.equalsIgnoreCase(FileUtils.suffix(originFullName))) {
+ logger.error(Status.UDF_RESOURCE_SUFFIX_NOT_JAR.getMsg());
+ putMsg(result, Status.UDF_RESOURCE_SUFFIX_NOT_JAR);
+ return result;
+ }
+ if (file.getSize() > Constants.MAX_FILE_SIZE) {
+ logger.error("file size is too large: {}", file.getOriginalFilename());
+ putMsg(result, Status.RESOURCE_SIZE_EXCEED_LIMIT);
+ return result;
+ }
+ }
+
// query tenant by user id
String tenantCode = getTenantCode(resource.getUserId(),result);
if (StringUtils.isEmpty(tenantCode)){
@@ -379,26 +417,33 @@ public class ResourcesService extends BaseService {
}
// updateResource data
- List childrenResource = listAllChildren(resource,false);
+
Date now = new Date();
resource.setAlias(name);
resource.setFullName(fullName);
resource.setDescription(desc);
resource.setUpdateTime(now);
+ if (file != null) {
+ resource.setFileName(file.getOriginalFilename());
+ resource.setSize(file.getSize());
+ }
try {
resourcesMapper.updateById(resource);
- if (resource.isDirectory() && CollectionUtils.isNotEmpty(childrenResource)) {
- String matcherFullName = Matcher.quoteReplacement(fullName);
- List childResourceList = new ArrayList<>();
- List resourceList = resourcesMapper.listResourceByIds(childrenResource.toArray(new Integer[childrenResource.size()]));
- childResourceList = resourceList.stream().map(t -> {
- t.setFullName(t.getFullName().replaceFirst(originFullName, matcherFullName));
- t.setUpdateTime(now);
- return t;
- }).collect(Collectors.toList());
- resourcesMapper.batchUpdateResource(childResourceList);
+ if (resource.isDirectory()) {
+ List childrenResource = listAllChildren(resource,false);
+ if (CollectionUtils.isNotEmpty(childrenResource)) {
+ String matcherFullName = Matcher.quoteReplacement(fullName);
+ List childResourceList = new ArrayList<>();
+ List resourceList = resourcesMapper.listResourceByIds(childrenResource.toArray(new Integer[childrenResource.size()]));
+ childResourceList = resourceList.stream().map(t -> {
+ t.setFullName(t.getFullName().replaceFirst(originFullName, matcherFullName));
+ t.setUpdateTime(now);
+ return t;
+ }).collect(Collectors.toList());
+ resourcesMapper.batchUpdateResource(childResourceList);
+ }
}
putMsg(result, Status.SUCCESS);
@@ -414,11 +459,31 @@ public class ResourcesService extends BaseService {
logger.error(Status.UPDATE_RESOURCE_ERROR.getMsg(), e);
throw new ServiceException(Status.UPDATE_RESOURCE_ERROR);
}
+
// if name unchanged, return directly without moving on HDFS
- if (originResourceName.equals(name)) {
+ if (originResourceName.equals(name) && file == null) {
return result;
}
+ if (file != null) {
+ // fail upload
+ if (!upload(loginUser, fullName, file, type)) {
+ logger.error("upload resource: {} file: {} failed.", name, file.getOriginalFilename());
+ putMsg(result, Status.HDFS_OPERATION_ERROR);
+ throw new RuntimeException(String.format("upload resource: %s file: %s failed.", name, file.getOriginalFilename()));
+ }
+ if (!fullName.equals(originFullName)) {
+ try {
+ HadoopUtils.getInstance().delete(originHdfsFileName,false);
+ } catch (IOException e) {
+ logger.error(e.getMessage(),e);
+ throw new RuntimeException(String.format("delete resource: %s failed.", originFullName));
+ }
+ }
+ return result;
+ }
+
+
// get the path of dest file in hdfs
String destHdfsFileName = HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,fullName);
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 407f6b587f..1e3c95d775 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,7 +19,6 @@ package org.apache.dolphinscheduler.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.dolphinscheduler.api.enums.Status;
-import org.apache.dolphinscheduler.api.exceptions.ServiceException;
import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.Constants;
@@ -159,19 +158,19 @@ public class ResourcesServiceTest {
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(false);
User user = new User();
//HDFS_NOT_STARTUP
- Result result = resourcesService.updateResource(user,1,"ResourcesServiceTest","ResourcesServiceTest",ResourceType.FILE);
+ Result result = resourcesService.updateResource(user,1,"ResourcesServiceTest","ResourcesServiceTest",ResourceType.FILE,null);
logger.info(result.toString());
Assert.assertEquals(Status.HDFS_NOT_STARTUP.getMsg(),result.getMsg());
//RESOURCE_NOT_EXIST
Mockito.when(resourcesMapper.selectById(1)).thenReturn(getResource());
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(true);
- result = resourcesService.updateResource(user,0,"ResourcesServiceTest","ResourcesServiceTest",ResourceType.FILE);
+ result = resourcesService.updateResource(user,0,"ResourcesServiceTest","ResourcesServiceTest",ResourceType.FILE,null);
logger.info(result.toString());
Assert.assertEquals(Status.RESOURCE_NOT_EXIST.getMsg(),result.getMsg());
//USER_NO_OPERATION_PERM
- result = resourcesService.updateResource(user,1,"ResourcesServiceTest","ResourcesServiceTest",ResourceType.FILE);
+ result = resourcesService.updateResource(user,1,"ResourcesServiceTest","ResourcesServiceTest",ResourceType.FILE,null);
logger.info(result.toString());
Assert.assertEquals(Status.USER_NO_OPERATION_PERM.getMsg(),result.getMsg());
@@ -186,7 +185,7 @@ public class ResourcesServiceTest {
} catch (IOException e) {
logger.error(e.getMessage(),e);
}
- result = resourcesService.updateResource(user, 1, "ResourcesServiceTest1.jar", "ResourcesServiceTest", ResourceType.UDF);
+ result = resourcesService.updateResource(user, 1, "ResourcesServiceTest1.jar", "ResourcesServiceTest", ResourceType.UDF,null);
Assert.assertEquals(Status.RESOURCE_NOT_EXIST.getMsg(),result.getMsg());
//SUCCESS
@@ -199,25 +198,25 @@ public class ResourcesServiceTest {
logger.error(e.getMessage(),e);
}
- result = resourcesService.updateResource(user,1,"ResourcesServiceTest.jar","ResourcesServiceTest",ResourceType.FILE);
+ result = resourcesService.updateResource(user,1,"ResourcesServiceTest.jar","ResourcesServiceTest",ResourceType.FILE,null);
logger.info(result.toString());
Assert.assertEquals(Status.SUCCESS.getMsg(),result.getMsg());
//RESOURCE_EXIST
Mockito.when(resourcesMapper.queryResourceList("/ResourcesServiceTest1.jar", 0, 0)).thenReturn(getResourceList());
- result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.FILE);
+ result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.FILE,null);
logger.info(result.toString());
Assert.assertEquals(Status.RESOURCE_EXIST.getMsg(),result.getMsg());
//USER_NOT_EXIST
Mockito.when(userMapper.selectById(Mockito.anyInt())).thenReturn(null);
- result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF);
+ result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF,null);
logger.info(result.toString());
Assert.assertTrue(Status.USER_NOT_EXIST.getCode() == result.getCode());
//TENANT_NOT_EXIST
Mockito.when(userMapper.selectById(1)).thenReturn(getUser());
Mockito.when(tenantMapper.queryById(Mockito.anyInt())).thenReturn(null);
- result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF);
+ result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF,null);
logger.info(result.toString());
Assert.assertEquals(Status.TENANT_NOT_EXIST.getMsg(),result.getMsg());
@@ -231,7 +230,7 @@ public class ResourcesServiceTest {
logger.error(e.getMessage(),e);
}
- result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest1.jar",ResourceType.UDF);
+ result = resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest1.jar",ResourceType.UDF,null);
logger.info(result.toString());
Assert.assertEquals(Status.SUCCESS.getMsg(),result.getMsg());
From a3793be7dabb7aa84eb518b592d82860a1cc3003 Mon Sep 17 00:00:00 2001
From: lgcareer <18610854716@163.com>
Date: Tue, 4 Aug 2020 15:04:56 +0800
Subject: [PATCH 7/9] [Fix-3390][server]Running hive sql task need find the
hdfs path correctly (#3396)
* [Fix-3390][api]Running hive sql task need find the hdfs path correctly
* [Fix-3390][api]Running hive sql task need find the hdfs path correctly
* update soft version
---
.../common/process/ResourceInfo.java | 18 ------------------
.../server/utils/UDFUtils.java | 6 ++++--
sql/soft_version | 2 +-
3 files changed, 5 insertions(+), 21 deletions(-)
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/process/ResourceInfo.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/process/ResourceInfo.java
index c460354fe5..287f7267bc 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/process/ResourceInfo.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/process/ResourceInfo.java
@@ -42,22 +42,4 @@ public class ResourceInfo {
public void setRes(String res) {
this.res = res;
}
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- ResourceInfo that = (ResourceInfo) o;
-
- if (id != that.id) return false;
- return res.equals(that.res);
- }
-
- @Override
- public int hashCode() {
- int result = id;
- result = 31 * result + res.hashCode();
- return result;
- }
}
diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/UDFUtils.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/UDFUtils.java
index 3a8c8fe7d6..1bc79ab94e 100644
--- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/UDFUtils.java
+++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/UDFUtils.java
@@ -70,14 +70,16 @@ public class UDFUtils {
*/
private static void buildJarSql(List sqls, Map udfFuncTenantCodeMap) {
String defaultFS = HadoopUtils.getInstance().getConfiguration().get(Constants.FS_DEFAULTFS);
-
+ String resourceFullName;
Set> entries = udfFuncTenantCodeMap.entrySet();
for (Map.Entry entry:entries){
String uploadPath = HadoopUtils.getHdfsUdfDir(entry.getValue());
if (!uploadPath.startsWith("hdfs:")) {
uploadPath = defaultFS + uploadPath;
}
- sqls.add(String.format("add jar %s%s", uploadPath, entry.getKey().getResourceName()));
+ resourceFullName = entry.getKey().getResourceName();
+ resourceFullName = resourceFullName.startsWith("/") ? resourceFullName : String.format("/%s",resourceFullName);
+ sqls.add(String.format("add jar %s%s", uploadPath, resourceFullName));
}
}
diff --git a/sql/soft_version b/sql/soft_version
index 6261a05bb0..d5e98f723f 100644
--- a/sql/soft_version
+++ b/sql/soft_version
@@ -1 +1 @@
-1.3.1
\ No newline at end of file
+1.3.2
\ No newline at end of file
From ce769d7965729e55d6d2036c99b307d337336b74 Mon Sep 17 00:00:00 2001
From: break60 <790061044@qq.com>
Date: Tue, 4 Aug 2020 16:02:04 +0800
Subject: [PATCH 8/9] hive UDF function to modify the background color
---
.../home/pages/dag/_source/formModel/tasks/sql.vue | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
index 9e7f3305e5..27b7633eda 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
@@ -495,5 +495,15 @@
color: #ff0000;
padding-right: 4px;
}
+ .udfs-model {
+ .ans-select {
+ .tag-container-disabled {
+ .tag-wrapper {
+ background-color: #fff;
+ color: #6d859e;
+ }
+ }
+ }
+ }
From 5558c996c8b46bd5c60476257694ed1615eb46c1 Mon Sep 17 00:00:00 2001
From: break60 <790061044@qq.com>
Date: Tue, 4 Aug 2020 16:11:27 +0800
Subject: [PATCH 9/9] fix
---
.../js/conf/home/pages/dag/_source/formModel/tasks/sql.vue | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
index 27b7633eda..9217f7145c 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
@@ -499,8 +499,13 @@
.ans-select {
.tag-container-disabled {
.tag-wrapper {
+ &:hover {
+ background-color: #fff;
+ }
background-color: #fff;
- color: #6d859e;
+ .tag-text {
+ color: #6d859e;
+ }
}
}
}
|