我得到的memcached的奇怪行为,特别是行为是在其一致性奇怪。 下面是我的测试:
@Test
public void testMemc() {
logger.info("Setting head.");
memc.set(env.memcachedQueueKeys().head, 3600, 0);
logger.info("Set head; incrementing.");
memc.incr(env.memcachedQueueKeys().head, 1);
logger.info("Incremented.");
}
这里是输出:
28 11:04:52.932 INFO; 设置头。
2014年1月28日11:04:52.933 WARN net.spy.memcached.MemcachedConnection:无法重新分配到另一个节点,重试主节点对于Q:单元测试:scannedemails:瓦特
28 11:04:52.933 INFO; 套头; 递增。
2014年1月28日11:04:52.935 WARN net.spy.memcached.MemcachedConnection:无法重新分配到另一个节点,重试主节点对于Q:单元测试:scannedemails:瓦特
FAILED:testMemc net.spy.memcached.OperationTimeoutException:变异操作超时,不能修改计数器[Q:单元测试:scannedemails:W]
在net.spy.memcached.MemcachedClient.mutate(MemcachedClient.java:1484)
在net.spy.memcached.MemcachedClient.incr(MemcachedClient.java:1529)
在me.unroll.emailroller.ActOnScanResultsTest.testMemc(ActOnScanResultsTest.java:295)
我的大部分直觉这种错误在这里失败了我。 下面的事情都奇怪:
- 为什么总是失败一次以设置?
- 为什么它永远不能似乎在设定成功后递增?
这是一个高负载的服务器上(是的,这是一点小毛病是运行承载服务器上的测试,但如果能抓住这样的问题至少还有一定的优势)。 这是什么原因一致的失败? 只有一个节点。