プロジェクト

全般

プロフィール

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

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