2017-02-08 16 views
0

Я пытаюсь подключиться к Redis Cloud Memcached, но получить сообщение об ошибке (ниже). Я проверил, что имя пользователя, пароль, хост и порт верны в интерфейсе apps.redislabs.com. Я могу подключиться, если отключить SASL и подключиться к не прошедшему проверку.Как я аутентифицирован в Redis Cloud Memcached из Spymemcached?

Как я могу диагностировать это?

(Использование spymemcached 2.11.6.)

import net.spy.memcached.auth.*; 
import net.spy.memcached.*; 
... 
List<InetSocketAddress> addresses = Collections.singletonList(addr); 
AuthDescriptor ad = new AuthDescriptor(new String[] { "CRAM-MD5", "PLAIN" }, 
     new PlainCallbackHandler(user, password)); 
MemcachedClient mc = new MemcachedClient(new ConnectionFactoryBuilder() 
     .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY) 
     .setAuthDescriptor(ad).build(), 
AddrUtil.getAddresses(host + ":" + port)); 

StackTrace:

net.spy.memcached.MemcachedConnection: Added {QA sa=pub-memcache-14154.us-central1-1-1.gce.garantiadata.com/104.197.191.74:14514, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue 
net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl: Discarding partially completed op: SASL auth operation 
net.spy.memcached.MemcachedConnection: Reconnecting due to exception on {QA sa=pub-memcache-14154.us-central1-1-1.gce.garantiadata.com/104.197.191.74:14514, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=1} 
java.io.IOException: An existing connection was forcibly closed by the remote host 
    at sun.nio.ch.SocketDispatcher.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) 
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 
    at sun.nio.ch.IOUtil.read(IOUtil.java:192) 
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) 
    at net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:820) 
    at net.spy.memcached.MemcachedConnection.handleReadsAndWrites(MemcachedConnection.java:720) 
    at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:683) 
    at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:436) 
    at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:1446) 
net.spy.memcached.MemcachedConnection: Closing, and reopening {QA sa=pub-memcache-14154.us-central1-1-1.gce.garantiadata.com/104.197.191.74:14514, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=1}, attempt 0. 
net.spy.memcached.MemcachedConnection: Could not redistribute to another node, retrying primary node for foo. 

ответ

3

Потерять "CRAM-MD5" в вашей AuthDescriptior декларации.

следующие работы в моих тестах: (пользователь, передать, и URL удалены)

AuthDescriptor ad = new AuthDescriptor(new String[] {"PLAIN"}, new PlainCallbackHandler(user, pass)); 
MemcachedClient mc = null; 
    try { 
     mc = new MemcachedClient(
     new ConnectionFactoryBuilder() 
      .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY) 
      .setAuthDescriptor(ad).build(), 
     AddrUtil.getAddresses(host + ":" + port)); 
    } catch (IOException e) { 
     // handle exception 
    } 
mc.set("foo", 0, "bar"); 
String value = (String) mc.get("foo"); 
System.out.println(value); 
+0

ОП должна связаться поддержка Redis Labs' ... о, я вижу, все здесь так или иначе;) –

+0

Это сделал Это! Использование PLAIN снижает безопасность? –