[pgpool-general-jp: 1643] Re: pgpool-II 3.5.26 のリグレッションテストが失敗するケースについて

Bo Peng pengbo @ sraoss.co.jp
2020年 9月 23日 (水) 15:48:46 JST


彭です。

ご報告ありがとうございます。

ご報告頂いている

- 問題(1)については、pgpool_setup の不具合なので、修正します。
- 問題(2)については、再現及び調査に時間を要します。
  原因がわかり次第、連絡します。しばらくお待ちください。

以上、よろしくお願いします。

On Mon, 14 Sep 2020 15:45:32 +0900
中村憲一 <nakamura.kenichi @ ntt-tx.co.jp> wrote:

> いつもお世話になっております。中村と申します。
> 
> 早速ですが、
> pgpool-II 3.5.26 のリグレッションテストを実施したところ、
> 2つ問題が発生しましたので、ご報告致します。
> ※pgpool-II 4.1.3 など、同時期にリリースされたその他のバージョンでは問題はありませんでした。
> 
> 
> お忙しい中恐れ入りますが、ご確認のほど、よろしくお願い致します。
> 
> ●環境
> RHEL 8.1
> PostgreSQL 12.4
> JDBC Driver 42.2.14
> pgpool-II:
>      pgpool-II-pg12-3.5.26-1pgdg.rhel8.x86_64.rpm
>      pgpool-II-pg12-devel-3.5.26-1pgdg.rhel8.x86_64.rpm
>      pgpool-II-pg12-extensions-3.5.26-1pgdg.rhel8.x86_64.rpm
> 
> ●発生した問題
> ■(1)pgpool-II-3.5.26/src/test/pgpool_setup スクリプトの
>    PGVERSIONチェック方法が統一されていませんでした
> 
> 3.5.26 のリグレッションテストでは、PostgreSQLのメジャーバージョンを変数 PGVERSIONに2桁で格納していますが、
> (例えば、PostgreSQL12.4の場合、12が入る)バージョンチェックしている箇所では3桁(120)で比較している箇所が
> 存在しており、PostgreSQL12系でのリグレッションテストが正常に動作しませんでした。
> 
> 91行目:(PostgreSQLのメジャーバージョンを格納する箇所)
> ----
> PGVERSION=`$INITDB -V|awk '{print $3}'|sed 's/\..*//'|sed 's/\([0-9]*\)[a-zA-Z].*/\1/'`
> ----
> 
> 286行目、415行目、451行目
> ----
> if [ $PGVERSION -ge 120 ];then
> ----
> 
> こちらは、120⇒12に書き換えることで PostgreSQL12.4 で正常に動作しました。
> 
> 
> ■(2)069.memory_leak_extended のテストが failed となる
> 
> 069.memory_leak_extended はメモリリークが発生しないことを確認するテストですが、
> raw mode のテストで 92KB のメモリ増加により、テストが failed になりました。
> mode:s, mode:r では問題は発生しませんでした。
> ----
> initial process size: 72368 after size: 72460 delta: 92
> memory leak in 92 KB in mode:n
> ----
> 
> pmap で確認したところ、
> ---
> 00005558d6269000     92K rw---   [ anon ]
> ----
> が差分として発生していました。
> 
> なお、pgpool-II 3.5.25 のRPMに置き換えた場合、および、pgpool-II 3.5.26 のソースビルドしたものを
> 使用した場合は、069.memory_leak_extended は OKになりました。
> 
> 
> 
> 以下に、該当箇所のリグレッションテストのログを記載致します。
> ----
> [postgres @ db20196 regression]$ rpm -qa | grep postgresql
> postgresql12-server-12.4-1PGDG.rhel8.x86_64
> postgresql12-libs-12.4-1PGDG.rhel8.x86_64
> postgresql12-contrib-12.4-1PGDG.rhel8.x86_64
> postgresql12-12.4-1PGDG.rhel8.x86_64
> postgresql12-devel-12.4-1PGDG.rhel8.x86_64
> [postgres @ db20196 regression]$ rpm -qa | grep pgpool
> pgpool-II-pg12-extensions-3.5.26-1pgdg.rhel8.x86_64
> pgpool-II-pg12-3.5.26-1pgdg.rhel8.x86_64
> pgpool-II-pg12-devel-3.5.26-1pgdg.rhel8.x86_64
> [postgres @ db20196 regression]$ pwd
> /var/lib/pgsql/pgpool-II-3.5.26/src/test/regression
> 
> [postgres @ db20196 regression]$ ./regress.sh -p /usr/pgsql-12/bin -i /usr -m noinstall -j /tmp/postgresql-42.2.14.jar -s /var/run/postgresql
> not installing pgpool for the tests ...
> using pgpool-II at /usr
> *************************
> REGRESSION MODE : noinstall
> PGPOOL-II       : /usr
> PostgreSQL bin  : /usr/pgsql-12/bin
> pgbench         : /usr/pgsql-12/bin/pgbench
> PostgreSQL jdbc : /tmp/postgresql-42.2.14.jar
> *************************
> testing 069.memory_leak_extended...failed.
> out of 1 ok:0 failed:1 timeout:0
> [postgres @ db20196 regression]$ cat log/069.memory_leak_extended
> creating test environment...PostgreSQL major version: 12
> Satrting set up in raw mode
> creating startall and shutdownall
> creating failover script
> creating database cluster /var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/data0...done.
> update postgresql.conf
> creating pgpool_remote_start
> creating basebackup.sh
> creating database cluster /var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/data1...done.
> update postgresql.conf
> creating pgpool_remote_start
> creating basebackup.sh
> start all
> waiting for pgpool-II coming up...done.
> create extensions
>   node_id |      hostname       | port  | status | lb_weight |  role  | select_cnt
> ---------+---------------------+-------+--------+-----------+--------+------------
>   0       | /var/run/postgresql | 11002 | 2      | 0.500000  | master | 0
>   1       | /var/run/postgresql | 11003 | 1      | 0.500000  | slave  | 0
> (2 rows)
> 
> shutdown all
> 
> pgpool-II setting for raw mode is done.
> To start the whole system, use /var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/startall.
> To shutdown the whole system, use /var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/shutdownall.
> pcp command user name is "postgres", password is "postgres".
> Each PostgreSQL, pgpool-II and pcp port is as follows:
> #1 port is 11002
> #2 port is 11003
> pgpool port is 11000
> pcp port is 11001
> The info above is in README.port.
> done.
> waiting for server to start....2020-09-14 05:20:56.876 GMT [14879] LOG:  skipping missing configuration file "/var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/data0/myrecovery.conf"
> 2020-09-14 05:20:56.876 GMT [14879] LOG:  skipping missing configuration file "/var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/data0/myrecovery.conf"
> 14879 2020-09-14 14:20:56 JST LOG:  starting PostgreSQL 12.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit
> 14879 2020-09-14 14:20:56 JST LOG:  listening on IPv4 address "0.0.0.0", port 11002
> 14879 2020-09-14 14:20:56 JST LOG:  could not create IPv6 socket for address "::": Address family not supported by protocol
> 14879 2020-09-14 14:20:56 JST LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.11002"
> 14879 2020-09-14 14:20:56 JST LOG:  redirecting log output to logging collector process
> 14879 2020-09-14 14:20:56 JST HINT:  Future log output will appear in directory "log".
>   done
> server started
> waiting for server to start....2020-09-14 05:20:56.988 GMT [14893] LOG:  skipping missing configuration file "/var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/data1/myrecovery.conf"
> 2020-09-14 05:20:56.988 GMT [14893] LOG:  skipping missing configuration file "/var/lib/pgsql/pgpool-II-3.5.26/src/test/regression/tests/069.memory_leak_extended/testdir/data1/myrecovery.conf"
> 14893 2020-09-14 14:20:56 JST LOG:  starting PostgreSQL 12.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit
> 14893 2020-09-14 14:20:56 JST LOG:  listening on IPv4 address "0.0.0.0", port 11003
> 14893 2020-09-14 14:20:56 JST LOG:  could not create IPv6 socket for address "::": Address family not supported by protocol
> 14893 2020-09-14 14:20:56 JST LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.11003"
> 14893 2020-09-14 14:20:56 JST LOG:  redirecting log output to logging collector process
> 14893 2020-09-14 14:20:56 JST HINT:  Future log output will appear in directory "log".
>   done
> server started
> dropping old tables...
> NOTICE:  table "pgbench_accounts" does not exist, skipping
> NOTICE:  table "pgbench_branches" does not exist, skipping
> NOTICE:  table "pgbench_history" does not exist, skipping
> NOTICE:  table "pgbench_tellers" does not exist, skipping
> creating tables...
> generating data...
> 100000 of 100000 tuples (100%) done (elapsed 0.13 s, remaining 0.00 s)
> vacuuming...
> creating primary keys...
> done.
> starting vacuum...end.
> transaction type: <builtin: select only>
> scaling factor: 1
> query mode: simple
> number of clients: 1
> number of threads: 1
> duration: 10 s
> number of transactions actually processed: 91717
> latency average = 0.109 ms
> tps = 9171.615366 (including connections establishing)
> tps = 9171.772689 (excluding connections establishing)
> init_size: 72368
> starting vacuum...end.
> transaction type: <builtin: select only>
> scaling factor: 1
> query mode: extended
> number of clients: 1
> number of threads: 1
> duration: 30 s
> number of transactions actually processed: 137724
> latency average = 0.218 ms
> tps = 4590.791101 (including connections establishing)
> tps = 4590.820128 (excluding connections establishing)
> initial process size: 72368 after size: 72460 delta: 92
> memory leak in 92 KB in mode:n
> 2020-09-14 14:21:38: pid 14947: LOG:  stop request sent to pgpool. waiting for termination...
> .done.
> waiting for server to shut down.... done
> server stopped
> waiting for server to shut down.... done
> server stopped
> [postgres @ db20196 regression]$
> 
> 
> 
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp


-- 
Bo Peng <pengbo @ sraoss.co.jp>
SRA OSS, Inc. Japan


pgpool-general-jp メーリングリストの案内