JedisConnectionException: Unexpected end of stream error
Asked Answered
F

4

7

I am trying to perform rpush operation and encountered the following error:

redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
    at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:199) ~[jedis-2.9.0.jar:na]
    at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40) ~[jedis-2.9.0.jar:na]
    at redis.clients.jedis.Protocol.process(Protocol.java:151) ~[jedis-2.9.0.jar:na]
    at redis.clients.jedis.Protocol.read(Protocol.java:215) ~[jedis-2.9.0.jar:na]
    at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340) ~[jedis-2.9.0.jar:na]
    at redis.clients.jedis.Connection.getIntegerReply(Connection.java:265) ~[jedis-2.9.0.jar:na]
    at redis.clients.jedis.Jedis.rpush(Jedis.java:865) ~[jedis-2.9.0.jar:na]
    at

Any idea to resolve this error?

Fulsome answered 7/6, 2017 at 13:6 Comment(1)
i was using redis on docker, had the same issue, switching to native install solved it !!Levileviable
A
2

Please provide code snipped and confirm Jedis version you are using (as I may guess it's 2.9.0).

Previously, Jedis had same issue (connected with timeout configuration).

More details here:

https://github.com/xetorthio/jedis/issues/1029

https://github.com/xetorthio/jedis/issues/932

Adjoining answered 7/6, 2017 at 21:4 Comment(0)
A
5

the cause is that server setting up timeout nonzero, it means after one period connection is disposed or closed. So client takes the connection from pool, but after that time it is invalid!

Solution is: Set timeout on server to 0 or Do not keep pool on client -> GenericObjectPoolConfig.setMaxIdle(0) So each time to connect server, client take a new connection instead old one from pool

Abolish answered 22/3, 2019 at 9:33 Comment(0)
A
2

Please provide code snipped and confirm Jedis version you are using (as I may guess it's 2.9.0).

Previously, Jedis had same issue (connected with timeout configuration).

More details here:

https://github.com/xetorthio/jedis/issues/1029

https://github.com/xetorthio/jedis/issues/932

Adjoining answered 7/6, 2017 at 21:4 Comment(0)
C
1

In my case, I have a local Redis Server 6 and Jedis connects using host=localhost or host=127.0.0.1 but when I try to do a jedis connection ping it throws the JedisConnectionException.

If you have the same behavior, check that your redis server is working. Connect with a redis-cli and execute a ping using same host and port that you have in jedis.

If you get a response "PONG" it is ok, but if you get something like "Connection reset by peer" you need to change your server binding. After I changed the bind address to 0.0.0.0 it works for me.

An example using docker, Redis server 6 and redis-client:

  1. Config file redis.conf (with bind <> or bind 0.0.0.0):

bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
oom-score-adj no
oom-score-adj-values 0 200 800
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
  1. Run the Redis Server:

#!/bin/bash
MSYS_NO_PATHCONV=1 docker run -d --rm --name redis -p 6379:6379 -v $(pwd)/redis.conf:/redis.conf redis redis-server /redis.conf
  1. Run the Redis Client:

docker run -it --network=host --rm redis redis-cli -h 127.0.0.1
  1. Test the connection:

127.0.0.1:6379> ping
PONG

After that, check your jedis config to use same IP and port and this should solve the problem.

Compliment answered 17/6, 2021 at 15:20 Comment(0)
A
0

try to off protected mode in redis-server.

Steps:-

  1. Open redis-cli
  2. Run command "CONFIG SET protected-mode no"
Amok answered 14/7, 2023 at 23:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.