2013-05-17 57 views
3

问题:drop keyspace MyKeyspace;挂起。删除密钥空间挂起

环境: 这是一个Ubuntu 12.04 64位virtualbox,运行一个Cassandra实例(在开发机器上)。

Cassandra是1.1.6:

[email protected]:~$ /usr/bin/nodetool -h localhost version 
ReleaseVersion: 1.1.6 

充足的可用磁盘空间:

[email protected]:~$ df 
Filesystem    1K-blocks Used Available Use% Mounted on 
/dev/mapper/myhost-root 100232772 3100308 92112816 4%/
udev      1016760  4 1016756 1% /dev 
tmpfs      410340  268 410072 1% /run 
none       5120  0  5120 0% /run/lock 
none      1025844  0 1025844 0% /run/shm 
/dev/sda1     233191 24999 195751 12% /boot 

设备处于闲置状态:我

[email protected]:~$ uptime 
21:24:50 up 3:46, 2 users, load average: 0.06, 0.04, 0.05 

如何到达那里:

机器运行另一个分贝,很长时间都很好。现在我创建了一个新的密钥空间MyKeyspace,然后运行一个Java程序来导入数据(使用titan图形,但这不重要)。进口记录一对夫妇一千(一对夫妇MB的只有)进口方案没有取得进展了,而且之后记录6次:

418455 [RetryService : myhost(192.168.1.241):9160] INFO com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor - Reactivating myhost 

然后我的程序(实际上泰坦图)放弃了:

com.thinkaurelius.titan.diskstorage.TemporaryStorageException: Temporary failure in storage backend 

在此期间,我连接到/usr/bin/cassandra-cli并可能成功执行show keyspaces;

然后我决定重新开始;放下密钥空间。这就是现在它挂起几个小时的地方。它也不响应ctrl-c。同时我可以通过ssh登录,与cassandra-cli连接,然后运行show keyspaces;。密钥空间仍然存在。此外,我的Java应用程序可以访问该数据存储,但它是只读的。阅读成功,但写入失败。这只是一个超时写,当我从泰坦图形库得到:

com.thinkaurelius.titan.core.TitanException: ID renewal thread on partition [2] did not complete in time. [60007 ms] 

我可以运行,看看发生了什么事情的任何命令?我应该报告一个错误吗?

+0

Cassandra的日志中是否有例外?日志通常位于/var/log/cassandra/system.log中。 – Richard

回答

11

如果您在cassandra.yaml中启用了auto_snapshot(默认启用),则Cassandra将在删除密钥空间之前拍摄快照。如果您没有正确设置JNA,有时会导致问题,所以我会先检查一下。

+0

这对我有效。只有警告“如果您将此标志设置为false,则会丢失截断或丢弃数据。”从这个页面:https://forge.puppet.com/locp/cassandra - 现在我不太确定如果我们要截断一张表,我们将失去哪些数据...你有这样的知识吗? –

+0

@AlexisWilke如果在禁用auto_snapshot的情况下截断表,那么除非您有其他备份要从中恢复,否则该表的内容将会丢失。 –