HomePhabricator

Don't compute MIME type of noninitial chunks from `diffusion.filecontentquery`

Description

Don't compute MIME type of noninitial chunks from diffusion.filecontentquery

Summary:
Ref T12857. This is generally fairly fuzzy for now, but here's something concrete: when we build a large file with diffusion.filecontentquery, we compute the MIME type of all chunks, not just the initial chunk.

Instead, pass a dummy MIME type to non-initial chunks so we don't try to compute them. This mirrors logic elsewhere, in file.uploadchunk. This should perhaps be centralized at some point, but it's a bit tricky since the file doesn't know that it's a chunk until later.

Also, clean up the TempFile immediately -- this shouldn't actually affect anything, but we don't need it to live any longer than this.

Test Plan:

  • Made hashFileContent() return null to skip the chunk cache.
  • Added phlog() to the MIME type computation.
  • Loaded a 12MB file in Diffusion.
  • Before patch: Saw 3x MIME type computations, one for each 4MB chunk.
  • After patch: Saw 1x MIME type computation, for initial chunk only.

Reviewers: chad, amckinley

Reviewed By: chad

Maniphest Tasks: T12857

Differential Revision: https://secure.phabricator.com/D18138