增量超时; 集总重试后成功(Increment times out; set always su

2019-10-19 06:16发布

我得到的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)

我的大部分直觉这种错误在这里失败了我。 下面的事情都奇怪:

  1. 为什么总是失败一次以设置?
  2. 为什么它永远不能似乎在设定成功后递增?

这是一个高负载的服务器上(是的,这是一点小毛病是运行承载服务器上的测试,但如果能抓住这样的问题至少还有一定的优势)。 这是什么原因一致的失败? 只有一个节点。

Answer 1:

问题是我无法连接 。 这是spymemcached一个错误,因为set操作没有抛出异常,即使它没有memcached服务器进行set的。



文章来源: Increment times out; set always succeeds after retry