dolphinscheduler-3.1.5异常记录

发布时间 2023-05-06 14:31:51作者: 钱塘江畔

1.背景

运行任务经常遇到TenantCode: test doesn't exist ,可是我已经通过test用户登录了服务器了,说明test用户是存在的。后来发现通过某个woker是不报错的,但是其他worker报错,实际上各个worker都是创建了test用户的。

2.解决

2.1猜测是缓存的问题,缓存失效导致差不到,因为配置了Caffeine缓存策略

2.2 经过源码溯源,发现是/etc/passwd文件中没有test用户(只有一个worker节点中是有test用户的,具体原因待查),而代码中是通过查询/etc/passswd来确认test是否存在的。所以将test用户添加到/etc/passwd中即可。

    /**
     * get user list from linux
     *
     * @return user list
     */
    private static List<String> getUserListFromLinux() throws IOException {
        List<String> userList = new ArrayList<>();

        try (
                BufferedReader bufferedReader = new BufferedReader(
                        new InputStreamReader(new FileInputStream("/etc/passwd")))) {
            String line;

            while ((line = bufferedReader.readLine()) != null) {
                if (line.contains(":")) {
                    String[] userInfo = line.split(":");
                    userList.add(userInfo[0]);
                }
            }
        }

3.引用

linux不使用useradd添加新用户
Caffeine缓存
缓存框架Caffeine探究
springboot集成Caffeine实现本地缓存