[Fix-#3487][api、dao] cherry pick from dev to fix that create folder duplicate name under multithreading
parent
268d09de1a
commit
d6f62f1de4
|
|
@ -39,6 +39,7 @@ import org.apache.dolphinscheduler.dao.utils.ResourceProcessDefinitionUtils;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
|
@ -137,6 +138,10 @@ public class ResourcesService extends BaseService {
|
|||
}
|
||||
}
|
||||
result.setData(resultMap);
|
||||
} catch (DuplicateKeyException e) {
|
||||
logger.error("resource directory {} has exist, can't recreate", fullName);
|
||||
putMsg(result, Status.RESOURCE_EXIST);
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
logger.error("resource already exists, can't recreate ", e);
|
||||
throw new RuntimeException("resource already exists, can't recreate");
|
||||
|
|
|
|||
|
|
@ -499,7 +499,8 @@ CREATE TABLE t_ds_resources (
|
|||
pid int,
|
||||
full_name varchar(64),
|
||||
is_directory int,
|
||||
PRIMARY KEY (id)
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT t_ds_resources_un UNIQUE (full_name, type)
|
||||
) ;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -630,7 +630,8 @@ CREATE TABLE `t_ds_resources` (
|
|||
`pid` int(11) DEFAULT NULL,
|
||||
`full_name` varchar(64) DEFAULT NULL,
|
||||
`is_directory` tinyint(4) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `t_ds_resources_un` (`full_name`,`type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
|
||||
|
||||
-- ----------------------------
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* 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',''));
|
||||
|
||||
|
||||
-- add t_ds_resources_un
|
||||
DROP PROCEDURE IF EXISTS uc_dolphin_T_t_ds_resources_un;
|
||||
delimiter d//
|
||||
CREATE PROCEDURE uc_dolphin_T_t_ds_resources_un()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM information_schema.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_NAME = 't_ds_resources'
|
||||
AND CONSTRAINT_NAME = 't_ds_resources_un'
|
||||
)
|
||||
THEN
|
||||
ALTER TABLE t_ds_resources ADD CONSTRAINT t_ds_resources_un UNIQUE KEY (full_name,`type`);
|
||||
END IF;
|
||||
END;
|
||||
|
||||
d//
|
||||
|
||||
delimiter ;
|
||||
CALL uc_dolphin_T_t_ds_resources_un();
|
||||
DROP PROCEDURE IF EXISTS uc_dolphin_T_t_ds_resources_un;
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
-- add t_ds_resources_un
|
||||
CREATE OR REPLACE FUNCTION uc_dolphin_T_t_ds_resources_un() RETURNS void AS $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_NAME = 't_ds_resources'
|
||||
AND CONSTRAINT_NAME = 't_ds_resources_un'
|
||||
)
|
||||
THEN
|
||||
ALTER TABLE t_ds_resources ADD CONSTRAINT t_ds_resources_un UNIQUE (full_name,"type");
|
||||
END IF;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
SELECT uc_dolphin_T_t_ds_resources_un();
|
||||
DROP FUNCTION IF EXISTS uc_dolphin_T_t_ds_resources_un();
|
||||
Loading…
Reference in New Issue