java 客户端 session expired

我们也碰到的同样的问题,服务版本 2.0.1,Java 客户端。
服务端 graphd 的 session_idle_timeout_secs=0,客户端从 pool 获取的 seesion 使用时仍会出现 “Session 4900 has expired” 的执行失败结果,请问下有比较好的解决办法吗?
@Shylock-Hg

@nicole 帮看看这个

每台graphd 都按照这个方式查一下 看是不是不同graphd配置的超时时间不同

1 个赞

确认了下所有 grpahd 配置都是

session_idle_timeout_secs=0
client_idle_timeout_secs=0

然后我们 Java 客户端在创建 pool 时使用的配置是

        NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig();
        nebulaPoolConfig.setMaxConnSize(nebulaPoolMaxConnectionNum);
        nebulaPoolConfig.setTimeout(nebulaPoolTimeout);
// 没有设置 idleTime,默认=0

graphd 的日志贴一下看看吧

我们找了 graphd 的服务日志,在客户端报错的那个时候附近,没有任何打印,很奇怪

Java 客户端版本是 2.0.0,并没有重复使用 session,每次执行语句之前都会从 pool 拿新的 session

报错时 是session间隔了一段时间没用,然后再用该session去执行请求么, 感觉像是session 过期时间的配置没生效。

我们的 session 都是需要才从 pool 拿,用完马上 release。nebula graphd 的 session 过期时间设置=0

那可能需要session 管理的开发同学看看,在设置了过期时间为0的前提下,什么情况还会session expired。 你查看一下报错的session 的id, 然后在console中执行下 show sessions,看看该session 是连接的哪个graphd服务。

我们现在没有办法复现这个问题了……

然后我们用的 v2.0.1 的版本,也不支持查 show sessions 呀……

:rofl: 你的代码中传给pool的地址是一个还是多个啊,如果是一个地址的话那也不用 show sessions来看的。

你下次复现的时候,看下对应graphd 服务的日志信息吧,还有meta服务的日志信息。

确认一下,你nebula-graphd.conf 文件中 local_config 的值是 true 还是false

这个配置项没有配置,curl 读到配置值是 0

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。