<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>53455</bug_id>
          
          <creation_ts>2025-03-14 16:04:54 +0300</creation_ts>
          <short_desc>Ошибки в работе pgpool</short_desc>
          <delta_ts>2025-03-17 16:39:25 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>postgresql17-pgpool-II</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Makeenkov">amakeenk</reporter>
          <assigned_to name="Alexei Takaseev">taf</assigned_to>
          <cc>taf</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>261051</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2025-03-14 16:04:54 +0300</bug_when>
    <thetext>Версия пакета: 4.6.0-alt1

Актуально для всех версий postgresql*-pgpool-II.

Не воспроизводится в р11 на версии 4.5.4-alt1 (например, с postgresql16-pgpool-II).

Стенд: 2 хоста

Шаги воспроизведения:

1. На обоих хостах установить postgresql:

# PG_VERSION=17
# apt-get update &amp;&amp; apt-get install -y postgresql${PG_VERSION}-server
# /etc/init.d/postgresql initdb (для пользователя postgres задать пароль 1)

На первом (master) хосте:

# cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf-orig &amp;&amp; \
sed -i -e &quot;s/#listen_addresses =.*/listen_addresses = &apos;*&apos;/&quot; \
-e &quot;s/#port = 5432/port = 5432/&quot; \
-e &quot;s/#wal_level =.*/wal_level = replica/&quot; \
-e &quot;s/#max_wal_senders.*/max_wal_senders = 2/&quot; \
/var/lib/pgsql/data/postgresql.conf &amp;&amp; \
diff -u --color /var/lib/pgsql/data/postgresql.conf-orig /var/lib/pgsql/data/postgresql.conf

На втором хосте:

# cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf-orig &amp;&amp; \
sed -i -e &quot;s/#listen_addresses =.*/listen_addresses = &apos;*&apos;/&quot; \
-e &quot;s/#port = 5432/port = 5432/&quot; \
-e &quot;s/#hot_standby =.*/hot_standby = on/&quot; /var/lib/pgsql/data/postgresql.conf &amp;&amp; \
diff -u --color /var/lib/pgsql/data/postgresql.conf-orig /var/lib/pgsql/data/postgresql.conf

На обоих хостах:
 
# echo &quot;host all all 0.0.0.0/0 scram-sha-256&quot; &gt;&gt; /var/lib/pgsql/data/pg_hba.conf
# systemctl start postgresql; systemctl status postgresql

