mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-03 04:39:00 +08:00
[Fix-3463][api]Fixed that run the sql task will be failure after rename the udf resource (#3482)
This commit is contained in:
parent
a678c82760
commit
c8322482bb
@ -436,14 +436,38 @@ public class ResourcesService extends BaseService {
|
||||
if (CollectionUtils.isNotEmpty(childrenResource)) {
|
||||
String matcherFullName = Matcher.quoteReplacement(fullName);
|
||||
List<Resource> childResourceList = new ArrayList<>();
|
||||
List<Resource> resourceList = resourcesMapper.listResourceByIds(childrenResource.toArray(new Integer[childrenResource.size()]));
|
||||
Integer[] childResIdArray = childrenResource.toArray(new Integer[childrenResource.size()]);
|
||||
List<Resource> resourceList = resourcesMapper.listResourceByIds(childResIdArray);
|
||||
childResourceList = resourceList.stream().map(t -> {
|
||||
t.setFullName(t.getFullName().replaceFirst(originFullName, matcherFullName));
|
||||
t.setUpdateTime(now);
|
||||
return t;
|
||||
}).collect(Collectors.toList());
|
||||
resourcesMapper.batchUpdateResource(childResourceList);
|
||||
|
||||
if (ResourceType.UDF.equals(resource.getType())) {
|
||||
List<UdfFunc> udfFuncs = udfFunctionMapper.listUdfByResourceId(childResIdArray);
|
||||
if (CollectionUtils.isNotEmpty(udfFuncs)) {
|
||||
udfFuncs = udfFuncs.stream().map(t -> {
|
||||
t.setResourceName(t.getResourceName().replaceFirst(originFullName, matcherFullName));
|
||||
t.setUpdateTime(now);
|
||||
return t;
|
||||
}).collect(Collectors.toList());
|
||||
udfFunctionMapper.batchUpdateUdfFunc(udfFuncs);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (ResourceType.UDF.equals(resource.getType())) {
|
||||
List<UdfFunc> udfFuncs = udfFunctionMapper.listUdfByResourceId(new Integer[]{resourceId});
|
||||
if (CollectionUtils.isNotEmpty(udfFuncs)) {
|
||||
udfFuncs = udfFuncs.stream().map(t -> {
|
||||
t.setResourceName(fullName);
|
||||
t.setUpdateTime(now);
|
||||
return t;
|
||||
}).collect(Collectors.toList());
|
||||
udfFunctionMapper.batchUpdateUdfFunc(udfFuncs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
putMsg(result, Status.SUCCESS);
|
||||
|
@ -16,9 +16,9 @@
|
||||
*/
|
||||
package org.apache.dolphinscheduler.dao.mapper;
|
||||
|
||||
import org.apache.dolphinscheduler.dao.entity.UdfFunc;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.dolphinscheduler.dao.entity.UdfFunc;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@ -100,5 +100,12 @@ public interface UdfFuncMapper extends BaseMapper<UdfFunc> {
|
||||
*/
|
||||
List<UdfFunc> listAuthorizedUdfByResourceId(@Param("userId") int userId,@Param("resourceIds") int[] resourceIds);
|
||||
|
||||
/**
|
||||
* batch update udf func
|
||||
* @param udfFuncList udf list
|
||||
* @return update num
|
||||
*/
|
||||
int batchUpdateUdfFunc(@Param("udfFuncList") List<UdfFunc> udfFuncList);
|
||||
|
||||
|
||||
}
|
||||
|
@ -111,4 +111,17 @@
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<update id="batchUpdateUdfFunc" parameterType="java.util.List">
|
||||
<foreach collection="udfFuncList" item="udf" index="index" open="" close="" separator =";">
|
||||
update t_ds_udfs
|
||||
<set>
|
||||
resource_name=#{udf.resourceName},
|
||||
update_time=#{udf.updateTime}
|
||||
</set>
|
||||
<where>
|
||||
id=#{udf.id}
|
||||
</where>
|
||||
</foreach>
|
||||
</update>
|
||||
</mapper>
|
@ -33,6 +33,7 @@ import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@ -303,4 +304,16 @@ public class UdfFuncMapperTest {
|
||||
authorizedUdfFunc = udfFuncMapper.listAuthorizedUdfFunc(generalUser1.getId(), udfFuncIds);
|
||||
Assert.assertTrue(authorizedUdfFunc.stream().map(t -> t.getId()).collect(toList()).containsAll(Arrays.asList(udfFuncIds)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void batchUpdateUdfFuncTest(){
|
||||
//create general user
|
||||
User generalUser1 = createGeneralUser("user1");
|
||||
UdfFunc udfFunc = insertOne(generalUser1);
|
||||
udfFunc.setResourceName("/updateTest");
|
||||
List<UdfFunc> udfFuncList = new ArrayList<>();
|
||||
udfFuncList.add(udfFunc);
|
||||
Assert.assertTrue(udfFuncMapper.batchUpdateUdfFunc(udfFuncList)>0);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user