[pgcluster: 353] now()の誤動作

Nishino nishino @ imp.zive.net
2004年 6月 11日 (金) 14:36:41 JST


西野と申します。
今回、妙な症状が起きてしまうのでご連絡いたします。


PGCluster-1.0.7RC3フルパッケージ版を以下の構成に用意しました。
(マシンはすべてredhat8)

    lb    192.168.2.80  ロードバランサ
    ct1   192.168.2.81  クラスタ1
    ct2   192.168.2.82  クラスタ2
    ct3   192.168.2.83  クラスタ3
    rp    192.168.2.84  リプリケータ
    test  192.168.2.90  検証マシン



以下、試験手順。
テーブル構成
postgres=> \d sample
                Table "public.sample"
   Column   |            Type             | Modifiers
------------+-----------------------------+-----------
 dataintime | timestamp without time zone |
 id         | integer                     |



    (1). test → lb
        postgres=> INSERT INTO sample VALUES (now(), 1);
        INSERT 17011 1
        postgres=> INSERT INTO sample VALUES (now(), 2);
        INSERT 17012 1
        postgres=> INSERT INTO sample VALUES (now(), 3);
        INSERT 17013 1
        postgres=> INSERT INTO sample VALUES (now(), 4);
        INSERT 17014 1
        postgres=> INSERT INTO sample VALUES (now(), 5);
        INSERT 17015 1
        postgres=> INSERT INTO sample VALUES (now(), 6);
        INSERT 17016 1
        postgres=> INSERT INTO sample VALUES (now(), 7);
        INSERT 17017 1
        postgres=> INSERT INTO sample VALUES (now(), 8);
        INSERT 17018 1
        postgres=> INSERT INTO sample VALUES (now(), 9);
        INSERT 17019 1

    (2). ct1
        postgres=# SELECT * from sample order by id;
                 dataintime         | id
        ----------------------------+----
         2004-06-11 14:58:30.731321 |  1 <---- ※
         2004-06-11 14:58:32.537703 |  2
         2004-06-11 14:58:33.491437 |  3
         2004-06-11 14:58:34.45971  |  4
         2004-06-11 14:58:35.338717 |  5
         2004-06-11 14:58:36.234054 |  6
         2004-06-11 14:58:37.309674 |  7
         2004-06-11 14:58:38.299904 |  8
         2004-06-11 14:58:39.235818 |  9
        (9 rows)


    (3). ct2
        postgres=# SELECT * from sample order by id;
                 dataintime         | id
        ----------------------------+----
         2004-06-11 14:58:25.809607 |  1 <---- ※
         2004-06-11 14:58:30.731321 |  2
         2004-06-11 14:58:32.537703 |  3
         2004-06-11 14:58:33.491437 |  4
         2004-06-11 14:58:34.45971  |  5
         2004-06-11 14:58:35.338717 |  6
         2004-06-11 14:58:36.234054 |  7
         2004-06-11 14:58:37.309674 |  8
         2004-06-11 14:58:38.299904 |  9
        (9 rows)


    (4). ct3
        postgres=# SELECT * from sample order by id;
                 dataintime         | id
        ----------------------------+----
         2004-06-11 14:58:30.731321 |  1 <---- ※
         2004-06-11 14:58:32.537703 |  2
         2004-06-11 14:58:33.491437 |  3
         2004-06-11 14:58:34.45971  |  4
         2004-06-11 14:58:35.338717 |  5
         2004-06-11 14:58:36.234054 |  6
         2004-06-11 14:58:37.309674 |  7
         2004-06-11 14:58:38.299904 |  8
         2004-06-11 14:58:39.235818 |  9
        (9 rows)



ここで確認して頂きたいのが、ct1 = ct 3 で同期が取れているのに、
ct2 が違う値を insert されてしまっているところです。

データの件数はそれぞれ 9件ずつ なので問題なさそうですが now()
命令を使用する事で、同期の取れない結果になっているようです。

(単純に now() を使用しなければ・・・)



now() はリプリケータの時間を取得してそれぞれのクラスタに
代入していると見受けますが、このような症状はありましたでしょうか?


宜しくお願いいたします。



----
Nishino < nishino @ imp.zive.net >






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