Project

Profile

Help

Issue #9243

Updated by dalley over 3 years ago

"touching" existing content and artifacts individually has led to a slowdown on re-syncs of between 30-50% depending on the size of the repo, due to performing (potentially) tens of thousands of extra queries.    Copy is also likely impacted severely however I did not test it. 

 Bulk touch functionality was added to pulpcore by [0], but we must take advantage of it to eliminate the slowdown. 

 See the following spots where touch() is called in a loop: 

 * https://github.com/pulp/pulpcore/blob/5def33f2a49977fd1d41d13615f17e44d8d9f38a/pulpcore/plugin/stages/content_stages.py#L54 

 * https://github.com/pulp/pulpcore/blob/5def33f2a49977fd1d41d13615f17e44d8d9f38a/pulpcore/plugin/stages/artifact_stages.py#L98 

 * https://github.com/pulp/pulpcore/blob/d5bc207b9e338dafd541d7d82e3d5138b73cf763/pulpcore/plugin/actions.py#L44 

 Additionally it would be good to eliminate the extra query here: https://github.com/pulp/pulpcore/blob/feede7bb08b1e3107766ce534433cb7867fe52bd/pulpcore/content/handler.py#L715 


 As this was a significant performance regression introduced by 3.14, we should consider backporting the fixes.    This will include [0] as well which will require a small portion of the refactor introduced here [1] 

 [0] https://pulp.plan.io/issues/9234 

 [1] https://github.com/pulp/pulpcore/pull/1528/files#diff-81f6a78175bb93934b6beff952646d3ca1ef3731f1ff14492d4ec77bfc3fdf82R195

Back