исключение соединения jedis: ошибка записи сокета

Использование клиента jedis для сохранения данных на redis localhost.

Как только я подключаюсь к redisHost с помощью jedis, я не отключаюсь, пока получаю сообщения. Это проблема? Пытался изменить тайм-аут с 2000 по умолчанию на 6000, но все та же ошибка!

подключение и отправка данных:

if (jedis == null)
      jedis = new Jedis(redisHost);

if (!jedis.isConnected())
      jedis.connect();

if (jedis.isConnected()) 
      jedis.zadd("someKey", doubleTime, "someValue");

Ниже приведена трассировка стека получения ошибки:

    redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Software caused connection abort: socket write error
    at redis.clients.jedis.Protocol.sendCommand(Protocol.java:92)
    at redis.clients.jedis.Protocol.sendCommand(Protocol.java:72)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:80)
    at redis.clients.jedis.BinaryClient.zadd(BinaryClient.java:387)
    at redis.clients.jedis.Client.zadd(Client.java:327)
    at redis.clients.jedis.Jedis.zadd(Jedis.java:1468)
    at com.comcast.xre.WebSocketServer.saveLogToDB(WebSocketServer.java:105)
    at com.comcast.xre.WebSocketServer.access$000(WebSocketServer.java:27)
    at com.comcast.xre.WebSocketServer$1$1.onFullTextMessage(WebSocketServer.java:69)
    at io.undertow.websockets.core.AbstractReceiveListener$2.complete(AbstractReceiveListener.java:138)
    at io.undertow.websockets.core.AbstractReceiveListener$2.complete(AbstractReceiveListener.java:134)
    at io.undertow.websockets.core.BufferedTextMessage.read(BufferedTextMessage.java:87)
    at io.undertow.websockets.core.AbstractReceiveListener.readBufferedText(AbstractReceiveListener.java:134)
    at io.undertow.websockets.core.AbstractReceiveListener.bufferFullMessage(AbstractReceiveListener.java:72)
    at io.undertow.websockets.core.AbstractReceiveListener.onText(AbstractReceiveListener.java:52)
    at io.undertow.websockets.core.AbstractReceiveListener.handleEvent(AbstractReceiveListener.java:26)
    at io.undertow.websockets.core.AbstractReceiveListener.handleEvent(AbstractReceiveListener.java:15)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:632)
    at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:618)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
    at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:87)
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:531)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
    at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:31)
    at redis.clients.util.RedisOutputStream.write(RedisOutputStream.java:38)
    at redis.clients.jedis.Protocol.sendCommand(Protocol.java:78)
    ... 23 more

person user1609085    schedule 30.07.2014    source источник


Ответы (1)


Проблема была с подключением джедаев. Он подключен, но после нескольких сообщений соединение прерывается. После каждого сохранения в БД я полностью отключаю и удаляю клиент jedis и создаю новый клиент и соединение. Выглядит неудобно, но решает проблему.

person user1609085    schedule 31.07.2014