2025/08/25

GetDocumentByKey が正しくヒットしない現象 !?

前回、約 20 年前に GetAllEntriesByKey を使用して、トラブルが発生した話をしました。これがきっかけでトラブルを引き寄せたのかもしれませんが、またしても、ビューの検索でトラブルが発生しました。

今回は、GetDocumentByKey に起因する問題でした。トラブル内容をまとめますので、みなさまもお気を付けください...


発生した問題

まずは、問題の原因からです。Google で検索した結果、すでに不具合情報(Defect Article)が上がっておりました。

Domino Designer 64ビット版で設計を保存すると、Notes 32ビット版では GetDocumentByKey が正しく動作しない

発生条件としては次の通りです。

  • 32 ビットと 64 ビットの Notes が混在する環境で発生
  • 64 ビットで保存し、32 ビットで実行すると発生
  • GetDocumentByKey の検索キーに配列を指定した場合に発生
  • 11.0.1 FP9、12.0.2 FP3 以降の 32 ビット版では発生しない


発生状況

私がサポートしている環境は、一般ユーザは Notes 11 を使用中です。現在バージョンアップを計画中で、検証のため私の PC には 14.5 が入っています。私の PC だけが 64 ビット版ということです。

私が開発作業をすればするほど、正常に動作しない DB が増え、傷口が広がるというトラップでした...

現象としては、GetDocumentByKey の検索キーが配列ときに発生する現象のため、頻度は低めだったのは幸いでした。それでも、いくつかの症状に見舞われました。

「ビューを検索して、ヒットしなかったら文書を新規作成する」という処理では、かったぱしから新規作成されていました。また、申請番号を管理する機能において、管理文書が取得できず、初期番号が付与され、番号が重複する現象が出ました。

特に後者は後続の業務に番号を使用していたので、システムだけでなく、業務部門にも訂正作業が発生し、大きな影響がありました。


まとめ

最初に掲載した不具合情報は 2025年5月29日 の掲載でした。最新情報ではありませんが、注意喚起のため記事にしました。Notes / Domino 11 がサポート切れになったこともあり、これからバージョンアップする方もいるかと思います。移行期間中は、32 ビットと 64 ビットの混在環境になりますので、この現象にご注意ください。

本件の対策は、32 ビットで LotusScript コンパイルすることです。[すべての LotusScript をリコンパイル]でも回避できます。開発者のマシンを最後にバージョンアップ(64 ビット化)するのは非現実的ですので、32 ビットでコンパイルしてから運用 DB に反映することをリリース手順に入れた方がいいかもしれませんね。

私のような被害者がにとりでも減ることを祈っております...


0 件のコメント:

コメントを投稿