[Notes/Domino] 削除スタブを Lotus Script から削除 or 取得する方法
Notes/Dominoでちょっとコネタの記事を見ていて、削除スタブについて思い出したことがありますので、エントリしておきます。
けっこう前の話ですが、R5で運用しているクライアントで、毎日数千件の文書を削除&追加しているDBがありました(わたしが作ったもんじゃないけど)。しばらくはそれでうまくいっていたそうですが、ある時から複製(クラスタリング)がタイムアウトするという現象が発生してしまいました。そのDBで引っかかってタイムアウトしてしまうため、他のDBも複製されないという事態になり、けっこうな問題になっていました。
そこでわたしが原因を調査してみたところ、削除スタブが溜まりに溜まって(60万件くらいだったかな?)いたことが判明。削除スタブを全部削除したら問題は解決されました。(と軽く書きましたが、この結論に辿り着くまでに結構時間がかかりました……(x_x) )
たしかこの時、複製の設定のところの日数を「0」にしても完全に消えなくて、LotusScript から無理矢理消したと思います。その時使用したスクリプトが、こちらのスクリプトです。
Notes/Domino 4 and 5 Forum : RE: Clear Deletion Stubs with LotusScript (魚拓)
※上記のスクリプトを実行した場合、削除スタブが全部消去されるため、削除を反映していない複製がある場合、削除文書が復活することがあります。その点注意してください。
また、削除スタブの情報を取得するには、以下のスクリプトを使用すればよいみたいです。(試したことはありませんが(^^; )
Notes/Domino 6 and 7 Forum : RE: Get deletion stubs (魚拓)
ちなみに、上記2つのスクリプトを見て解るとおり、削除スタブは NoteID の最上位ビットが1に(つまり符号付き4バイト変数(LotusScriptではLong型)ではマイナス値に)なるようです。Note の情報を取得したり消したりする場合は、最上位ビットを0にしてから処理すればいいみたい(ただし、取得できる情報は、日付や NoteClass などの情報だけみたいです)。それさえ解ってしまえば、API で扱うのも簡単ですね。
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。