Page MenuHomePhabricator

Fix a complicated object caching issue with the policy filter
ClosedPublic

Authored by epriestley on Nov 11 2016, 9:28 PM.
Tags
None
Referenced Files
F13188395: D16840.diff
Sat, May 11, 5:13 AM
Unknown Object (File)
Tue, May 7, 8:28 AM
Unknown Object (File)
Fri, May 3, 8:18 AM
Unknown Object (File)
Wed, May 1, 1:49 AM
Unknown Object (File)
Sat, Apr 27, 5:38 PM
Unknown Object (File)
Thu, Apr 25, 2:15 AM
Unknown Object (File)
Fri, Apr 19, 4:56 AM
Unknown Object (File)
Apr 8 2024, 6:36 PM
Subscribers
None

Details

Summary

Fixes T11853. To set this up:

  • Create "Project A".
  • Join "Project A".
  • Create a subproject, "Project A Subproject 1".
    • This causes Project A to become a parent project.
    • This moves you to be a member of "Project A Subproject 1" instead of "Project A" directly.
  • Create another subproject, "Project A Subproject 2".
    • Do not join this subproject.
  • Set the second subproject's policy to "Visible To: Members of Project A".
  • Try to edit the second subproject.

Before this change, this fails:

  • When querying projects, we sometime try to skip loading the viewer's membership in ancestor projects as a small optimization.
  • Via PhabricatorExtendedPolicyInterface, we may then return the parent project to the policy filter for extended checks.
  • The PolicyFilter has an optimization: if we're checking an object, and we already have that object, we can just use the object we already have. This is common and useful.
  • However, in this case it causes us to reuse an incomplete object (an object without proper membership information). We fail a policy check which we should pass.

Instead, don't skip loading the viewer's membership in ancestor projects.

Test Plan
  • Did all that stuff above.
  • Could edit the subproject.
  • Ran arc unit --everything.

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to Fix a complicated object caching issue with the policy filter.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.
This revision is now accepted and ready to land.Nov 11 2016, 9:38 PM
This revision was automatically updated to reflect the committed changes.