事象
チケット一覧画面からフィルタでチケットを抽出し、
「他の形式にエクスポート」からファイルをエクスポートしました。
その際、「選択された項目」では正常に出力されましたが、
「すべての項目」を出力した際にInternal errorが発生しました。
調査
- 「すべての項目」を選択してもエラーが発生しない場合もありました。
- オプションから、表示項目を大量に選択した場合、フィルタ適用時に同様のエラーが発生しました。
- エラーページのURLを見ると、パラメータ末尾が途中で切れていました。(末尾「cf_xxx」となるはずが「cf_」で終わっていた。)
原因
原因は、URLが最大桁数(2,083文字)に達したことでした。
Redmineの仕様として、チケット一覧のフィルタや
エクスポートの条件には、条件をURLパラメータで渡して処理をしている様です。
今回は、以下の理由でURLが長くなっていたようです。
- フィルタの条件を大量に指定したこと。(特にプルダウン項目の複数指定)
- カスタムフィールドが増えすぎていること(200列弱)
対策
- フィルタの条件を抑えてエクスポートし、GrepやExcelのフィルタ機能で処理する。
- 項目(列)を分割して出力し、後でマージする。
- カスタムフィールドを見直す。
エクスポート時、URLパラメータで条件を送る仕様な以上、
根本的な解決には、もうプラグインを作成するしかないような。。