自分のタスクやタスク レポートにタスクが重複して表示される
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
症状
[自分のタスク] タブやページ上のタスク レポート マクロで、タスク エントリが重複して表示される。
タスクを含むページに移動すると、タスクが正しい数で表示される。
診断
次の SQL クエリを実行して、インスタンス内に存在する重複タスクの数を確認できます。
このクエリは、タスクが表示されるコンテンツの ID に一致するタスク ID に基づいて重複タスクを発見します。
注意: このクエリでは、元のタスクがページから削除され、重複の 1 つのみが残っているものは見つけられません。
select count(distinct t1."GLOBAL_ID")
from "AO_BAF3AA_AOINLINE_TASK" t2, "AO_BAF3AA_AOINLINE_TASK" t1
where t1."ID" = t2."ID" and t1."CONTENT_ID" = t2."CONTENT_ID" and t1."GLOBAL_ID" < t2."GLOBAL_ID";
select count(distinct t1.GLOBAL_ID)
from AO_BAF3AA_AOINLINE_TASK t2, AO_BAF3AA_AOINLINE_TASK t1
where t1.ID = t2.ID and t1.CONTENT_ID = t2.CONTENT_ID and t1.GLOBAL_ID < t2.GLOBAL_ID;
原因
タスクの重複は、タスクを含むページが並べ替えられたり、同じスペース内で別のページが並べ替えられると発生します。
また、タスクを含むブログ投稿があり、そこに別のページへのリンクが含まれ、リンクされたページが並べ替えられたときにも発生します。
詳細については次のバグ レポートをご確認ください。
CONF-33886 - Getting issue details... STATUS
CONFSERVER-58020 - Getting issue details... STATUS
ソリューション
この手順ではデータベースからコンテンツを削除します。安全のため、変更を行う前に必ず Confluence データベースのバックアップを取得してください。
このクエリは、コンテンツの ID に一致するタスク ID に基づいて重複タスクを発見し、その後重複を削除します。
注意: これはすべての重複を削除するわけではありません。特にタスクがページから削除され、タスクの 1 つのコピーのみが残っている場合が該当します。完全な実装を現在準備中です。
delete from "AO_BAF3AA_AOINLINE_TASK" where "GLOBAL_ID" in (select t1."GLOBAL_ID" from "AO_BAF3AA_AOINLINE_TASK" t1, "AO_BAF3AA_AOINLINE_TASK" t2 where t1."ID" = t2."ID" and t1."CONTENT_ID" = t2."CONTENT_ID" and ((t1."UPDATE_DATE" is null and t2."UPDATE_DATE" is null and t1."GLOBAL_ID" < t2."GLOBAL_ID") or (t1."UPDATE_DATE" is null and t2."UPDATE_DATE" is not null) or (t1."UPDATE_DATE" is not null and t2."UPDATE_DATE" is not null and t1."UPDATE_DATE" < t2."UPDATE_DATE")));
delete from AO_BAF3AA_AOINLINE_TASK where GLOBAL_ID in (select t1.GLOBAL_ID from AO_BAF3AA_AOINLINE_TASK t1, AO_BAF3AA_AOINLINE_TASK t2 where t1.ID = t2.ID and t1.CONTENT_ID = t2.CONTENT_ID and ((t1.UPDATE_DATE is null and t2.UPDATE_DATE is null and t1.GLOBAL_ID < t2.GLOBAL_ID) or (t1.UPDATE_DATE is null and t2.UPDATE_DATE is not null) or (t1.UPDATE_DATE is not null and t2.UPDATE_DATE is not null and t1.UPDATE_DATE < t2.UPDATE_DATE)))
delete t1 from AO_BAF3AA_AOINLINE_TASK t1, AO_BAF3AA_AOINLINE_TASK t2 where t1.ID = t2.ID and t1.CONTENT_ID = t2.CONTENT_ID and ((t1.UPDATE_DATE is null and t2.UPDATE_DATE is null and t1.GLOBAL_ID < t2.GLOBAL_ID) or (t1.UPDATE_DATE is null and t2.UPDATE_DATE is not null) or (t1.UPDATE_DATE is not null and t2.UPDATE_DATE is not null and t1.UPDATE_DATE < t2.UPDATE_DATE));