原使用nebulav3.0.2版本,后升级到v3.2.1版本,偶现GET SUBGRAPH报错:failed: Auth failed: Insert userIpSessionCount to local cache failed.

nebula 版本:3.2.1(原版本3.0.2)
部署方式:分布式
安装方式:RPM
是否为线上版本:N
硬件信息
- Centos7.4 x86_64
- 3T普通磁盘
- 16核128gb

  • 原使用3.0.2版本,升级3.2.1版本后,GET SUBGRAPH报错:failed: Auth failed: Insert userIpSessionCount to local cache failed.

  • 相关的ngql预先格式化的文本 GET SUBGRAPH WITH PROP 3 STEPS FROM '102_19050594-001_007_004' OUT COURSE_LEARN_PATH,LEARN_PATH_ANCHOR_POINT,ANCHOR_POINT_TOPIC YIELD VERTICES AS nodes, EDGES AS relationships;

traceId=294e2fd9-0be8-443c-abe9-db773e2a45c9;Execute: `GET SUBGRAPH WITH PROP 3 STEPS FROM 'xxxx' OUT COURSE_LEARN_PATH,LEARN_PATH_ANCHOR_POINT,ANCHOR_POINT_TOPIC YIELD VERTICES AS nodes, EDGES AS relationships;`, failed: Auth failed: Insert userIpSessionCount to local cache failed.

请nebula大佬们 帮忙看一下该问题,感谢~ :grinning:

用的是 studio 来连接 nebulagraph 报错了么?

升级到最新的版本吧 3.4

不是的,是java Client 3.0.0连接执行的代码逻辑。


com.vesoft
client
3.0.0

感谢回答,nebula java client库建议 用什么版本 ?3.4.0吗?

大佬,麻烦分析检查下:failed: Auth failed: Insert userIpSessionCount to local cache failed. 这个日志,可能是哪块问题?

版本对齐,如果你内核是 3.2 那客户端也用 3.2(注意这里要留意 studio,studio 3.x 版本和内核不对齐,参考下图)

你的报错信息大概是连接池有点问题,你试试客户端重新连接下内核看看。

亲,我这边情况是 java Client 3.0.0连接的 nebula graph社区版 3.2.1的三节点分布式。

3.2.1的nebula服务 我看了官方文档 如下:
NebulaGraph 版本 NebulaGraph Java 版本
3.2.1 3.0.0

看了Tags · vesoft-inc/nebula-java · GitHub 并没有NebulaGraph Java Client 3.2.x版本,请帮忙分析看下情况~~ 感谢

  1. 你的代码中getSeesion获取是正常的吗?

贴一下你的java代码,并确认下是在getSession报错 还是在执行语句时报错。

这个错误日志是服务端返回的,是创建session时进行session计数失败而返回的。

这个现象 也是偶现的,不好再次捕捉到。

目前我用3.4的nebula java client 链接 3.4nebula服务测试,运行几w次没有复现。

之前的情况是是nebula java client 3.0.0连接的 nebula graph社区版 3.2.1的三节点分布式。

还请大佬走 nebula服务端分析下。

目前这边客户端java代码看 异常捕捉 包含了getSession和 执行语句。
那就有可能 nebula服务端异常在 创建session阶段抛出。

你单独catch getSession语句吧,看看什么情况下会出现auth那个异常

亲,顺便问一下 nebula3.4.0社区版本,可以通过 nebula console命令 主动触发均衡分片分布的操作吗;或者说 如果ADD HOST后,原有的数据空间,能自动实现 节点的数据分片均衡吗?

可以的,配置里设enable_experimental_feature为1就可以用balance data了。

traceId=130de592-1a7d-4fca-b5ad-47307cce81b0;nebulaPool.getSession Error: Auth failed: Insert userIpSessionCount to local cache failed.

确实在getSession这块捕获到此异常。请帮忙再分析以下:

目前我用3.4的nebula java client 链接 3.4nebula服务测试。
maxConnSize=100

以下为默认
minConnSize=0
timeout=0
idleTime=0
intervalIdle=-1
waitTime=0

获取nebulaPool是直接参考官网样例的:

 try {
            List<HostAddress> addresses = Arrays.asList(graphProperties.getHosts().split(","))
                    .stream().map(item -> {
                        String ip = item.split(":")[0];
                        Integer port = Integer.parseInt(item.split(":")[1]);
                        return new HostAddress(ip, port);
                    }).collect(Collectors.toList());

            NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig();
            nebulaPoolConfig.setMaxConnSize(graphProperties.getMaxConnSize());
            nebulaPoolConfig.setMinConnSize(graphProperties.getMinConnSize());
            nebulaPoolConfig.setTimeout(graphProperties.getTimeout());
            nebulaPoolConfig.setIdleTime(graphProperties.getIdleTime());
            nebulaPoolConfig.setIntervalIdle(graphProperties.getIntervalIdle());
            nebulaPoolConfig.setWaitTime(graphProperties.getWaitTime());
            NebulaPool pool = new NebulaPool();
            pool.init(addresses, nebulaPoolConfig);
            return pool;
        } catch (Exception e) {
            log.error("Nebula pool init error", e);
            return null;
        }

cc @Aiee

大佬,nebula 集群 从3.0.2升级到 3.2.1/3.4.0版本 均存在该问题;
如果用3.4.0 java client 连接 3.0.2 nebula集群,没有该问题,请提供解决方案~
感谢~~

GET SUBGRAPH报错:failed: Auth failed: Insert userIpSessionCount to local cache failed.

和语句没关系, 3.1 引入了对用户/IP组合的 session 数限制 https://github.com/vesoft-inc/nebula/pull/3729, 可能有些并发问题, 方便的话去提个 issue 吧