Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failure with PG15: test_show test_cancel test_cancel_pool_size ... FAILED #769

Closed
df7cb opened this issue Oct 17, 2022 · 6 comments
Closed

Comments

@df7cb
Copy link
Contributor

df7cb commented Oct 17, 2022

Building pgbouncer 1.17.0 against PG15 yields this:

gcc -O0 -g -O2 -ffile-prefix-map=/home/cbe/projects/postgresql/pgbouncer/pgbouncer=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wdeclaration-after-statement -Wold-style-definition -Wstrict-prototypes -Wundef -Wformat=2 -Wuninitialized -Wmissing-format-attribute  -g -Wl,-z,relro -Wl,--as-needed -o hba_test .objs/hba_test/hba_test.o .objs/hba_test/../src/hba.o .objs/hba_test/../src/util.o .objs/hba_test/../lib/usual/base.o .objs/hba_test/../lib/usual/cbtree.o .objs/hba_test/../lib/usual/crypto/chacha.o .objs/hba_test/../lib/usual/crypto/csrandom.o .objs/hba_test/../lib/usual/crypto/digest.o .objs/hba_test/../lib/usual/crypto/entropy.o .objs/hba_test/../lib/usual/crypto/keccak.o .objs/hba_test/../lib/usual/crypto/keccak_prng.o .objs/hba_test/../lib/usual/crypto/md5.o .objs/hba_test/../lib/usual/cxalloc.o .objs/hba_test/../lib/usual/cxextra.o .objs/hba_test/../lib/usual/err.o .objs/hba_test/../lib/usual/fileutil.o .objs/hba_test/../lib/usual/list.o .objs/hba_test/../lib/usual/logging.o .objs/hba_test/../lib/usual/mbuf.o .objs/hba_test/../lib/usual/socket.o .objs/hba_test/../lib/usual/socket_ntop.o .objs/hba_test/../lib/usual/socket_pton.o .objs/hba_test/../lib/usual/string.o .objs/hba_test/../lib/usual/time.o -levent -lsystemd -lpam  
./test.sh
Creating databases
Creating users
Mon Oct 17 13:30:36 CEST 2022 running test_show_version ... ok
Mon Oct 17 13:30:36 CEST 2022 running test_help ... ok
Mon Oct 17 13:30:36 CEST 2022 running test_show ... FAILED
# => show clients;
#  type |   user    | database  | state  | addr | port | local_addr | local_port |       connect_time       |       request_time       | wait | wait_us | close_needed |      ptr       | link | remote_pid | tls 
# ------+-----------+-----------+--------+------+------+------------+------------+--------------------------+--------------------------+------+---------+--------------+----------------+------+------------+-----
#  C    | pgbouncer | pgbouncer | active | unix | 6667 | unix       |       6667 | 2022-10-17 13:30:36 CEST | 2022-10-17 13:30:36 CEST |    0 |       0 |            0 | 0x56484c5d7a80 |      |     605929 | 
# (1 row)
# 
# => show config;
#             key            |                         value                          |                        default                         | changeable 
# ---------------------------+--------------------------------------------------------+--------------------------------------------------------+------------
#  admin_users               |                                                        |                                                        | yes
#  application_name_add_host | 0                                                      | 0                                                      | yes
#  auth_file                 | userlist.txt                                           |                                                        | yes
#  auth_hba_file             |                                                        |                                                        | yes
#  auth_query                | SELECT usename, passwd FROM pg_shadow WHERE usename=$1 | SELECT usename, passwd FROM pg_shadow WHERE usename=$1 | yes
#  auth_type                 | trust                                                  | md5                                                    | yes
#  auth_user                 |                                                        |                                                        | yes
#  autodb_idle_timeout       | 3600                                                   | 3600                                                   | yes
#  client_idle_timeout       | 0                                                      | 0                                                      | yes
#  client_login_timeout      | 60                                                     | 60                                                     | yes
#  client_tls_ca_file        |                                                        |                                                        | yes
#  client_tls_cert_file      |                                                        |                                                        | yes
#  client_tls_ciphers        | fast                                                   | fast                                                   | yes
#  client_tls_dheparams      | auto                                                   | auto                                                   | yes
#  client_tls_ecdhcurve      | auto                                                   | auto                                                   | yes
#  client_tls_key_file       |                                                        |                                                        | yes
#  client_tls_protocols      | secure                                                 | secure                                                 | yes
#  client_tls_sslmode        | disable                                                | disable                                                | yes
#  conffile                  | test.ini                                               |                                                        | yes
#  default_pool_size         | 5                                                      | 20                                                     | yes
#  disable_pqexec            | 0                                                      | 0                                                      | no
#  dns_max_ttl               | 15                                                     | 15                                                     | yes
#  dns_nxdomain_ttl          | 15                                                     | 15                                                     | yes
#  dns_zone_check_period     | 0                                                      | 0                                                      | yes
#  idle_transaction_timeout  | 0                                                      | 0                                                      | yes
#  ignore_startup_parameters |                                                        |                                                        | yes
#  job_name                  | pgbouncer                                              | pgbouncer                                              | no
#  listen_addr               | 127.0.0.1                                              |                                                        | no
#  listen_backlog            | 128                                                    | 128                                                    | no
#  listen_port               | 6667                                                   | 6432                                                   | no
#  log_connections           | 1                                                      | 1                                                      | yes
#  log_disconnections        | 1                                                      | 1                                                      | yes
#  log_pooler_errors         | 1                                                      | 1                                                      | yes
#  log_stats                 | 1                                                      | 1                                                      | yes
#  logfile                   | test.log                                               |                                                        | yes
#  max_client_conn           | 10                                                     | 100                                                    | yes
#  max_db_connections        | 0                                                      | 0                                                      | yes
#  max_packet_size           | 2147483647                                             | 2147483647                                             | yes
#  max_user_connections      | 0                                                      | 0                                                      | yes
#  min_pool_size             | 0                                                      | 0                                                      | yes
#  pidfile                   | test.pid                                               |                                                        | no
#  pkt_buf                   | 4096                                                   | 4096                                                   | no
#  pool_mode                 | statement                                              | session                                                | yes
#  query_timeout             | 0                                                      | 0                                                      | yes
#  query_wait_timeout        | 120                                                    | 120                                                    | yes
#  reserve_pool_size         | 0                                                      | 0                                                      | yes
#  reserve_pool_timeout      | 5                                                      | 5                                                      | yes
#  resolv_conf               |                                                        |                                                        | no
#  sbuf_loopcnt              | 5                                                      | 5                                                      | yes
#  server_check_delay        | 10                                                     | 30                                                     | yes
#  server_check_query        | select 1                                               | select 1                                               | yes
#  server_connect_timeout    | 15                                                     | 15                                                     | yes
#  server_fast_close         | 0                                                      | 0                                                      | yes
#  server_idle_timeout       | 60                                                     | 600                                                    | yes
#  server_lifetime           | 120                                                    | 3600                                                   | yes
#  server_login_retry        | 15                                                     | 15                                                     | yes
#  server_reset_query        | DISCARD ALL                                            | DISCARD ALL                                            | yes
#  server_reset_query_always | 0                                                      | 0                                                      | yes
#  server_round_robin        | 0                                                      | 0                                                      | yes
#  server_tls_ca_file        |                                                        |                                                        | yes
#  server_tls_cert_file      |                                                        |                                                        | yes
#  server_tls_ciphers        | fast                                                   | fast                                                   | yes
#  server_tls_key_file       |                                                        |                                                        | yes
#  server_tls_protocols      | secure                                                 | secure                                                 | yes
#  server_tls_sslmode        | disable                                                | disable                                                | yes
#  so_reuseport              | 0                                                      | 0                                                      | no
#  stats_period              | 60                                                     | 60                                                     | yes
#  stats_users               |                                                        |                                                        | yes
#  suspend_timeout           | 10                                                     | 10                                                     | yes
#  syslog                    | 0                                                      | 0                                                      | yes
#  syslog_facility           | daemon                                                 | daemon                                                 | yes
#  syslog_ident              | pgbouncer                                              | pgbouncer                                              | yes
#  tcp_defer_accept          | 0                                                      | 1                                                      | yes
#  tcp_keepalive             | 0                                                      | 1                                                      | yes
#  tcp_keepcnt               | 0                                                      | 0                                                      | yes
#  tcp_keepidle              | 0                                                      | 0                                                      | yes
#  tcp_keepintvl             | 0                                                      | 0                                                      | yes
#  tcp_socket_buffer         | 0                                                      | 0                                                      | yes
#  tcp_user_timeout          | 0                                                      | 0                                                      | yes
#  unix_socket_dir           | /tmp                                                   | /tmp                                                   | no
#  unix_socket_group         |                                                        |                                                        | no
#  unix_socket_mode          | 511                                                    | 0777                                                   | no
#  user                      |                                                        |                                                        | no
#  verbose                   | 0                                                      |                                                        | yes
# (84 rows)
# 
# => show databases;
#    name    |        host         | port | database  | force_user | pool_size | min_pool_size | reserve_pool | pool_mode | max_connections | current_connections | paused | disabled 
# -----------+---------------------+------+-----------+------------+-----------+---------------+--------------+-----------+-----------------+---------------------+--------+----------
#  authdb    | 127.0.0.1           | 6666 | p1        |            |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  hostlist1 | 127.0.0.1,::1       | 6666 | p0        | bouncer    |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  hostlist2 | 127.0.0.1,127.0.0.1 | 6666 | p0        | bouncer    |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p0        | 127.0.0.1           | 6666 | p0        | bouncer    |         2 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p1        | 127.0.0.1           | 6666 | p1        | bouncer    |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p2        | 127.0.0.1           | 6666 | p0        |            |         5 |             0 |            0 |           |               4 |                   0 |      0 |        0
#  p3        | 127.0.0.1           | 6666 | p0        | bouncer    |         5 |             0 |            0 | session   |               0 |                   0 |      0 |        0
#  p4        | 127.0.0.1           | 6666 | p4        | puser1     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p4l       | 127.0.0.1           | 6666 | p4        | longpass   |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p4x       | 127.0.0.1           | 6666 | p4        | puser1     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p4y       | 127.0.0.1           | 6666 | p4        | puser1     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p4z       | 127.0.0.1           | 6666 | p4        | puser2     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p5        | 127.0.0.1           | 6666 | p5        | muser1     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p5x       | 127.0.0.1           | 6666 | p5        | muser1     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p5y       | 127.0.0.1           | 6666 | p5        | muser1     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p5z       | 127.0.0.1           | 6666 | p5        | muser2     |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p6        | 127.0.0.1           | 6666 | p6        | scramuser1 |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p61       | 127.0.0.1           | 6666 | p6        | scramuser3 |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p62       | 127.0.0.1           | 6666 | p6        |            |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p6x       | 127.0.0.1           | 6666 | p6        | scramuser1 |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p6y       | 127.0.0.1           | 6666 | p6        | scramuser1 |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p6z       | 127.0.0.1           | 6666 | p6        | scramuser2 |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p7a       | 127.0.0.1           | 6666 | p7        |            |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p7b       | 127.0.0.1           | 6666 | p7        |            |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p7c       | 127.0.0.1           | 6666 | p7        |            |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  p8        | 127.0.0.1           | 6666 | p0        |            |         5 |             0 |            0 |           |               0 |                   0 |      0 |        0
#  pgbouncer |                     | 6667 | pgbouncer | pgbouncer  |         2 |             0 |            0 | statement |               0 |                   0 |      0 |        0
# (27 rows)
# 
# => show fds;
#  fd |  task  | user | database |   addr    | port | cancel | link | client_encoding | std_strings | datestyle | timezone | password | scram_client_key | scram_server_key 
# ----+--------+------+----------+-----------+------+--------+------+-----------------+-------------+-----------+----------+----------+------------------+------------------
#   7 | pooler |      |          | 127.0.0.1 | 6667 |      0 |    0 |                 |             |           |          |          |                  | 
#   8 | pooler |      |          | unix      | 6667 |      0 |    0 |                 |             |           |          |          |                  | 
# (2 rows)
# 
# => show help;
# NOTICE:  Console usage
# DETAIL:  
# 	SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
# 	SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
# 	SHOW DNS_HOSTS|DNS_ZONES
# 	SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
# 	SET key = arg
# 	RELOAD
# 	PAUSE [<db>]
# 	RESUME [<db>]
# 	DISABLE <db>
# 	ENABLE <db>
# 	RECONNECT [<db>]
# 	KILL <db>
# 	SUSPEND
# 	SHUTDOWN
# 
# message contents do not agree with length in message type "N"
# SHOW
Mon Oct 17 13:30:36 CEST 2022 running test_server_login_retry ... ok
Mon Oct 17 13:30:40 CEST 2022 running test_auth_user ... ok
Mon Oct 17 13:30:40 CEST 2022 running test_client_idle_timeout ... ok
Mon Oct 17 13:30:43 CEST 2022 running test_server_lifetime ... ok
Mon Oct 17 13:30:46 CEST 2022 running test_server_idle_timeout ... ok
Mon Oct 17 13:30:50 CEST 2022 running test_query_timeout ... ok
Mon Oct 17 13:30:53 CEST 2022 running test_idle_transaction_timeout ... ok
Mon Oct 17 13:30:59 CEST 2022 running test_server_connect_timeout_establish ... ok
Mon Oct 17 13:31:05 CEST 2022 running test_server_connect_timeout_reject ... skipped
Mon Oct 17 13:31:05 CEST 2022 running test_server_check_delay ... skipped
Mon Oct 17 13:31:05 CEST 2022 running test_tcp_user_timeout ... skipped
Mon Oct 17 13:31:05 CEST 2022 running test_max_client_conn ... ok
Mon Oct 17 13:31:08 CEST 2022 running test_pool_size ... ok
Mon Oct 17 13:31:13 CEST 2022 running test_min_pool_size ... ok
Mon Oct 17 13:31:15 CEST 2022 running test_reserve_pool_size ... ok
Mon Oct 17 13:31:29 CEST 2022 running test_max_db_connections ... ok
Mon Oct 17 13:31:30 CEST 2022 running test_max_user_connections ... ok
Mon Oct 17 13:31:33 CEST 2022 running test_connect_query ... ok
Mon Oct 17 13:31:33 CEST 2022 running test_online_restart ... ok
Mon Oct 17 13:31:43 CEST 2022 running test_pause_resume ... ok
Mon Oct 17 13:31:54 CEST 2022 running test_suspend_resume ... ok
Mon Oct 17 13:32:04 CEST 2022 running test_enable_disable ... ok
Mon Oct 17 13:32:05 CEST 2022 running test_database_restart ... ok
Mon Oct 17 13:32:11 CEST 2022 running test_database_change ... ok
Mon Oct 17 13:32:14 CEST 2022 running test_reconnect ... ok
Mon Oct 17 13:32:16 CEST 2022 running test_fast_close ... ok
Mon Oct 17 13:32:18 CEST 2022 running test_wait_close ... ok
Mon Oct 17 13:32:22 CEST 2022 running test_password_server ... ok
Mon Oct 17 13:32:22 CEST 2022 running test_password_client ... ok
Mon Oct 17 13:32:22 CEST 2022 running test_md5_server ... ok
Mon Oct 17 13:32:23 CEST 2022 running test_md5_client ... ok
Mon Oct 17 13:32:23 CEST 2022 running test_scram_server ... ok
Mon Oct 17 13:32:23 CEST 2022 running test_scram_client ... ok
Mon Oct 17 13:32:23 CEST 2022 running test_scram_both ... ok
Mon Oct 17 13:32:23 CEST 2022 running test_scram_takeover ... ok
Mon Oct 17 13:32:29 CEST 2022 running test_no_user_trust ... ok
Mon Oct 17 13:32:29 CEST 2022 running test_no_user_trust_forced_user ... ok
Mon Oct 17 13:32:29 CEST 2022 running test_no_user_password ... ok
Mon Oct 17 13:32:29 CEST 2022 running test_no_user_password_forced_user ... ok
Mon Oct 17 13:32:29 CEST 2022 running test_no_user_md5 ... ok
Mon Oct 17 13:32:29 CEST 2022 running test_no_user_md5_forced_user ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_no_user_scram ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_no_user_scram_forced_user ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_no_user_auth_user ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_auto_database ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_no_database ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_no_database_authfail ... ok
Mon Oct 17 13:32:30 CEST 2022 running test_no_database_auth_user ... ok
Mon Oct 17 13:32:31 CEST 2022 running test_cancel ... FAILED
# Cancel request sent
# ERROR:  canceling statement due to user request
Mon Oct 17 13:32:32 CEST 2022 running test_cancel_wait ... FAILED
# SET server_idle_timeout=2
# Cancel request sent
# ERROR:  canceling statement due to user request
Mon Oct 17 13:32:34 CEST 2022 running test_cancel_pool_size ... FAILED
# SET server_idle_timeout=2
# Cancel request sent
# Cancel request sent
# Cancel request sent
# Cancel request sent
# Cancel request sent
# ERROR:  canceling statement due to user request
# ERROR:  canceling statement due to user request
# ERROR:  canceling statement due to user request
# ERROR:  canceling statement due to user request
# ERROR:  canceling statement due to user request
Mon Oct 17 13:32:35 CEST 2022 running test_host_list ... skipped
Mon Oct 17 13:32:35 CEST 2022 running test_host_list_dummy ... ok
make[2]: *** [Makefile:36: check] Fehler 1
make[2]: Verzeichnis „/home/cbe/projects/postgresql/pgbouncer/pgbouncer/test“ wird verlassen
make[1]: *** [debian/rules:27: override_dh_auto_test] Fehler 2
make[1]: Verzeichnis „/home/cbe/projects/postgresql/pgbouncer/pgbouncer“ wird verlassen
make: *** [debian/rules:10: binary] Fehler 2

