Я получаю странное поведение в memcached, в частности, поведение, которое странно в его последовательности. Вот мой тест:Увеличение времени ожидания; set всегда преуспевает после повторной попытки
@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-01-28 11: 04: 52.933 WARN net.spy.memcached.MemcachedConnection: не удалось перераспределить другой узел, повторив первичный узел для q: unittest: scannedemails: w.
28 11: 04: 52.933 INFO; Установите головку; приращение.
2014-01-28 11: 04: 52.935 WARN net.spy.memcached.MemcachedConnection: Не удалось перераспределить другой узел, повторив первичный узел для q: unittest: scannedemails: w.
FAILED: testMemc net.spy.memcached.OperationTimeoutException: Mutate операции истекло, не в силах изменить счетчик [Q: UnitTest: 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)
Большинство моих интуиция для такого рода ошибок не позволяет мне здесь. Все странно:
- Почему это всегда терпит неудачу ровно один раз, чтобы установить?
- Почему он постоянно не может увеличиваться после кажущегося успеха в наборе?
Это сервер с высокой нагрузкой (да, немного неправильно выполнять тест на несущем сервере, но если он ловит такие проблемы, это, по крайней мере, какое-то преимущество). Что может вызвать этот последовательный отказ? Существует только один узел.