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

Ana*_*gan 4 cassandra

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

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

小智 6

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

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

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

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

即将推出的Cassandra 1.2(目前处于测试阶段)可以改善对此类案例的处理 - 阅读Cassandra 1.2中的处理磁盘故障以获取详细信息.