Full log:
https://pgdgbuild.dus.dg-i.net/view/Binaries/job/pgbouncer-binaries/76/architecture=amd64,distribution=kinetic/console
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021859

(I also tried building HEAD, but that fails with a different error:

lib/usual/tls/tls_ocsp.c: In function ‘tls_ocsp_get_certid’:
lib/usual/tls/tls_ocsp.c:167:24: error: storage size of ‘storectx’ isn’t known
  167 |         X509_STORE_CTX storectx;
      |                        ^~~~~~~~
lib/usual/tls/tls_ocsp.c:168:21: error: storage size of ‘tmpobj’ isn’t known
  168 |         X509_OBJECT tmpobj;
      |                     ^~~~~~
lib/usual/tls/tls_ocsp.c:168:21: warning: unused variable ‘tmpobj’ [-Wunused-variable]
lib/usual/tls/tls_ocsp.c:167:24: warning: unused variable ‘storectx’ [-Wunused-variable]
  167 |         X509_STORE_CTX storectx;
      |                        ^~~~~~~~

... and a lot of other warnings.)

petere added a commit that referenced this issue Oct 18, 2022
This resulted in the SHOW HELP response message to be misformatted.
In older PostgreSQL versions, the intended last line would just be cut
off silently, but in PostgreSQL 15 libpq, an error message

    message contents do not agree with length in message type "N"

is shown, making the test_show test fail.

addresses part of #769
@danielgustafsson
Copy link
Contributor

I see the same errors in my packaging pipeline, and I can verify that 04ff38b fixes the test_show failure.

@petere
Copy link
Member

petere commented Oct 22, 2022

The test_cancel etc. failures are fixed by postgres/postgres@4a6de74.

@petere petere closed this as completed Oct 22, 2022
@df7cb
Copy link
Contributor Author

df7cb commented Oct 22, 2022

Thanks!

Could you tag a new release for the pgbouncer side?

@danielgustafsson
Copy link
Contributor

danielgustafsson commented Oct 22, 2022

As the fix is in postgres, I guess the full test suite will be fixed when 15.1 ships.

@df7cb
Copy link
Contributor Author

df7cb commented Oct 22, 2022

One of the problems is still in pgbouncer, though. As I need to upload PG15 to Debian unstable anyway again, I'll cherry-pick that, and if pgbouncer is updated as well, we are good again.

@df7cb
Copy link
Contributor Author

df7cb commented Oct 24, 2022

I managed to get both postgresql-15 and pgbouncer updated. Thanks for the fixes!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants