Page MenuHomePhabricator

Improve task subpriority movement algorithm for homogenous blocks

Authored by epriestley on Mar 26 2015, 11:42 AM.



Fixes T7664. When there are a large number of tasks (400+) with the same subpriority (which can happen if the subpriority features are rarely used), it may take more than 30 seconds to rebalance them.

Make the algorithm more aggressive about rebalancing homogenous blocks of tasks.

This may need to get even fancier, but I'd guess it can process blocks 1-2 orders of magnitude larger, which should be ~all installs.

(If someone still hits issues with this, I'll make it fancier.)

Once a block is rebalanced, it doesn't need to be rebalanced again (at least, not as a whole block) so we basically just need to get over the initial hurdle here and then we're good.

In the worst case, we can provide bin/maniphest rebalance or similar and do the rebalance step offline.

And, in any case, we have more test coverage here now.

Test Plan
  • Existing tests.
  • New tests.

Diff Detail

rP Phabricator
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

epriestley retitled this revision from to Improve task subpriority movement algorithm for homogenous blocks.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: btrahan.
epriestley added inline comments.Mar 26 2015, 11:44 AM

This improves performance of unit tests which need to build fixtures by skipping the database verification step, which should not be necessary in general.

btrahan accepted this revision.Mar 26 2015, 6:06 PM
btrahan edited edge metadata.
This revision is now accepted and ready to land.Mar 26 2015, 6:06 PM
This revision was automatically updated to reflect the committed changes.