StarRocks-2.2.2 使用UDF导致BE进程挂掉,急需解决!!!

【详述】be挂掉
【业务影响】
【StarRocks版本】例如:2.2.2
【集群规模】例如:3fe(3follower)+3be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:40C/128G/千兆
【附件】
集群没有做什么操作,新安装的2.2.2版本的sr集群,某台be挂掉,日志如下:
be.info日志:


be.out日志:

补充一下:挂掉之前创建并执行了一下udf

经过测试发现是udf导致be挂掉,每次一执行udf be就会挂,不执行没问题。

麻烦贴下be.warn的日志信息。能复现的话能生成下core文件么。方便定位下问题

be宕机和warn日志时间不匹配,比如我刚刚15:50分复现这个问题,而warn日志还是14:34分的。而且warn日志的尾部内容是


你说的core文件怎么生成,有详细说明吗?

ulimit -c unlimited 可以打开core文件生成,可以简单参考此处内容
https://www.likecs.com/show-52002.html

你好,按照操作没有产生core文件。还有什么其他的办法吗?

补充一下udf详细信息:
public class ZeroWidthAssert {

public final Boolean evaluate(String content, String regexp) {
    Pattern pattern = Pattern.compile(regexp);
    Matcher matcher = pattern.matcher(content);
    if (matcher.find()) {
        return true;
    } else {
        return false;
    }
}

}
mvn package
CREATE FUNCTION zregexp(string, string)

RETURNS boolean

properties (

"symbol" = "com.xxx.bigdata.ZeroWidthAssert" ,

"type" = "StarrocksJar" ,

"file" = "http://ip:80/jar/udf-1.0-SNAPSHOT-jar-with-dependencies.jar"

);

这个udf的功能是匹配零宽断言,现在sr里的regexp函数不支持零宽断言,所以不得不使用udf,但是使用udf会导致某个be进程挂掉,这给我们带来非常大的麻烦,升级就是为了能够使用udf匹配零宽断言。

你在BE的机器上check一下能不能下载到这个jar?

可以的
wget http://ip:80/jar/udf-1.0-SNAPSHOT-jar-with-dependencies.jar

be.conf 中配置 sys_minidump_enable = true
然后重启一下be

dump文件生成了e48c4d50-ad3d-4f8a-f6db98b8-9e15741f.dmp (15.7 MB) 麻烦您看一下,谢谢。

请问一下,从日志里能看出什么原因吗?

你看一下be/lib/udf 有没有这个目录

有的:

不过是root用户创建的这个udf,跟这个用户权限是不是有关系。

那应该就是这个问题了,没权限写入。。。

你把这个文件夹删了重新建一下,crash这个2.3已经fix了,我们下次发版的时候带上

好的 :pray: :pray: :pray: :pray: :pray:

不是这个权限问题,我改了权限还是会挂,只不过我会监控be的状态,挂了重启,我以为好了 :joy:

ll be/lib/udf

他现在就是没办法创建文件才报错了,他下面还有好多目录,你把 be/lib/udf 直接删了吧