[pgcluster: 141] Re: PostPortNumber and sock == -1 in PGR_Send_Replicate_Command()
mitani
mitani @ sraw.co.jp
2004年 2月 23日 (月) 15:30:12 JST
三谷@広島です.
> (1) pgcluster を -R 付きで立ち上げると、RECOVERY_PREPARE_REQ なパケッ
> トが投げられると思うんですが、pgcluster のポート番号を
> $PGDATA/postgresql.conf で指定しても、このパケットには正しいポート
> 番号が入らないようです
$PGDATA/postgresql.confを読む前にリカバリーを実行していました.
src/backend/postmaster/postmaster.cの613行辺りですね.
checkDataDir(potential_DataDir); /* issues error messages */
SetDataDir(potential_DataDir);
+ ProcessConfigFile(PGC_POSTMASTER);
#ifdef USE_REPLICATION
PGR_Get_Conf_Data( potential_DataDir, CLUSTER_CONF_FILE );
PGR_Init_Replicate_Server_Data();
PGR_Set_Replicate_Server_Socket();
PGR_Free_Conf_Data();
if (recovery_flag)
{
if (PGR_Recovery_Main() != STATUS_OK)
{
PGR_delete_shm();
postmaster_error("recovery failed");
ExitPostmaster(1);
}
}
#endif /* USE_REPLICATION */
- ProcessConfigFile(PGC_POSTMASTER);
> (2) libpq/replicate.c の PGR_Send_Replicate_Command() なんですが、
> search_new_replication_server() が -1 を返すときがあるようで、その
パラメータチェック漏れですね.頂いたパッチとは違いますが,
libpq/replicate.c の712行目辺りにパラメータチェックを入れました.
+ /* check parameter */
+ if ((sock <= 0) || (header == NULL) || (query_string == NULL))
+ {
+ return STATUS_ERROR;
+ }
/*header->query_size +=1;*/
header_size = sizeof(ReplicateHeader);
=============================
三谷 篤<mitani @ sraw.co.jp>
=============================
pgcluster メーリングリストの案内