ブログお問合わせ情報管理ポリシーとワークフローと通知の危険な関係Tweet障害ネタ。「あるリストに通知設定をしていたユーザに、一晩で100通以上の通知メールが飛んでしまった」です。従業員がもっとも通知を設定している掲示板でこれが起こったものですから─いやはや。原因は「情報管理ポリシー」「ワークフロー」「通知」の三つが、がおかしな風に連動したことでした。おかしな、と書きましたが、別に特殊なバグではありません。環境でも発生する(再現性がある)内容ですので、ここでご紹介しておきたいと思います。「情報管理ポリシー」です。これは、リストやライブラリに対して、「一定期間が経過した後のアイテム/ファイルの挙動」を定義することができるものです。判りやすい使い方は「最終更新日から○年が経過したら削除」などでしょう。自動的に作成され、ポリシーに基づく有効期限が自動的に入力されます。そのリスト/ライブラリに、既にコンテンツがある場合、列が作成されても、即座に有効期限が入力される訳ではありません。設定された、タイマージョブが起動するタイミング(デフォルトでは夜間)に、有効期限が入力されます。内部的には、「プロパティの更新」として扱われているようですが、そこは上手くできていて、「システムによる変更」扱いにより、アイテムの最終更新日時/更新ユーザには影響がありません。ワークフロー機能の仕様ミスだと思いますね。1000件以上のアイテムがあるリスト(デイリーユースの掲示板なら珍しくありません)でこれが発生すると、同時に1000以上のワークフローのインスタンスが発生することに!この時点で、サーバリソース的に十分、壊滅的なインパクトがありますが、ここに「通知」が絡むと、さらに事態が悪化します。起動したワークフローが、アイテムのプロパティになにか変更を加えるような仕様だった場合、当然ながら、通知を設定しているユーザにメールが飛びます。更新されたすべてのアイテム分、1000通×ユーザ数...実際には、この負荷にサーバが耐えられず、途中で落ちしてまったため、「一部のユーザに100通」の障害で済んだのですが。それでも大障害には違いありません。皆様も、「情報管理ポリシー」利用時にはご注意ください。