首页 > 解决方案 > jetcd-core v0.5.10 keepAlive 在一段时间后通过调用 onComplete 终止

问题描述

根据文档,keepAlive 应该更新租约,直到应用程序运行。我从 main 方法调用下面的代码片段,该方法继续运行,但租约在一段时间后(随机时间,如 20 分钟、30 分钟左右)仍然到期,并接收到观察者的 onCompleted() 方法的回调。

Client client = Client.builder().endpoints("http://localhost:2379").build();
Lease leaseClient = client.getLeaseClient();
        Long leaseid = leaseClient.grant(60).get().getID();
        //leaseClient.keepAliveOnce(leaseid, )
        leaseClient.keepAlive(leaseid, new StreamObserver<LeaseKeepAliveResponse>() {
            @Override
            public void onNext(LeaseKeepAliveResponse leaseKeepAliveResponse) {
                System.out.println("Lease renewed at "+ LocalDateTime.now() + " for "+ leaseKeepAliveResponse.getTTL());
            }

            @Override
            public void onError(Throwable throwable) {
                System.out.println("Error occurred"+throwable.getCause());
            }

            @Override
            public void onCompleted() {
                System.out.println("Completed the renewal");
            }
        });

看起来keepAlive重试在一定时间后没有发生,因此租约到期导致调用onCompleted。

我尝试将 jetcd-core 版本降级到 0.5.0,但仍然观察到相同的行为。

从 etcdctl 触发的 keepAlive 运行良好。

任何指针可能是什么原因。

标签: etcd

解决方案


推荐阅读