[Cherry-pick] pick 8811/9020/9834 from dev to 206 (#10744)
* issue 8645 (#8811) Co-authored-by: 北笙 <“zhanqian@cai-inc.com”> Co-authored-by: zhanqian <zhanqian@cai-inc.com> * [fix-8929][DAO]Description Failed to upload the file because the full name was too long (#9020) * [fix-8929][DAO]Description Failed to upload the file because the full name was too long * [DS-#8929][fix]Description Failed to upload the file because the full name was too long * [DS-#8929][fix]Description Failed to upload the file because the full name was too long * [DS-#8929][fix]Description Failed to upload the file because the full name was too long Co-authored-by: houshuai <houshuai@jiguang.cn> * [BUG][ALERT-SERVER]validate script before alert script (#9834) * validate script before alert script * fix validate script before alert script * pick 8811/9020/9834 Co-authored-by: zhanqian <360400325@qq.com> Co-authored-by: 北笙 <“zhanqian@cai-inc.com”> Co-authored-by: zhanqian <zhanqian@cai-inc.com> Co-authored-by: shuai hou <120306274@qq.com> Co-authored-by: houshuai <houshuai@jiguang.cn> Co-authored-by: Tq <tianqitobethefirst@gmail.com> Co-authored-by: JinyLeeChina <jiny.li@foxmail.com>
This commit is contained in:
parent
520e72f3de
commit
51efcbffc0
|
|
@ -18,11 +18,11 @@
|
||||||
package org.apache.dolphinscheduler.plugin.alert.script;
|
package org.apache.dolphinscheduler.plugin.alert.script;
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.alert.api.AlertResult;
|
import org.apache.dolphinscheduler.alert.api.AlertResult;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public final class ScriptSender {
|
public final class ScriptSender {
|
||||||
private static final Logger log = org.slf4j.LoggerFactory.getLogger(ScriptSender.class);
|
private static final Logger log = org.slf4j.LoggerFactory.getLogger(ScriptSender.class);
|
||||||
private static final String ALERT_TITLE_OPTION = " -t ";
|
private static final String ALERT_TITLE_OPTION = " -t ";
|
||||||
|
|
@ -53,6 +53,21 @@ public final class ScriptSender {
|
||||||
alertResult.setMessage("shell script not support windows os");
|
alertResult.setMessage("shell script not support windows os");
|
||||||
return alertResult;
|
return alertResult;
|
||||||
}
|
}
|
||||||
|
//validate script path in case of injections
|
||||||
|
File shellScriptFile = new File(scriptPath);
|
||||||
|
//validate existence
|
||||||
|
if (!shellScriptFile.exists()) {
|
||||||
|
logger.error("shell script not exist : {}", scriptPath);
|
||||||
|
alertResult.setMessage("shell script not exist : " + scriptPath);
|
||||||
|
return alertResult;
|
||||||
|
}
|
||||||
|
//validate is file
|
||||||
|
if (!shellScriptFile.isFile()) {
|
||||||
|
logger.error("shell script is not a file : {}", scriptPath);
|
||||||
|
alertResult.setMessage("shell script is not a file : " + scriptPath);
|
||||||
|
return alertResult;
|
||||||
|
}
|
||||||
|
|
||||||
String[] cmd = {"/bin/sh", "-c", scriptPath + ALERT_TITLE_OPTION + "'" + title + "'" + ALERT_CONTENT_OPTION + "'" + content + "'" + ALERT_USER_PARAMS_OPTION + "'" + userParams + "'"};
|
String[] cmd = {"/bin/sh", "-c", scriptPath + ALERT_TITLE_OPTION + "'" + title + "'" + ALERT_CONTENT_OPTION + "'" + content + "'" + ALERT_USER_PARAMS_OPTION + "'" + userParams + "'"};
|
||||||
int exitCode = ProcessUtils.executeScript(cmd);
|
int exitCode = ProcessUtils.executeScript(cmd);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -925,16 +925,20 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ProcessDefinition processDefinition = dagDataSchedule.getProcessDefinition();
|
ProcessDefinition processDefinition = dagDataSchedule.getProcessDefinition();
|
||||||
|
|
||||||
|
// generate import processDefinitionName
|
||||||
|
String processDefinitionName = recursionProcessDefinitionName(projectCode, processDefinition.getName(), 1);
|
||||||
|
String importProcessDefinitionName = processDefinitionName + "_import_" + DateUtils.getCurrentTimeStamp();
|
||||||
|
|
||||||
//unique check
|
//unique check
|
||||||
Map<String, Object> checkResult = verifyProcessDefinitionName(loginUser, projectCode, processDefinition.getName());
|
Map<String, Object> checkResult = verifyProcessDefinitionName(loginUser, projectCode, importProcessDefinitionName);
|
||||||
if (Status.SUCCESS.equals(checkResult.get(Constants.STATUS))) {
|
if (Status.SUCCESS.equals(checkResult.get(Constants.STATUS))) {
|
||||||
putMsg(result, Status.SUCCESS);
|
putMsg(result, Status.SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
result.putAll(checkResult);
|
result.putAll(checkResult);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String processDefinitionName = recursionProcessDefinitionName(projectCode, processDefinition.getName(), 1);
|
processDefinition.setName(importProcessDefinitionName);
|
||||||
processDefinition.setName(processDefinitionName + "_import_" + DateUtils.getCurrentTimeStamp());
|
|
||||||
processDefinition.setId(0);
|
processDefinition.setId(0);
|
||||||
processDefinition.setProjectCode(projectCode);
|
processDefinition.setProjectCode(projectCode);
|
||||||
processDefinition.setUserId(loginUser.getId());
|
processDefinition.setUserId(loginUser.getId());
|
||||||
|
|
|
||||||
|
|
@ -755,7 +755,7 @@ CREATE TABLE t_ds_resources
|
||||||
create_time datetime DEFAULT NULL,
|
create_time datetime DEFAULT NULL,
|
||||||
update_time datetime DEFAULT NULL,
|
update_time datetime DEFAULT NULL,
|
||||||
pid int(11) DEFAULT NULL,
|
pid int(11) DEFAULT NULL,
|
||||||
full_name varchar(64) DEFAULT NULL,
|
full_name varchar(128) DEFAULT NULL,
|
||||||
is_directory tinyint(4) DEFAULT NULL,
|
is_directory tinyint(4) DEFAULT NULL,
|
||||||
PRIMARY KEY (id),
|
PRIMARY KEY (id),
|
||||||
UNIQUE KEY t_ds_resources_un (full_name, type)
|
UNIQUE KEY t_ds_resources_un (full_name, type)
|
||||||
|
|
|
||||||
|
|
@ -749,7 +749,7 @@ CREATE TABLE `t_ds_resources` (
|
||||||
`create_time` datetime DEFAULT NULL COMMENT 'create time',
|
`create_time` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
`update_time` datetime DEFAULT NULL COMMENT 'update time',
|
`update_time` datetime DEFAULT NULL COMMENT 'update time',
|
||||||
`pid` int(11) DEFAULT NULL,
|
`pid` int(11) DEFAULT NULL,
|
||||||
`full_name` varchar(64) DEFAULT NULL,
|
`full_name` varchar(128) DEFAULT NULL,
|
||||||
`is_directory` tinyint(4) DEFAULT NULL,
|
`is_directory` tinyint(4) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `t_ds_resources_un` (`full_name`,`type`)
|
UNIQUE KEY `t_ds_resources_un` (`full_name`,`type`)
|
||||||
|
|
|
||||||
|
|
@ -640,7 +640,7 @@ CREATE TABLE t_ds_resources (
|
||||||
create_time timestamp DEFAULT NULL ,
|
create_time timestamp DEFAULT NULL ,
|
||||||
update_time timestamp DEFAULT NULL ,
|
update_time timestamp DEFAULT NULL ,
|
||||||
pid int,
|
pid int,
|
||||||
full_name varchar(64),
|
full_name varchar(128),
|
||||||
is_directory boolean DEFAULT FALSE,
|
is_directory boolean DEFAULT FALSE,
|
||||||
PRIMARY KEY (id),
|
PRIMARY KEY (id),
|
||||||
CONSTRAINT t_ds_resources_un UNIQUE (full_name, type)
|
CONSTRAINT t_ds_resources_un UNIQUE (full_name, type)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
|
||||||
|
|
||||||
|
-- uc_dolphin_T_t_ds_resources_R_full_name
|
||||||
|
drop PROCEDURE if EXISTS uc_dolphin_T_t_ds_resources_R_full_name;
|
||||||
|
delimiter d//
|
||||||
|
CREATE PROCEDURE uc_dolphin_T_t_ds_resources_R_full_name()
|
||||||
|
BEGIN
|
||||||
|
IF EXISTS (SELECT 1 FROM information_schema.COLUMNS
|
||||||
|
WHERE TABLE_NAME='t_ds_resources'
|
||||||
|
AND TABLE_SCHEMA=(SELECT DATABASE())
|
||||||
|
AND COLUMN_NAME ='full_name')
|
||||||
|
THEN
|
||||||
|
ALTER TABLE t_ds_resources MODIFY COLUMN `full_name` varchar(128);
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
|
||||||
|
d//
|
||||||
|
|
||||||
|
delimiter ;
|
||||||
|
CALL uc_dolphin_T_t_ds_resources_R_full_name;
|
||||||
|
DROP PROCEDURE uc_dolphin_T_t_ds_resources_R_full_name;
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
delimiter d//
|
||||||
|
CREATE OR REPLACE FUNCTION public.dolphin_update_metadata(
|
||||||
|
)
|
||||||
|
RETURNS character varying
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
COST 100
|
||||||
|
VOLATILE PARALLEL UNSAFE
|
||||||
|
AS $BODY$
|
||||||
|
DECLARE
|
||||||
|
v_schema varchar;
|
||||||
|
BEGIN
|
||||||
|
---get schema name
|
||||||
|
v_schema =current_schema();
|
||||||
|
|
||||||
|
--- alter column
|
||||||
|
EXECUTE 'ALTER TABLE ' || quote_ident(v_schema) ||'.t_ds_resources ALTER COLUMN full_name Type varchar(128)';
|
||||||
|
|
||||||
|
return 'Success!';
|
||||||
|
exception when others then
|
||||||
|
---Raise EXCEPTION '(%)',SQLERRM;
|
||||||
|
return SQLERRM;
|
||||||
|
END;
|
||||||
|
$BODY$;
|
||||||
|
|
||||||
|
select dolphin_update_metadata();
|
||||||
|
|
||||||
|
d//
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
@ -35,7 +35,7 @@ BIN_DIR=`dirname $0`
|
||||||
BIN_DIR=`cd "$BIN_DIR"; pwd`
|
BIN_DIR=`cd "$BIN_DIR"; pwd`
|
||||||
export DOLPHINSCHEDULER_HOME=`cd "$BIN_DIR/.."; pwd`
|
export DOLPHINSCHEDULER_HOME=`cd "$BIN_DIR/.."; pwd`
|
||||||
|
|
||||||
chmod -R 700 ${DOLPHINSCHEDULER_HOME}/config
|
chmod -R 700 ${DOLPHINSCHEDULER_HOME}/conf/config
|
||||||
source /etc/profile
|
source /etc/profile
|
||||||
set -a
|
set -a
|
||||||
source "${DOLPHINSCHEDULER_HOME}/conf/env/dolphinscheduler_env.sh"
|
source "${DOLPHINSCHEDULER_HOME}/conf/env/dolphinscheduler_env.sh"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue