Skip to content

sessionPool java.net.SocketException: Connection reset #622

@piemon-nyah

Description

@piemon-nyah

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions