[pgpool-general-jp: 656] Re: pgpool-ii 19ノード以上設定時のshow pool_status

Tatsuo Ishii ishii @ sraoss.co.jp
2009年 12月 17日 (木) 22:45:24 JST


石井です。

> gdbの出力は下記のようになりました。
> OSはCentOS5.3を使用しています。
> 
> 別端末のpsqlから show pool_status を入力後に (gdb) continue しています。取得方法はこれでよろしいでしょうか。
> ご指摘の通り、show pool status 後に接続していたpgpoolプロセスが落ちて、別PIDが生成されておりました。

バックトレースの取得方法はこれで良いのですが、派手にスタックを壊してい
るようで、せっかくのバックトレースも分からないものになっていますね。し
かし、改めてコードをじっくりみたら、思い当たる節がありました。よろしけ
れば以下のパッチを試してみていただけないでしょうか?

Index: pool_process_query.c
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pool_process_query.c,v
retrieving revision 1.141.2.30
diff -c -r1.141.2.30 pool_process_query.c
*** pool_process_query.c	16 Dec 2009 09:23:26 -0000	1.141.2.30
--- pool_process_query.c	17 Dec 2009 13:40:28 -0000
***************
*** 1039,1047 ****
  		char desc[POOLCONFIG_MAXDESCLEN+1];
  	} POOL_REPORT_STATUS;
  
! #define MAXITEMS 128
  
! 	POOL_REPORT_STATUS status[MAXITEMS];
  
  	short nrows;
  	int size;
--- 1039,1053 ----
  		char desc[POOLCONFIG_MAXDESCLEN+1];
  	} POOL_REPORT_STATUS;
  
! /*
!  * Report data buffer.
!  * 128 is the max number of configuration items.
!  * In addition, we need MAX_NUM_BACKENDS*4
!  * for backend descriptions.
!  */
! #define MAXITEMS (128 + MAX_NUM_BACKENDS*4)		
  
! 	static POOL_REPORT_STATUS status[MAXITEMS];
  
  	short nrows;
  	int size;


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