На master хосте установить пакет (обратить внимание на https://bugzilla.altlinux.org/53450):

# apt-get install postgresql${PG_VERSION}-pgpool-II

Настроить конфигурацию:

# SLAVE_HOST_IP=X.X.X.X
# MASTER_HOST_IP=$(hostname -i) &amp;&amp; echo $MASTER_HOST_IP

# cp /etc/pgpool/pgpool.conf /etc/pgpool/pgpool.conf-orig &amp;&amp; cat &gt; /etc/pgpool/pgpool.conf &lt;&lt;EOF
listen_addresses = &apos;*&apos;
port = 9999
unix_socket_directories = &apos;/var/run/pgpool&apos;
pcp_listen_addresses = &apos;*&apos;
pcp_port = 9898
pcp_socket_dir = &apos;/var/run/pgpool&apos;
backend_hostname0 = &apos;$MASTER_HOST_IP&apos;
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = &apos;/var/lib/pgsql/data&apos;
backend_flag0 = &apos;ALLOW_TO_FAILOVER&apos;
backend_hostname1 = &apos;$SLAVE_HOST_IP&apos;
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = &apos;/var/lib/pgsql/data&apos;
backend_flag1 = &apos;ALLOW_TO_FAILOVER&apos;
enable_pool_hba = on
pool_passwd = &apos;/etc/pgpool/pool_passwd&apos;
load_balance_mode = on
replication_mode = on
num_init_children = 32
max_pool = 4
failover_when_quorum_exists = off
sr_check_user = &apos;postgres&apos;
sr_check_password = &apos;1&apos;
EOF

# echo &quot;host all all 0.0.0.0/0 scram-sha-256&quot; &gt;&gt; /etc/pgpool/pool_hba.conf
# echo postgres:1 &gt; /etc/pgpool/pool_passwd
# echo &quot;postgres:$(pg_md5 1)&quot; &gt; /etc/pgpool/pcp.conf &amp;&amp; cat /etc/pgpool/pcp.conf

Запусить pgpool:

# systemctl start pgpool; journalctl -fu pgpool

Получаемый результат:

pgpool[4867]: 2025-03-14 15:56:41.011: sr_check_worker pid 4867: LOG:  get_query_result failed: status: -2
pgpool[4867]: 2025-03-14 15:56:41.011: sr_check_worker pid 4867: CONTEXT:  while checking replication time lag
pgpool[4867]: 2025-03-14 15:56:51.038: sr_check_worker pid 4867: LOG:  get_query_result failed: status: -2
pgpool[4867]: 2025-03-14 15:56:51.038: sr_check_worker pid 4867: CONTEXT:  while checking replication time lag

Так же возникает ошибка при выполнении команд pcp, например:

# pcp_node_count -h $MASTER_HOST_IP -U postgres
FATAL:  authentication failed for user &quot;postgres&quot;
DETAIL:  username and/or password does not match</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261189</commentid>
    <comment_count>1</comment_count>
    <who name="Alexei Takaseev">taf</who>
    <bug_when>2025-03-17 15:37:27 +0300</bug_when>
    <thetext>Все же тут скорее ошибки в тстировании. Предлагаю в тестах не менять значения max_wal_senders, по-умолчанию оно ого равно 10, 2 это очень мало.


Сообщение

pgpool[4867]: 2025-03-14 15:56:41.011: sr_check_worker pid 4867: LOG:  get_query_result failed: status: -2
pgpool[4867]: 2025-03-14 15:56:41.011: sr_check_worker pid 4867: CONTEXT:  while checking replication time lag
pgpool[4867]: 2025-03-14 15:56:51.038: sr_check_worker pid 4867: LOG:  get_query_result failed: status: -2
pgpool[4867]: 2025-03-14 15:56:51.038: sr_check_worker pid 4867: CONTEXT:  while checking replication time lag

Возникают в случаях, когда между узлами PG заявлена репликация но она не работает (pgpool проводит тестирование времени прохождения реплик)

При этом по команде psql -h IP_ADDRESS -p 9999 -U postgres template1 происходит нормальное подключение к СУБД

pcp_node_count отрабатывает, если добавить пропущенный ключ -W</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261191</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2025-03-17 15:38:56 +0300</bug_when>
    <thetext>(Ответ для Alexei Takaseev на комментарий #1)
&gt; Все же тут скорее ошибки в тстировании

И всё же в версии 4.5.4 такой проблемы нету.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261196</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2025-03-17 16:24:26 +0300</bug_when>
    <thetext>(Ответ для Alexei Takaseev на комментарий #1)
&gt; Все же тут скорее ошибки в тстировании. Предлагаю в тестах не менять
&gt; значения max_wal_senders, по-умолчанию оно ого равно 10, 2 это очень мало.
&gt; 
&gt; 
&gt; Сообщение
&gt; 
&gt; pgpool[4867]: 2025-03-14 15:56:41.011: sr_check_worker pid 4867: LOG: 
&gt; get_query_result failed: status: -2
&gt; pgpool[4867]: 2025-03-14 15:56:41.011: sr_check_worker pid 4867: CONTEXT: 
&gt; while checking replication time lag
&gt; pgpool[4867]: 2025-03-14 15:56:51.038: sr_check_worker pid 4867: LOG: 
&gt; get_query_result failed: status: -2
&gt; pgpool[4867]: 2025-03-14 15:56:51.038: sr_check_worker pid 4867: CONTEXT: 
&gt; while checking replication time lag

Не трогал max_wal_senders, ничего не изменилось, но тесты поправил.

&gt; pcp_node_count отрабатывает, если добавить пропущенный ключ -W

Это помогло, спасибо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261200</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2025-03-17 16:35:16 +0300</bug_when>
    <thetext>(Ответ для Alexander Makeenkov на комментарий #2)
&gt; (Ответ для Alexei Takaseev на комментарий #1)
&gt; &gt; Все же тут скорее ошибки в тстировании
&gt; 
&gt; И всё же в версии 4.5.4 такой проблемы нету.

Возможно, просто в прошлой версии pgpool не писал сообщения &quot;while checking replication time lag&quot; в принципе, поэтому их и не было ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261201</commentid>
    <comment_count>5</comment_count>
    <who name="Alexei Takaseev">taf</who>
    <bug_when>2025-03-17 16:39:25 +0300</bug_when>
    <thetext>(Ответ для Alexander Makeenkov на комментарий #4)
&gt; (Ответ для Alexander Makeenkov на комментарий #2)
&gt; &gt; (Ответ для Alexei Takaseev на комментарий #1)
&gt; &gt; &gt; Все же тут скорее ошибки в тстировании
&gt; &gt; 
&gt; &gt; И всё же в версии 4.5.4 такой проблемы нету.
&gt; 
&gt; Возможно, просто в прошлой версии pgpool не писал сообщения &quot;while checking
&gt; replication time lag&quot; в принципе, поэтому их и не было ...

Походе на то. Поднял работающую репликацию между узлами PG и сообщение пропало. При этом:

# pcp_node_info -h 10.88.10.99 -p 9898 -U postgres -W
Password: 
10.88.10.99 5432 2 0.500000 up unknown primary unknown 0 none none 2025-03-17 16:36:37
10.88.11.224 5432 2 0.500000 up unknown standby unknown 0 none none 2025-03-17 16:36:37</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>