-
Notifications
You must be signed in to change notification settings - Fork 126
sessionPool java.net.SocketException: Connection reset #622
Description
General Question
当我使用springboot将sessionPool注册为bean,执行查询总是会报错
execute failed for IOErrorException, message: java.net.SocketException: Connection reset, retry: 1
然后需要等待很长时间才能执行成功
客户端与服务端均为3.8.0
<dependency>
<groupId>com.vesoft</groupId>
<artifactId>client</artifactId>
<version>3.8.0</version>
</dependency>session pool如下
@Configuration
public class NebulaSessionConfig {
@Value("${nebula.url:172.16.20.110}")
private String nebulaUrl;
@Value("${nebula.port:9669}")
private Integer nebulaPort;
@Value("${nebula.spaceName:knowledge_graph}")
private String nebulaSpaceName;
@Value("${nebula.user:root}")
private String nebulaUser;
@Value("${nebula.password:123}")
private String nebulaPassword;
@Value("${nebula.maxSessionSize:10}")
private Integer maxSessionSize;
@Value("${nebula.minSessionSize:10}")
private Integer minSessionSize;
@Bean
public SessionPool sessionPool(){
List<HostAddress> addresses = Arrays.asList(new HostAddress(nebulaUrl, nebulaPort));
SessionPoolConfig sessionPoolConfig =
new SessionPoolConfig(addresses, nebulaSpaceName, nebulaUser, nebulaPassword).setMaxSessionSize(maxSessionSize)
.setMinSessionSize(minSessionSize).setRetryConnectTimes(3).setWaitTime(3000).setRetryTimes(3).setIntervalTime(1000);
return new SessionPool(sessionPoolConfig);
}
}测试用例如下
@Test
public void nebulaQueryTest() throws InterruptedException {
int threadNum = 8;
ExecutorService executorService = Executors.newFixedThreadPool(threadNum);
CountDownLatch count = new CountDownLatch(threadNum);
for (int i = 0; i < threadNum; i++) {
executorService.submit(() -> {
try {
long startMills = System.currentTimeMillis();
ResultSet result = sessionPool.execute("match (v:pml) return v limit 1");
log.info("Result: {}", result.toString());
long endMills = System.currentTimeMillis();
log.info("query ms ={}",endMills - startMills);
} catch (Exception e) {
log.error("error",e);
}
});
}
try {
count.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}日志报错如下
2025-10-30 09:02:37.688 WARN 39016 --- [pool-3-thread-4] c.v.nebula.client.graph.SessionPool : execute failed for IOErrorException, message: java.net.SocketException: Connection reset, retry: 1
2025-10-30 09:02:37.688 WARN 39016 --- [pool-3-thread-3] c.v.nebula.client.graph.SessionPool : execute failed for IOErrorException, message: java.net.SocketException: Connection reset, retry: 1
2025-10-30 09:02:37.688 WARN 39016 --- [pool-3-thread-5] c.v.nebula.client.graph.SessionPool : execute failed for IOErrorException, message: java.net.SocketException: Connection reset, retry: 1
2025-10-30 09:02:38.726 INFO 39016 --- [pool-3-thread-5] c.v.i.a.graph.service.NebulaServiceTest : Result: ColumnName: [v], Rows: [("0fa8d790c73b48c9973ff4c41f9b5d9ddf58e6626722ec482936b335ccf8f05a" :pml {descp: ""})]
2025-10-30 09:02:57.849 WARN 39016 --- [pool-3-thread-7] c.v.nebula.client.graph.SessionPool : execute failed for IOErrorException, message: java.net.SocketException: Connection reset, retry: 2
2025-10-30 09:02:57.849 WARN 39016 --- [pool-3-thread-6] c.v.nebula.client.graph.SessionPool : execute failed for IOErrorException, message: java.net.SocketException: Connection reset, retry: 2
2025-10-30 09:02:58.916 INFO 39016 --- [pool-3-thread-2] c.v.i.a.graph.service.NebulaServiceTest : Result: ColumnName: [v], Rows: [("0fa8d790c73b48c9973ff4c41f9b5d9ddf58e6626722ec482936b335ccf8f05a" :pml {descp: ""})]
2025-10-30 09:02:58.916 INFO 39016 --- [pool-3-thread-2] c.v.i.a.graph.service.NebulaServiceTest : query ms =40383
2025-10-30 09:02:58.927 INFO 39016 --- [pool-3-thread-8] c.v.i.a.graph.service.NebulaServiceTest : Result: ColumnName: [v], Rows: [("0fa8d790c73b48c9973ff4c41f9b5d9ddf58e6626722ec482936b335ccf8f05a" :pml {descp: ""})]
2025-10-30 09:02:58.927 INFO 39016 --- [pool-3-thread-8] c.v.i.a.graph.service.NebulaServiceTest : query ms =40393
2025-10-30 09:03:18.007 ERROR 39016 --- [pool-3-thread-7] c.v.i.a.graph.service.NebulaServiceTest : error
com.vesoft.nebula.client.graph.exception.IOErrorException: java.net.SocketException: Connection reset
at com.vesoft.nebula.client.graph.net.SyncConnection.executeWithParameter(SyncConnection.java:278)
at com.vesoft.nebula.client.graph.net.SyncConnection.execute(SyncConnection.java:249)
at com.vesoft.nebula.client.graph.NebulaSession.execute(NebulaSession.java:64)
at com.vesoft.nebula.client.graph.SessionPool.execute(SessionPool.java:156)
at com.vivo.it.ai.graph.service.NebulaServiceTest.lambda$nebulaQueryTest$0(NebulaServiceTest.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)