プロジェクト

全般

プロフィール

QA #725

未完了

親子チケットの階層崩れを修正したい

清水 朋子 さんが6年以上前に追加. 約6年前に更新.

ステータス:
回答済
優先度:
通常
担当者:
カテゴリ:
-
対象バージョン:
開始日:
2017/11/04
期日:
進捗率:

0%

予定工数:

説明

■現象/要望

親子階層が複雑なチケットを更新すると、チケットの親子階層表示が異常になる場合がある。
(親チケット以外の子チケットとして表示される。)

現象発生時、issueテーブル上のlft,rgt項目が異常になっていた。
parent_idの値は、編集前の正しい親チケットIDが設定されていた。

修復手順を確認したい。

■解決策

Rails Console上から、チケット階層構造を修正する下記メソッドを実行することで修復できる。
但し、データ修復対応であり、現象発生を防止するものではない。

下記、rebuild_treeでチケット全部の階層構造を修復するが、件数が多い場合は時間が掛かる。
rebuild_single_treeで親チケットを指定すれば、短時間で修復可能。(Redmine3.4以降)

[root redmine]# pwd
/var/lib/redmine
[root redmine]# bundle exec rails console production

Loading production environment (Rails 4.2.8)
irb(main):001:0>
irb(main):002:0* Issue.rebuild_tree!
=> []
irb(main):004:0> Issue.rebuild_single_tree(1)!

ワンライナーの対応(Redmineのルートから実行とする)

 RAILS_ENV=production rails runner 'Issue.rebuild_single_tree!(1)'

 RAILS_ENV=production bundle exec ruby bin/rails runner 'Issue.rebuild_single_tree!(1)'

■対応状況

Rails Console上から、チケット階層構造を修正する下記メソッドを実行することで修復できる。
但し、データ修復対応であり、現象発生を防止するものではない。

■補足

関連情報

ProjectもIssueと同様に階層構造を持つため、同様な修復作業が必要になる場合がある。
Project.rebuild_tree! の様に実行する。

詳細不明だが、Redmine3.3以降で発生頻度が増加したかもしれない。(Redmine本体以外が関連する可能性含)

Rebuild a single nested set with nested_set plugin
http://www.redmine.org/issues/24167

issue parents is wrong
http://www.redmine.org/issues/27066

直近2年間のnested_set.rb変更内容
http://www.redmine.org/projects/redmine/repository/show/trunk/lib/redmine/nested_set

清水 朋子 さんが6年以上前に更新

清水 朋子 さんが6年以上前に更新

  • 題名チケットの階層崩れを修正したい から 親子チケットの階層崩れを修正したい に変更

奈良 裕記 さんが6年以上前に更新

手元の環境(CentOS7/3.4.3/闇鍋)では、下記で実行できました。

[root redmine]# pwd
/var/lib/redmine
[root redmine]# bundle exec rails console production

Loading production environment (Rails 4.2.8)
irb(main):001:0>
irb(main):002:0* Issue.rebuild_tree!
=> []
irb(main):004:0> Issue.rebuild_single_tree(1)!

ワンライナーでも可能な筈ですが、手元の環境ではエラーになったので、取り急ぎ上記紹介します。

[root redmine]# ruby bin/rails runner 'Issue.rebuild_tree!' RAILS_ENV=production
/var/lib/redmine/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/connection_specification.rb:248:in `resolve_symbol_connection': 'development' database is not configured. Available: ["production"] (ActiveRecord::AdapterNotSpecified)
以下略

[root redmine]# grep -r rebuild_tree lib/*
lib/redmine/nested_set/issue_nested_set.rb: def rebuild_tree!
lib/redmine/nested_set/project_nested_set.rb: def rebuild_tree!

奈良 裕記 さんが6年以上前に更新

下記理解で合ってますか?

>チケットの親子階層表示がおかしくなる。
→チケットの親子階層表示がおかしくなる場合がある。

>issueテーブルのlft,rgtという項目の値がおかしくなる事象は修正されてないので、データを修正する事が解決策になる。

↑発生条件不明(同一原因の再発可能性有)なら、データ修復の暫定対応だと思いますが。

清水 朋子 さんが6年以上前に更新

奈良 裕記 さんは書きました:

下記理解で合ってますか?
チケットの親子階層表示がおかしくなる場合がある。
発生条件不明(同一原因の再発可能性有)なら、データ修復の暫定対応だと思いますが。

コマンドの操作方法を調べていただき、ありがとうございます!
上記のご理解で合ってます。
この事象はRedmineで親子チケットの関係を更新すると、時々発生します。
回避策はなく、事象が起きたらデータ修正以外に対策がありません。

こちらの環境では、バックログプラグインによる拡張機能として、マウスのドラッグ&ドロップでチケットの親子関係を更新してるため、発生頻度が上がっているのかもしれません。

教えていただいたコマンド操作でチケット単位でデータ修正できれば、他のユーザには影響無くRedmineを止めずにメンテナンスできるので、助かります!

奈良 裕記 さんが6年以上前に更新

  • 説明 を更新 (差分)
  • カテゴリ を削除 (UI)
  • 対象バージョン設定変更対応 にセット

状況整理しました。

奈良 裕記 さんが6年以上前に更新

  • 説明 を更新 (差分)
  • ステータス新規 から 回答済 に変更
  • 担当者奈良 裕記 にセット

奈良 裕記 さんが約6年前に更新

他の形式にエクスポート: Atom PDF