[Pgpool-hackers] First pcp command as PostgreSQL function

Tatsuo Ishii ishii at sraoss.co.jp
Fri Apr 22 07:40:57 UTC 2011


>>>> Sorry but I couldn't apply your patches nor make working it.
>>>> Your patches produced lots of following messages:
>>>>
>>>> Reversed (or previously applied) patch detected!  Assume -R? [n] 
>>>
>>> Look like you tried to apply them multiple times and had an unstable
>>> source tree ?
>> 
>> I tried to apply split_reporting_functions-2.patch after
>> split_reporting_functions-1.patch, or just
>> split_reporting_functions-2.patch without success.
> 
> it was split_reporting_functions-2.patch, then pcp_pool_status.patch-1.patch
> Anyway doesn't matter now.

Oh I seem to do in reverse order.
Anyway, I have committed your patches. Thanks!

Regarding pgpool_adm unfortunately I got PostgreSQL backend crash with
double free memory:

30628 2011-04-22 16:04:33 JST LOG:  statement: SELECT * FROM pcp_node_info(0, 'localhost', 10, 9898, 'postgres', 'pgpoolAdmin');
*** glibc detected *** postgres: t-ishii test [local] SELECT: double free or corruption (out): 0x00007f8c4188cc10 ***
======= Backtrace: =========
/lib64/libc.so.6[0x7f8c415aca42]
/lib64/libc.so.6(cfree+0x8c)[0x7f8c415b024c]
/usr/local/pgsql/lib/libpcp.so.0(pcp_close+0x14)[0x7f8c33b94af4]
/usr/local/pgsql/lib/libpcp.so.0(pcp_disconnect+0x63)[0x7f8c33b92653]
/usr/local/pgsql/lib/pgpool_adm.so(_pcp_node_info+0x5db)[0x7f8c33d994bb]
postgres: t-ishii test [local] SELECT(ExecMakeTableFunctionResult+0x13e)[0x5460be]
postgres: t-ishii test [local] SELECT[0x554ab1]
postgres: t-ishii test [local] SELECT(ExecScan+0x253)[0x547603]
postgres: t-ishii test [local] SELECT(ExecProcNode+0x14a)[0x54081a]
postgres: t-ishii test [local] SELECT(standard_ExecutorRun+0xb1)[0x53f681]
postgres: t-ishii test [local] SELECT[0x5ef8d4]
postgres: t-ishii test [local] SELECT(PortalRun+0x260)[0x5f0da0]
postgres: t-ishii test [local] SELECT[0x5eda5b]
postgres: t-ishii test [local] SELECT(PostgresMain+0x444)[0x5ee2d4]
postgres: t-ishii test [local] SELECT[0x5be89c]
postgres: t-ishii test [local] SELECT(PostmasterMain+0x7c7)[0x5bf497]
postgres: t-ishii test [local] SELECT(main+0x17e)[0x569a0e]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x7f8c41556304]

