[pgcluster: 1001] Re: レプリケーションサーバのノンストップについて

小玉 芳信 y-kodama @ kk-mic.jp
2007年 7月 20日 (金) 18:23:19 JST


お世話になります。
こだまです。

三谷様
ご回答ありがとうございます。

返信が遅くなり大変申し訳ございません。

ご指摘いただいた事項についての作業結果を報告させていただきます。

> src/backend/parserの下のparser.h, scan.c, gram.cを削除してからコンパイルしな
> おしてみてください。

scan.c、gram.cファイルは存在しましたが、parser.hファイルは存在しませんでした。
かわりにparse.hファイル、parser.cファイルがありましたので、
(1)scan.c、gram.c、parse.hを削除して再コンパイル、
(2)scan.c、gram.c、parser.cを削除して再コンパイル、
を行ってみました。

コンパイル方法はそれぞれのファイルを削除後、以下を実行しました。
$ ./configure --enable-thread-safety
$ make

それぞれmakeの最中にエラーで落ちてしまいます。
---(1)の場合のエラーメッセージは以下の通りです。---
bison -y -d  gram.y
gram.y:3754: 初期状態の動作では型 (`' `keyword') が衝突します
gram.y:7757: 初期状態の動作では型 (`' `keyword') が衝突します
make[3]: *** [parse.h] エラー 1
make[3]: 出ます ディレクトリ `/home/postgres/pgcluster-1.5.0rc16/src/backend/parser'
make[2]: *** [parser/parse.h] エラー 2
make[2]: 出ます ディレクトリ `/home/postgres/pgcluster-1.5.0rc16/src/backend'
make[1]: *** [all] エラー 2
make[1]: 出ます ディレクトリ `/home/postgres/pgcluster-1.5.0rc16/src'
make: *** [all] エラー 2
---

---(2)の場合のエラーメッセージ---
/usr/bin/flex -CF -o'scan.c' scan.l
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline -fno-strict-aliasing -DUSE_REPLICATION -DPRINT_DEBUG -I. -I../../../src/include 
 -D_GNU_SOURCE   -c -o gram.o gram.c
gcc: gram.c: そのようなファイルやディレクトリはありません
gcc: no input files
make[3]: *** [gram.o] エラー 1
make[3]: 出ます ディレクトリ `/home/postgres/pgcluster-1.5.0rc16/src/backend/parser'
make[2]: *** [parser-recursive] エラー 2
make[2]: 出ます ディレクトリ `/home/postgres/pgcluster-1.5.0rc16/src/backend'
make[1]: *** [all] エラー 2
make[1]: 出ます ディレクトリ `/home/postgres/pgcluster-1.5.0rc16/src'
make: *** [all] エラー 2
---

削除するファイルを間違っているのでしょうか?

また、気になる点としましては、./configureで、以下のメッセージが発生しています。
---(抜粋)---
configure: WARNING:
*** If you are going to modify the grammar files or build from CVS, the installed
*** version of Bison is too old.  Bison version 1.875 or later is required.
---

しかし、このメッセージはご指定頂いたファイルを削除せずにインストールを行った場合も発生しており、
その場合はmakeはもちろん、インストールも成功しております。


> 次に、PC1のレプリケーションサーバを落としたあと、PC2のレプリケーションサーバ
> が何故落ちるのか、デバッグ文をみてください。
全体の起動順は以下の通りです。
pc1のクラスタDB→pc2のクラスタDB→pc3のクラスタDB
pc1のレプリケーションサーバ→pc2のレプリケーションサーバ→pc3のレプリケーションサーバ
レプリケーションサーバの起動は
$ pgreplication -vn
にて起動を行いました。

以下、pc1のレプリケーションサーバ停止直後のログ出力結果です。

---pc1のレプリケーションサーバ---
2007-07-20 18:07:35 [3450] DEBUG:quick_exit:signo = 2
2007-07-20 18:07:35 [3451] DEBUG:quick_exit:signo = 2
2007-07-20 18:07:35 [3456] DEBUG:quick_exit:signo = 2
2007-07-20 18:07:35 [3739] DEBUG:quick_exit:signo = 2
2007-07-20 18:07:35 [3762] DEBUG:quick_exit:signo = 2
LOG:  unexpected EOF on client connection
---

---pc2のレプリケーションサーバ---
LOG:  unexpected EOF on client connection
---

---pc3のレプリケーションサーバ---
LOG:  unexpected EOF on client connection
LOG:  unexpected EOF on client connection
2007-07-20 18:08:59 [3294] DEBUG:do_rlog():got result:cmdSys='S'
2007-07-20 18:08:59 [3294] DEBUG:do_rlog(): CMD_STS_TRANSACTION_ABORT
2007-07-20 18:08:59 [3294] DEBUG:reconfirm_commit():PGR_NOT_YET_COMMIT
2007-07-20 18:08:59 [3294] DEBUG:do_rlog(): SYS_CALL process done
2007-07-20 18:08:59 [3294] DEBUG:do_rlog():process result done:cmdSys='S'
2007-07-20 18:08:59 [3491] ERROR:PGRread_packet():recv failed: (Connection reset by peer)
2007-07-20 18:08:59 [3491] ERROR:PGRread_packet():recv failed: (Connection reset by peer)
2007-07-20 18:08:59 [3294] DEBUG:do_rlog():got result:cmdSys='S'
2007-07-20 18:08:59 [3294] DEBUG:do_rlog(): CMD_STS_TRANSACTION_ABORT
2007-07-20 18:08:59 [3294] DEBUG:reconfirm_commit():PGR_NOT_YET_COMMIT
2007-07-20 18:08:59 [3294] DEBUG:do_rlog(): SYS_CALL process done
2007-07-20 18:08:59 [3294] DEBUG:do_rlog():process result done:cmdSys='S'
2007-07-20 18:08:59 [3294] DEBUG:do_rlog():got result:cmdSys='S'
2007-07-20 18:08:59 [3294] DEBUG:do_rlog(): CMD_STS_TRANSACTION_ABORT
2007-07-20 18:08:59 [3294] DEBUG:reconfirm_commit():PGR_NOT_YET_COMMIT
2007-07-20 18:08:59 [3294] DEBUG:do_rlog(): SYS_CALL process done
2007-07-20 18:08:59 [3294] DEBUG:do_rlog():process result done:cmdSys='S'
2007-07-20 18:08:59 [3494] ERROR:PGRread_packet():recv failed: (Connection reset by peer)
2007-07-20 18:08:59 [3494] ERROR:PGRread_packet():recv failed: (Connection reset by peer)
---

PC2のレプリケーションサーバに切り替わっていると思われるのですが、ログは出力されていません。

実状原因をつかめないでおります。

他に調査方法等ございましたらご指摘お願いします。




pgcluster メーリングリストの案内