etcd - 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 运行良好。
任何指针可能是什么原因。
解决方案
推荐阅读
- haskell - Haskell:给定一个数字列表和一个数字 k,返回列表中的任何两个数字加起来是否为 k
- python - 尝试在循环中获取函数的最小值,同时将值从列表 A 传输到列表 B
- oauth - wso2 身份服务器 5.4 Google 作为 IdP
- java - 如何在变量中节省时间
- jsp - 如何将表中复选框的值存储到数组并传递到另一个jsp页面?
- javascript - 有没有办法修改从 material-ui 生成的标签?
- powershell - 可能是一个错误。PowerShell get-team 搜索 $filter=resourceProvisioningOptions/Any(x:x eq 'Team')
- go - 我们可以在不“手动”构造的情况下在数组和结构之间进行转换吗?
- sql - 按缺失或无效分组。福克斯专业版 9
- javascript - 我不确定什么时候预渲染画布是合适的!(我在描述中的例子)