2014-01-28 3 views
1

Я получаю странное поведение в 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)

Большинство моих интуиция для такого рода ошибок не позволяет мне здесь. Все странно:

  1. Почему это всегда терпит неудачу ровно один раз, чтобы установить?
  2. Почему он постоянно не может увеличиваться после кажущегося успеха в наборе?

Это сервер с высокой нагрузкой (да, немного неправильно выполнять тест на несущем сервере, но если он ловит такие проблемы, это, по крайней мере, какое-то преимущество). Что может вызвать этот последовательный отказ? Существует только один узел.

ответ

1

Проблема в том, что я не смог подключиться на всех. Это ошибка в spymemcached, поскольку операция set не выдавала исключения, даже если у нее не было сервера memcached для выполнения set.

Смежные вопросы