Page MenuHomePhabricator

When updating revisions in response to commits, reuse previously generated diffs
ClosedPublic

Authored by epriestley on Jan 9 2017, 7:45 PM.
Tags
None
Referenced Files
F13205511: D17164.diff
Wed, May 15, 2:01 AM
F13193677: D17164.id41276.diff
Sun, May 12, 4:47 PM
F13189254: D17164.diff
Sat, May 11, 5:49 AM
F13183676: D17164.id41276.diff
Fri, May 10, 10:58 AM
F13174835: D17164.diff
Wed, May 8, 1:28 AM
Unknown Object (File)
Tue, May 7, 2:06 PM
Unknown Object (File)
Tue, May 7, 9:34 AM
Unknown Object (File)
Tue, May 7, 6:18 AM
Subscribers
None

Details

Summary

Fixes T10968. In rare situations, we can generate a diff, then hit an error which causes this update to fail.

When it does, we tend to get stuck in a loop creating diffs, which can fill the database up with garbage. We saw this once in the Phacility cluster, and one instance hit it, too.

Instead: when we create a diff, keep track of which commit we generated it from. The next time through, reuse it if we already built it.

Test Plan
  • Used bin/differential attach-commit <commit> <revision> to hit this code.
  • Simulated a filesystem write failure, saw the diff get reused.
  • Also did a normal update, which worked properly.

Diff Detail

Repository
rP Phabricator
Branch
diff1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 15163
Build 19919: Run Core Tests
Build 19918: arc lint + arc unit