修改oozie action node name的长度限制

        在使用oozie的过程中,可能会遇到如下问题:

        E0724: Invalid node name, name [your action node name] must be 50 chars or less

        可是去mysql里查看表结构,发现WF_ACTIONS表的name字段长度是varchar(255),于是去查看源代码,发现在core包里的ParamChecker类里有这样一个方法被LiteWorkflowAppParser类调用了

    private static final int MAX_NODE_NAME_LEN = 50;

    /**
     * Check that the given string is a valid action name [a-zA-Z_][0-9a-zA-Z_\-]* and not longer than 50 chars.
     *
     * @param actionName string to validate is a token.
     * @return the given string.
     */
    public static String validateActionName(String actionName) {
        ParamChecker.notEmpty(actionName, "action name");
        if (actionName.length() > MAX_NODE_NAME_LEN) {
            throw new IllegalArgumentException(XLog.format("name [{0}] must be {1} chars or less", actionName,
                                                           MAX_NODE_NAME_LEN));
        }

        char c = actionName.charAt(0);
        if (!(c >= 'A' && c <= 'Z') && !(c >= 'a' && c <= 'z') && !(c == '_')) {
            throw new IllegalArgumentException(XLog.format("name [{0}], must start with [A-Za-z_]", actionName));
        }
        for (int i = 1; i < actionName.length(); i++) {
            c = actionName.charAt(i);
            if (!(c >= '0' && c <= '9') && !(c >= 'A' && c <= 'Z') && !(c >= 'a' && c <= 'z')
                    && !(c == '_' || c == '-')) {
                throw new IllegalArgumentException(XLog.format("name [{0}] must be [A-Za-z_][0-9A-Za-z_]*", actionName));
            }
        }
        return actionName;
    }

这里的MAX_NODE_NAME_LEN被写死了50, 于是修改成100重新编译打包,打包时最好跳过测试,mvn install -Dmaven.test.skip=true

打好包之后把 oozie-core-xxx.jar包拷到oozie的安装目录覆盖掉原jar包,重启oozie即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值