3
2
1

JIRA課題の添付ファイルを格納しているディレクトリ(data/attachments)について質問です。

 

質問1.

ディレクトリ(data/attachments)配下にはプロジェクトごとにサブディレクトリ(プロジェクトキー)が作成されるのですが、そのディレクトリはいつ作られるのでしょうか?

添付ファイルを格納しているディレクトリの構成例

data/attachments/<プロジェクトキー>/<課題キー>/添付ファイル

備考1.

プロジェクトで初めて課題にファイルが添付されたタイミングでサブディレクトリが作成されると予想していますが....(仕様に関してドキュメントを見つけられていないので確信がもてません)

 

質問2.

課題をプロジェクト間で移動した場合は添付ファイルは、そのプロジェクトのサブディレクトリへ移動される認識ですが正しいでしょうか?

備考2.

プロジェクト内のチケット移動の場合であれば、attachmentsは移動され、thumbnailは移動されないらしいと下記の課題に記載されています。https://jira.atlassian.com/browse/JRA-21374

 

質問3.

もし移動先のプロジェクトのサブディレクトリがなかった場合はどうなるのでしょうか?質問1.で場合によってはこの状況になるのかと。。。

備考3.

移動先のプロジェクトは作成済みであるものの、サブディレクトリは存在していない状態が実際に発生しています。

で、この状態で課題を移動しても成功して添付ファイルもJIRA上では正しく移動できているようです。

ただ、移動先のプロジェクトのサブディレクトリは作成されませんでした。

 

すみませんが、教えてください。

    Commentコメントを追加...

    1 回答

    1.  
      3
      2
      1

      質問1.

      ディレクトリ(data/attachments)配下にはプロジェクトごとにサブディレクトリ(プロジェクトキー)が作成されるのですが、そのディレクトリはいつ作られるのでしょうか?

      添付ファイルを格納しているディレクトリの構成例

      data/attachments/<プロジェクトキー>/<課題キー>/添付ファイル

      回答1.

      プロジェクトで初めて課題にファイルが添付されたタイミングでサブディレクトリが作成されると予想していますが....(仕様に関してドキュメントを見つけられていないので確信がもてません)

      正解かと思います。Atlassianのソースコードを無断に掲載すると怒られるので、下記パスあたりに実装があります。

      https://developer.atlassian.com/static/javadoc/jira/reference/com/atlassian/jira/issue/attachment/FileSystemAttachmentDirectoryAccessor.html#getAttachmentDirectory(com.atlassian.jira.issue.Issue, boolean)

      jira-project/jira-components/jira-core/src/main/java/com/atlassian/jira/issue/attachment/FileSystemAttachmentDirectoryAccessor.java

      質問2.

      課題をプロジェクト間で移動した場合は添付ファイルは、そのプロジェクトのサブディレクトリへ移動される認識ですが正しいでしょうか?

      回答2.

      はい、少なくとも自分の環境(JIRA 6.4.10)ではその挙動をしました。

      以下コマンドでディレクトリの状態を常時監視しながら、課題を移動してみましたが、その結果になりました。

      # watch -d -n 1 tree /var/atlassian/application-data/jira/data/attachments/
      
      

      プロジェクト内のチケット移動の場合であれば、attachmentsは移動され、thumbnailは移動されないらしいと下記の課題に記載されています。https://jira.atlassian.com/browse/JRA-21374

      ちゃんと読んでないですが、移動時にthumbnailを削除する実装はあるようですね。移動はされないようです。

      jira-project/jira-components/jira-core/src/main/java/com/atlassian/jira/issue/managers/DefaultAttachmentManager.java

      質問3.

      もし移動先のプロジェクトのサブディレクトリがなかった場合はどうなるのでしょうか?質問1.で場合によってはこの状況になるのかと。。。

      回答3.

      以下コマンドでディレクトリに状態を常時監視しながら、プロジェクト間での課題を移動してみましたが、移動先のプロジェクトのサブディレクトリも作成される結果になりました。(Version 6.4.10)

      # watch -d -n 1 tree /var/atlassian/application-data/jira/data/attachments/

      実装的にも回答1のメソッドを使っているので、ディレクトリは作成されるかと思います。

      jira-project/jira-components/jira-core/src/main/java/com/atlassian/jira/issue/attachment/store/DefaultFileSystemAttachmentStore.java

      ご参考になりましたら幸いです。

      1. kumai

        ということは、”移動先のプロジェクトは作成済みであるものの、サブディレクトリは存在していない状態が実際に発生しています。”という現象がおかしいですね。。。 JIRAのバージョンv6.3.4の問題だったり、何かイリーガルなことが発生しているのかな。。。

      2. Kengo Ohsaki

        サブディレクトリにファイルがなくても正しくアクセス・ダウンロード出来るんですよね... なんと奇妙な感じですね..

      3. Kengo Ohsaki

        fileattachment テーブルの見るから別なんですかね...

      4. Kengo Ohsaki

        神の声でプロジェクトキーを変更した場合、一番最初に作成したプロジェクトキーのディレクトリのまま変わらないという現象を聞きました。 実装のメソッドでも project.getOriginalKey() を参照しているためですね...

      5. Kengo Ohsaki

        https://confluence.atlassian.com/jira/editing-a-project-key-389284652.html All attachments will be accessible after the project key change. Please note however, that the directory that they are stored in (under the <JIRA Home>\data\attachments directory) will be retain the old project key. For example, if you change a project's key from TEST to DEMO, the attachments will be stored under <JIRA Home>\data\attachments\TEST. 添付ファイルのディレクトリについてもプロジェクトを最初に作成した際のキーが維持されると記載されてましたね。。。

      Commentコメントを追加...