4

在 cassandra 中存储记录时(存储的一半记录),如果我的磁盘已满且没有空间,会发生什么?如果将抛出任何异常,那么该异常是什么?

第二种情况是,如果我在磁盘已满时创建新的密钥空间怎么办?如果将抛出任何异常,那么该异常是什么?

4

3 回答 3

6

这取决于您要写入的键空间是使用durable_writes=true 还是false 创建的(默认为true)。

如果是前者并且您的 commitlog 磁盘已满,则在写入 commitlog 时会抛出 IOException(但不会作为响应的一部分返回),并且请求将超时。

如果是后者,并且您的数据盘已满,您将获得成功响应。但是无法刷新到磁盘的 memtable 将继续增长,直到整个节点用完 RAM 并终止。

在第二种情况下,尝试写入提交日志或尝试将新模式刷新到磁盘时将引发异常,具体取决于哪个驱动器已满。在这两种情况下,请求都会超时。

即将推出的 Cassandra 1.2(目前处于测试阶段)改进了对此类情况的处理 - 请阅读Cassandra 1.2 中的处理磁盘故障了解详细信息。

于 2012-10-11T22:20:16.860 回答
1

如果磁盘已满意味着它会停止执行。我尝试了很多次,它一直停止执行。所以你的客户端 api 会抛出连接被拒绝的异常。

于 2013-01-15T11:28:18.483 回答
0

我想你会得到一个超时异常。我只是在尝试将数据加载到磁盘空间不足的主机上时遇到了这个问题。

于 2012-10-11T20:16:22.613 回答