Synchrony データを削除する方法
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
このガイドは Confluence 7.0 以降に適用されます。Confluence 6.x バージョンについては「Synchrony テーブルのサイズを減らす方法」をご確認ください。
目的
共同編集が有効になっている場合、エディターで行われた変更の同期に Synchrony が使用されます。これにより、複数の人がお互いの変更をリアルタイムで確認できます。
各ページとブログ投稿には独自の Synchrony 変更履歴があり、そのページまたはブログ投稿に対するすべての編集のグラフが含まれます。ビジーな Confluence サイトでは、Synchrony の変更履歴を格納するデータベース テーブルが非常に急速に成長することがあります。変更履歴にはすべての変更が格納されるため、関連するページが削除された後でも、個人を特定できる情報が保持されることがあります。
ソリューション
Confluence 7.0 以降では、Synchrony データを削除するための 2 つのスケジュール ジョブを提供しています。
- Synchrony データのエビクション (ソフト)
- Synchrony データのエビクション (ハード)
ソフト エビクション ジョブは、バックグラウンドで定期的に実行されます。ハード エビクション ジョブは、Synchrony データをより積極的に削除する必要がある場合に使用でき、デフォルトでは無効になっています。両方のジョブが、関連するページまたはブログ投稿について、Synchrony の変更履歴全体を削除します。1 つのページまたはブログ投稿に関連する Synchrony データの一部のみを削除することはできません。
これらのジョブの内容の詳細を確認する前に、"変更の保存" の概念について確認しておくことをおすすめします。
- Synchrony はすべてのキーストロークを記録し、それを対象のページの Synchrony 変更履歴に保存します。
- Confluence は、ユーザーが [閉じる] ボタンを使用してエディタから離れたときと、ユーザーがエディタ内にいるときは 30 秒ごとに (この自動保存の間隔は変更可)、エディタの内容を下書きとして自動的に保存します。
- Confluence は、ユーザーがタブを閉じたり別のページにナビゲートしたりすることでエディタを離れたときに、エディタのコンテンツを下書きとして自動保存しようとします。ブラウザがクラッシュしたり、大きな遅延が発生したりしている場合、この保存は失敗します。データが失われることなく、誰かが次にページを編集しようとしたときに、Synchrony の変更履歴から変更が取得されます。
ソフト削除のジョブ
This job runs every 10 minutes, and pro-actively cleans up Synchrony change logs that are no longer needed. This helps keep the Synchrony database tables a manageable size. When it runs, the following messages are printed on the atlassian-confluence.log:
2022-01-16 18:12:25,962 INFO [Caesium-1-2] [synchrony.service.http.SynchronyRequestExecutor] execute Initiating Locking API request: SynchronyUnlockRequest
2022-01-16 18:12:25,895 INFO [Caesium-1-2] [synchrony.service.http.SynchronyRequestExecutor] execute Initiating Locking API request: SynchronyLockRequest
Synchrony の変更履歴は、次の条件を満たしたときにソフト エビクション ジョブでクリーンアップされます。
- ページ/ブログ投稿の Synchrony 変更履歴が過去 3 日間変更されていない
- ページ/ブログ投稿にアクティブなセッションがない (エディタでこのページを開いているユーザーがいない)
Confluence による変更の自動保存機能があり、ジョブはアクティブな編集セッションを持つページやブログ投稿を無視するため、このクリーンアップによるエンドユーザーへの影響は、基本的にありません。
ただし、共同編集セッションの最後のユーザーがエディタを離れ、変更が自動保存されなかった場合 (例: ブラウザのクラッシュ)、前回の自動保存からエディタからの退出までの間に行われた変更は、データのエビクション時に失われます。
ハード エビクション ジョブ
このジョブは既定で無効化されています。手動で実行することも、必要に応じて定期的な実行をスケジュールすることもできます。
このジョブは、15 日よりも古いすべてのページまたはブログ投稿の Synchrony データのエビクションを行います。たとえば、あるページの作成から 15 日が経過済みで、そのページが作成以降毎日編集されている場合も、ページに関連付けられたすべての Synchrony データがジョブによって削除されます。このページはソフト エビクション ジョブの各実行から 3 日以内に編集されているため、ソフト エビクション ジョブのクリーンアップ対象にはなりません。
ハード イベクション ジョブにより、データベース内で 15 日よりも古い Synchrony データを確実になくすことができます。これは、Synchrony から個人情報を削除する必要があったり、ソフト削除ジョブの実行内容よりもさらに積極的に Synchrony テーブルのデータ量を減らしたりしたい場合に、特に便利です。
エンドユーザーへの影響には次のものが考えられます。
- ジョブの実行時に、エディタ内にいるユーザーには、変更をコピーしてページを更新するように促すエラーが表示されます。エディタはページが更新されるまでの間、読み取り専用になります。これは、Confluence が Synchrony に接続できないときの挙動と似ています。
- エディタを離れ、変更が自動保存されなかった (例: ブラウザのクラッシュ) ユーザーは、前回の自動保存とジョブの実行時点との間の変更を失う可能性があります。
Synchrony テーブルの大きさや、前回の実行時からの間隔によっては、このジョブの実行に時間がかかり、パフォーマンスに明らかな影響が出る可能性があります。このジョブを定期的に実行するようにスケジュールしたい場合、初回実行時のパフォーマンスの問題を避けるために、まず Synchrony テーブルを手動で切り捨てることをおすすめします。これは、Confluence 7.x バージョンへのアップグレード後の最初の実行時は不要です。アップグレード タスクによってテーブルの切り捨てが行われるためです。
ジョブの挙動の変更
[スケジュール済みジョブ] 画面では、ジョブを手動で実行したり、ジョブを実行する時間や頻度を変更したりすることができます。詳細については「スケジュール済みジョブ」をご確認ください。
システム プロパティを使い、これらのスケジュール済みジョブのデフォルトの挙動を変更することもできます。ほとんどの場合はデフォルト値の利用が適切です。たとえば、次のことを行えます。
プロパティ | 説明 | Default value |
---|---|---|
synchrony.eviction.removal.content.batch.count.per.tx | The number of content records, which are removed in single transaction and within single locking/unlocking. Making this batch size bigger will make the throughput better, but on the other hand prolonged Synchrony lock holding can be more intrusive from end user perspective. Default value is a good enough tradeoff between the two. | 10 |
synchrony.eviction.content.lock.timeout.default.ms | Content lock timeout for eviction. Time period, during which Synchrony will refuse to serve certain content, which eviction jobs are about to clean up. | 300000 |
Synchrony Data Removal (Soft) | ||
synchrony.eviction.soft.job.threshold.hours | Number of hours content shouldn't be modified to be eligible for deletion. | 72 |
synchrony.eviction.content.soft.search.count.per.tx | Search batch size for soft removal eviction job Tweaking this value has the following trade-off: | 200 |
synchrony.eviction.soft.job.content.batch.count | Number of content entities to clean during one job invocation | 1000 |
Synchrony Data Removal (Hard) | ||
synchrony.eviction.content.hard.search.count.per.tx | Search batch size for hard removal eviction job. | 100000 |
synchrony.eviction.hard.job.threshold.hours | Minimum age of data in Synchrony change logs, which should be deleted | 360 |
See Configuring System Properties for details on how to apply to these properties.
Synchrony データの手動削除
Confluence 6.x を使用していたり、スケジュールされたジョブを使用した段階削除ではなくすべての Synchrony データを一度に削除する必要があったりする場合、Synchrony データベースのテーブルを切り捨てることができます。
詳細については「Synchrony テーブルのサイズを減らす方法」をご確認ください。ほかの操作と同様に、データベースへの直接変更を行う前にデータベースの完全なバックアップを取得することをおすすめします。