legacy-knowledge-base
公開されました Sep. 10, 2025

_lock と backgroundtask テーブルの古いデータをクリアする Groovy スクリプト

written-by

Thanga Meena

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • _lockとbackgroundtaskテーブルの古いデータをクリアするためのGroovyスクリプト

環境

  • Liferay DXP 7.2+

解決

  • ログでは、以下のような情報がスローされることがあり、タスクの実行を許可していないかもしれない、幾つかの古いデータが利用可能であることを示しています。 報告されたアクションに関連する古いデータがある場合、問題が解決しない場合は、最初にそれらを削除して、調査の次のステップに進む必要があります。
  • 例えば、再インデックス化が完了していない等。 その場合は、_lockテーブルとbackgroundtaskテーブルの両方を確認して、再インデックス化に関連した古いデータがないかどうかを確認してください。 削除したい場合は、以下の手順で削除し、以下の注意点を確認してから作業を進めてください。
  • 2020-03-30 23:41:31.795 INFO  [liferay/background_task-3][BackgroundTaskMessageListener:146] Unable to acquire lock, queuing background task 188137692
  • コントロールパネル --> サーバー管理者 --> スクリプトページ へ移動
    • Groovyスクリプトを選択して以下のスクリプトを貼り付け、実行をクリックします。
  • Lockテーブルエントリの場合: lockIdは、削除したい古いデータエントリのclassNameを持つそれぞれのIdに置き換える必要があります。
com.liferay.portal.lock.service.LockLocalServiceUtil.deleteLock(long lockId)
out.println(Deleted Lock Entry);
  • BackgroundTask テーブルエントリの場合: long backgroungTaskId は、削除する古いデータ エントリの className を持つそれぞれの BID 値に置き換える必要があります。
com.liferay.portal.background.task.service.BackgroundTaskLocalServiceUtil.deleteBackgroundTask(long backgroundTaskId)
out.println(Deleted BackgroundTask Entry);
  • 上記スクリプトを実行後、Liferayバンドル内の一時ディレクトリを削除し、サーバーを起動します。
  • 注意: 上記のアクション項目を実行する前にDBダンプを取ってください。 そして、報告された動作をテスト環境でテストし、問題なく動作していれば、あなたの判断で本番環境に移行してください。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base