[pgpool-general-jp: 32] Re: JDBCからpgpool-IIを経由してのpostgreSQL接続について

Yoshiyuki Asaba y-asaba @ sraoss.co.jp
2006年 11月 14日 (火) 17:43:08 JST


浅羽です。

From: Yoshiyuki Asaba <y-asaba @ sraoss.co.jp>
Subject: [pgpool-general-jp: 25] Re: JDBCからpgpool-IIを経由してのpostgreSQL接続について
Date: Fri, 10 Nov 2006 17:10:07 +0900 (JST)

> > 適用してみました。
> > 
> > 先ほどより少し進展しましたが、やはり駄目でした。
> > 
> > pgpoolのログも採りましたので、postgreSQLのログと合わせて添付します。
> 
> ログありがとうございます。うーむ、ダメでしたか…。週末にちょっと確認し
> てみますので少しお待ちください。

パッチを作ってみました。お手数ですが再度試していただけないでしょうか?
現在の CVS HEAD に対するパッチになります。

手元の環境では動くようになっていますが、もし止まってしまうようでしたら、
再現プログラムも一緒にいただけると助かります。

よろしくお願いします。
--
Yoshiyuki Asaba
y-asaba @ sraoss.co.jp
-------------- next part --------------
Index: pool_process_query.c
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pool_process_query.c,v
retrieving revision 1.4
diff -c -r1.4 pool_process_query.c
*** pool_process_query.c	27 Sep 2006 02:14:24 -0000	1.4
--- pool_process_query.c	14 Nov 2006 08:39:51 -0000
***************
*** 166,172 ****
  							   int connection_reuse,
  							   int first_ready_for_query_received)
  {
! 	char kind, kind1;	/* packet kind (backend) */
  	char fkind;	/* packet kind (frontend) */
  	short num_fields = 0;
  	fd_set	readmask;
--- 166,172 ----
  							   int connection_reuse,
  							   int first_ready_for_query_received)
  {
! 	char kind;	/* packet kind (backend) */
  	char fkind;	/* packet kind (frontend) */
  	short num_fields = 0;
  	fd_set	readmask;
***************
*** 184,190 ****
  
  	for (;;)
  	{
! 		kind = kind1 = 0;
  		fkind = 0;
  
  		if (state == 0 && connection_reuse)
--- 184,190 ----
  
  	for (;;)
  	{
! 		kind = 0;
  		fkind = 0;
  
  		if (state == 0 && connection_reuse)
***************
*** 309,328 ****
  		}
  		else
  		{
! 			if (MASTER(backend)->len > 0)
  			{
! 				status = read_kind_from_backend(frontend, backend, &kind);
  				if (status != POOL_CONTINUE)
  					return status;
  
! 				if (kind != 0 || kind1 != 0)
! 				{
! 					pool_debug("cached kind(%02x) or kind1(%02x) != 0", kind, kind1);
! 				}
! 				else
! 				{
! 					continue;
! 				}
  			}
  		}
  
--- 309,321 ----
  		}
  		else
  		{
! 			if (frontend->len > 0)
  			{
! 				status = ProcessFrontendResponse(frontend, backend);
  				if (status != POOL_CONTINUE)
  					return status;
  
! 				continue;
  			}
  		}
  
***************
*** 3069,3075 ****
  	{
  		if (VALID_BACKEND(i))
  		{
! 			if (pool_write(CONNECTION(backend, i), p, len))
  				return POOL_END;
  		}
  	}
--- 3062,3068 ----
  	{
  		if (VALID_BACKEND(i))
  		{
! 			if (pool_write_and_flush(CONNECTION(backend, i), p, len))
  				return POOL_END;
  		}
  	}


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