如果在Cassandra中写入记录时磁盘已满,会发生什么?

时间:2012-09-28 11:08:59

标签: cassandra

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

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

3 个答案:

答案 0 :(得分:6)

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

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

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

在第二种情况下,尝试写入commitlog或尝试将新架构刷新到磁盘时会抛出异常,具体取决于哪个驱动器已满。在这两种情况下,请求都会超时。

即将推出的Cassandra 1.2(目前处于测试阶段)可以改善对此类案件的处理 - 详情请阅读Handling Disk Failures In Cassandra 1.2

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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