1

このエラーは、SQL 挿入ステートメントの実行後に発生したことがわかりました。SQL は、Java から実行されるストア プロシージャによって呼び出されます。以下のようにご覧ください。

=== 2012-03-23 20:39:13  Insert statement procedure executed ===

2012-03-23 21:16:01 CST:[local]:user@report:[1591]:FATAL:  57P01: terminating connection due to administrator command
2012-03-23 21:16:01 CST:[local]:user@report:[1591]:LOCATION:  ProcessInterrupts, postgres.c:2662
2012-03-23 21:16:01 CST:[local]:user@report:[656]:NOTICE:  00000: Slony-I: cleanup stale sl_nodelock entry for pid=1583
2012-03-23 21:16:01 CST:[local]:user@report:[656]:LOCATION:  exec_stmt_raise, pl_exec.c:2298
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:NOTICE:  00000: Slony-I: cleanup stale sl_nodelock entry for pid=1590
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:CONTEXT:  SQL statement "SELECT  "_slon_rep".cleanupNodelock()"
        PL/pgSQL function "cleanupevent" line 77 at PERFORM
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:LOCATION:  exec_stmt_raise, pl_exec.c:2298
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:NOTICE:  00000: Slony-I: cleanup stale sl_nodelock entry for pid=1634
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:CONTEXT:  SQL statement "SELECT  "_slon_rep".cleanupNodelock()"
        PL/pgSQL function "cleanupevent" line 77 at PERFORM
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:LOCATION:  exec_stmt_raise, pl_exec.c:2298

=== 2012-03-23 22:15:04 Insert statement procedure return release signal to Java ===

私のデータベースには2つのスキーマがありました。"app" と "report" の両方が Slony によって相互に同期されました。テーブルをチェックインしたところ、これらのレコードが20:39:13以降に挿入されていることがわかりました。私の懸念点は、insert ステートメントが 20:39:13 で既に実行されているため、Postgres が22:15:04にリリース信号を Java に返す理由です。上記のプロセスは、insert ステートメントのプロセスがハングし、その終了を待ってから Java にリリースする必要があることに影響されたと思います。

前もって感謝します停止:)

4

1 に答える 1

0

私のデータベースには2つのスキーマがありました。"app" と "report" の両方が Slony によって相互に同期されました。

私の推測では、Slony はレプリカに挿入されたレコードを検出し (覚えておいてください、Slony はマスター/スレーブのみです)、接続を中止しています。一方向のみ複製してください。

于 2013-03-27T01:21:09.327 に答える