Jedis отправляет запрос на выход на сервер Redis - PullRequest
0 голосов
/ 24 сентября 2019

Мой клиент Jedis внутренне отправил запрос quit, в результате чего сервер Redis закрыл соединение.Это неожиданное поведение.Ниже приведен tcpdump моего хоста.

QUIT

17:12:17.702322 IP SOURCE_HOST.29039 > DEST_HOST.34250: Flags [P.], seq 1290557:1290562, ack 833190, win 65160, options [nop,nop,TS val 346069381 ecr 351399090], length 5
E..98\@.;...
%V.
W..qo....
.P.l.....U......
........+OK

17:12:17.702345 IP DEST_HOST.34250 > SOURCE_HOST.29039: Flags [.], ack 1290562, win 65366, options [nop,nop,TS val 351399092 ecr 346069381], length 0
E..4..@.@..l

Я выполняю следующие операции.
1. get ()
2. set ()
3. setex ()
4. ping ()
5. del ()
6. keys ()

Я использую Jedis: 2.9.3 с Kotlin.
Операция: Получить ресурс (соединение) из JedisPool и отправить запрос (например, get ()).
У кого-нибудь есть идея, почему Jedis отправляет запрос QUIT, не вызывая его явно?

1 Ответ

0 голосов
/ 25 сентября 2019
  1. JedisPool использует JedisFactory.
  2. destroyObject в вызовах JedisFactory quit.
  3. destroyObject JedisFactory фактически переопределяет destroyObject PooledObjectFactory.
  4. GenericObjectPool использует PooledObjectFactory.
  5. destroy в вызовах GenericObjectPool destroyObject для PooledObjectFactory.
    • (и так destroyObject из JedisFactory), что приводит к вызову quit.

Во многих случаях destroy из GenericObjectPoolэто называется.

...