为什么Cassandra使用字节键(使用Lazyboy)会很奇怪?

时间:2010-08-11 14:00:29

标签: python cassandra uuid

我写了一个用于测试Cassandra的测试程序,我在读取数据时遇到了问题。好像Cassandra有时会把另一把钥匙拿给另一把钥匙。

这是我的测试程序:

from lazyboy import *
from lazyboy.key import Key
import uuid
import random

class TestItemKey(Key):
    def __init__(self, key=None):
     Key.__init__(self, "TestMX", "TestCF", key)

class TestItem(record.Record):
    def __init__(self, *args, **kwargs):
        record.Record.__init__(self, *args, **kwargs)
        self.key = TestItemKey(uuid.uuid1().bytes)

connection.add_pool('TestMX', ['localhost:9160'])

t1 = TestItem({'test':'foo'})
t1.key = TestItemKey(uuid.UUID('3cead15a-a54e-11df-87a2-000c298d2724').bytes)
t2 = TestItem({'test':'bar'})
t2.key = TestItemKey(uuid.UUID('3cebc15a-a54e-11df-87a2-000c298d2724').bytes)
t1.save()
t2.save()

print TestItem().load(t1.key.clone())
print TestItem().load(t2.key.clone())

(选择的UUID是导致问题的例子)

以下是此脚本的输出:

root@ubuntu:/mnt/hgfs/TestMX# python test.py 
TestItem: {'test': 'foo'}
TestItem: {'test': 'foo'}

而不是预期的结果:

root@ubuntu:/mnt/hgfs/TestMX# python test.py 
TestItem: {'test': 'foo'}
TestItem: {'test': 'bar'}

请注意,该脚本通常适用于其他randomely选择的UUID,但有时不适用...

1 个答案:

答案 0 :(得分:2)

听起来很像你正在点击https://issues.apache.org/jira/browse/CASSANDRA-1235,它固定在0.6分支中,并且将在0.6.5,即下一个稳定版本。