我在同时向 openTSDB 运行多个导入时收到竞争条件警告。以下是显示竞争条件的日志序列之一。
2013-08-21 14:34:24,745 INFO [main] UniqueId: Creating an ID for kind='tagv' name='25447'
2013-08-21 14:34:24,747 INFO [main] UniqueId: Got ID=307 for kind='tagv' name='25447'
2013-08-21 14:34:24,752 WARN [main] UniqueId: Race condition: tried to assign ID 307 to tagv:25447, but CAS failed on PutRequest(table="tsdb-uid", key="25447", family="id", qualifiers=["tagv"], values=["\x00\x013"], timestamp=9223372036854775807, lockid=-1, durable=true, bufferable=true, attempt=0, region=null), which indicates this UID must have been allocated concurrently by another TSD. So ID 307 was leaked.
我有以下问题:
- 既然是警告,难道记录是真的写入了,没有跳过?
- 最后显示“ID 307 已泄露”,那么是否为该记录分配了其他 ID?
- 如何验证该记录是否已写入 HBase 名为“tsdb-uid”的表中? (HBase shell命令,我尝试了一些但没有成功)。
最佳答案
这只是意味着 UID 没有被分配,但除此之外一切都很好。如果您担心 tsdb-uid 表的状态,可以运行 tsdb uid fsck 命令,它可能会报告某些 UID 已分配但未使用。
如果您只是偶尔看到该消息,则可以忽略它。如果您经常看到它,那么唯一的不良后果是您消耗 UID 空间的速度比应有的速度更快,因此您可能会更快用完 UID(每个 UID 都有 16777215 个:指标名称、标签名称、标签值)。
关于hadoop - 竞争条件警告 OpenTSDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354383/