我OperationTimedOutException
在删除键空间时得到了 cassandra。尽管我已经给了60000 毫秒(1 分钟) timeOut
的时间来阻止,直到我Future
从 cassandra 获得对象executeAsync
。但它立即抛出timeoutexception
而没有等待完成 1 分钟。
这就是我使用java删除键空间的方式 -
List<KeyspaceMetadata> keyspaceMetadataList = cluster.getMetadata().getKeyspaces();
for(KeyspaceMetadata ks: keyspaceMetadataList)
{
if (ks.getName().startsWith("system"))
{
continue;
}
try
{
session.executeAsync("drop keyspace " + ks.getName()).get(1000 * 60, TimeUnit.MILLISECONDS);
log.info("Dropped Keyspace: " + ks.getName());
}
catch( InterruptedException | ExecutionException | TimeoutException e )
{
log.error("Something went wrong: " + e);
}
}
您可以看到下面给出的行,我在其中强行告诉呼叫等待至少 60 秒,但即使在此之前,我得到了TimeOutException
.
session.executeAsync("drop keyspace " + ks.getName()).get(1000 * 60, TimeUnit.MILLISECONDS);
我不确定这是否是以编程方式增加超时的正确方法。如果有其他好的方法,请告诉我。