gpt4 book ai didi

java - Accumulo TableOperations.createTable 是同步的吗?

转载 作者:行者123 更新时间:2023-11-30 11:01:41 25 4
gpt4 key购买 nike

我正在使用 Accumulo 1.6.2,我发现了一个问题,即 TableOperations.createTable 可能会无一异常(exception)地返回,但表格仍未准备好。

例如在下面的代码中:

String tableName = "foo";
TableOperations operations = connector.tableOperations();

if(!operations.exists(tableName))
{
operations.createTable(tableName);
}

//Make a bunch of mutations that write to the table
BatchWriter batchWriter = connector.createBatchWriter(tableName, someConfig);

batchWriter.addMutations(mutations);
batchWriter.close();

当我用上面的代码运行单元测试时,我有时会得到一个异常,表明表 foo 不存在。但是,代码只是创建了表 foo

我唯一能想到的是,在 createTable() 返回之后有一个时间窗口,表可能仍然不存在。

Javadoc 没有解释该行为。我还阅读了 Orielly 的 Accumulo 书的早期发行副本,但它也没有说。

这里正确的模式是什么?我可以添加如下内容:

//Make table    
while(!operations.exists(tableName){}
//Do stuff with table

然而,这似乎是一件非常丑陋且可能容易出错的事情。我希望这里有更好的模式。

最佳答案

创建表应该是一个同步操作。您应该不会看到上述示例的异常。

如果您可以提供特定的异常,这可能暗示需要修复的错误。

关于java - Accumulo TableOperations.createTable 是同步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com