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
Unknown Object (File)
Tue, Mar 5, 11:50 AM
Unknown Object (File)
Feb 14 2024, 2:54 AM
Unknown Object (File)
Feb 14 2024, 2:54 AM
Unknown Object (File)
Feb 7 2024, 9:59 AM
Unknown Object (File)
Feb 6 2024, 7:13 PM
Unknown Object (File)
Jan 25 2024, 6:45 PM
Unknown Object (File)
Dec 27 2023, 8:10 AM
Unknown Object (File)
Dec 21 2023, 2:30 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
Branch
pperm1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 14444
Build 18825: Run Core Tests
Build 18824: arc lint + arc unit

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.