>>>> (I fixed rejecting patches caused by Toshihiro's commit)
>>>>
>>>> I couldn't solve undefined reference to get_config().
>>>>
>>>> /home/t-ishii/work/pgfoundry/tmp/pgpool-II/pcp_child.c:911: undefined
>>>> reference to `get_config'
>>>
>>> get_config is in the first patch about splitting the report functions
>>>
>>>> It seems the function body does not exist in your patches at all.
>>>>
>>>> Please re-submit complete patches against CVS HEAD so that I can test
>>>> it.
>>>
>>> PFA a cumulative patch synched with current CVS
>>>
>>> I was able to build pgpool after applying the patch with  the following
>>> command:
>>>
>>>   patch -p1 < /tmp/split_report_funcs+pcp_pool_status.patch
>>>
>>> Originally, I decided to split both patches for ease of review, sorry if
>>> it was confusing :(
>> 
>> Thanks! This is really helpfull! Regarding the patches size, one large
>> patch is not problem at least for me.
> 
> Ok
> 
>> --
>> Tatsuo Ishii
>> SRA OSS, Inc. Japan
>> English: http://www.sraoss.co.jp/index_en.php
>> Japanese: http://www.sraoss.co.jp
>> 
>>>> On 03/04/2011 01:38, Tatsuo Ishii wrote:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Following our previous discussions I created a PostgreSQL contrib module
>>>>>>>> which brings pgpool's pcp command as function in PostgreSQL. I called it
>>>>>>>> pgpool_adm, any better ideas ?
>>>>>>>
>>>>>>> Great! I think "pgpool_adm" is fine.
>>>>>>>
>>>>>>>> As a first step, I decided to focus on one function only: pcp_node_info.
>>>>>>>> I'll add other ones as soon as this one will be committable.
>>>>>>>
>>>>>>> I see. BTW, are you going to implement a function for "show
>>>>>>> pool_status"?
>>>>
>>>> Here is a new version of the contrib module, including support for
>>>> pcp_pool_status.
>>>>
>>>> It requires a patched version of pgpool with my 2 patches
>>>> "split_reporting_functions-1.patch" and "pcp_pool_status-2.patch".
>>>>
>>>> Follow the same installation instructions than in my previous emails to
>>>> install this module and, optionally some foreign server wrapper.
>>>>
>>>> Then:
>>>>
>>>>   pgpool=> SELECT * FROM pcp_pool_status('127.0.0.1', 10, 9898,
>>>> 'pgpool_adm', 'password');
>>>>
>>>> or, if you are using foreign server capability in postgresql 8.4+:
>>>>
>>>>   pgpool=> SELECT * FROM pcp_pool_status('pgpool0');
>>>>
>>>> Feedbacks and comments ?
>>>>
>>>>>>>> INSTALL: (tested against current 9.1devel HEAD)
>>>>>>>>
>>>>>>>>   $ cd $PGSRC/contrib
>>>>>>>>   $ tar zxf pgpool_adm.tgz
>>>>>>>>   $ cd pgpool_adm
>>>>>>>>   $ make && sudo make install
>>>>>>>>
>>>>>>>> then:
>>>>>>>>
>>>>>>>>   $ psql pgpool
>>>>>>>>   CREATE SCHEMA pgpool;
>>>>>>>>   CREATE EXTENSION pgpool_adm WITH SCHEMA pgpool ;
>>>>>>>>   SELECT * FROM pgpool.pcp_node_info(0, 'localhost', 10, 9898,
>>>>>>>> 'pgpool_adm', 'password');
>>>>>>>>      host    | port |             status              |   weight
>>>>>>>>   -----------+------+---------------------------------+-------------
>>>>>>>>    localhost | 5491 | Waiting for connection to start | 1.46602e+13
>>>>>>>>   (1 ligne)
>>>>>>>>
>>>>>>>> If you don't want/cannot test with 9.1, just adapt and run the "CREATE
>>>>>>>> FUNCTION" query located in pgpool_adm/pgpool_adm--1.0.sql.
>>>>>>>>
>>>>>>>> NOTE:
>>>>>>>> I had to mess a bit to make the compilation work out of the box because
>>>>>>>> of my setup of pgpool installing stuffs in /usr/local/{lib,include}.
>>>>>>>> Basically editing my system ldd setup and configuring postgresql with
>>>>>>>> "--with-libraries" and "--with-includes". Drop me a mail if you have any
>>>>>>>> trouble.
>>>>>>>>
>>>>>>>> TODO:
>>>>>>>>   * I will try to make it work with foreign server and user mappings so
>>>>>>>> we will not have to give all servers parameters (host, port, timeout),
>>>>>>>> but most importantly, not have to write in clear text authentication
>>>>>>>> parameters.
>>>>>>>>   * Why do we backend_weight/RAND_MAX in the code ?
>>>>>>>
>>>>>>> To normalize backend weight.
>>>>>>>
>>>>>>>> Feedback & comments ?
>>>>>>>> - -- 
>>>>>>>> Jehan-Guillaume (ioguix) de Rorthais
>>>>>>>> DBA
>>>>>>>> http://www.dalibo.com
>>>>>>>>
>>>
>>>
>>> - -- 
>>> Jehan-Guillaume (ioguix) de Rorthais
>>> DBA
>>> http://www.dalibo.com
> - -- 
> Jehan-Guillaume (ioguix) de Rorthais
> DBA
> http://www.dalibo.com
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iEYEARECAAYFAk2xLBYACgkQXu9L1HbaT6IzhQCfTUItDy2JiE8dMop7HszW6xYR
> iMYAoNTQtd2PvI5nxkpWaBC++4Vtp0DX
> =VsS5
> -----END PGP SIGNATURE-----


More information about the Pgpool-hackers mailing list