[SERVER-65040] Reuse build artifacts across builders which differ only in server test execution parameters Created: 29/Mar/22  Updated: 29/Oct/23  Resolved: 27/Oct/22

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: 6.2.0-rc0

Type: Improvement Priority: Major - P3
Reporter: Andrew Morrow (Inactive) Assignee: Robert Guo (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-64731 Switch task generation to be done at ... Closed
depends on SERVER-65179 Support cross-build variant dependenc... Closed
Problem/Incident
causes SERVER-71954 Evergreen tasks do not always depend ... Closed
causes SERVER-70891 restore scons cache splunk logging Closed
causes SERVER-71358 ! Windows Compile variant not running... Closed
causes SERVER-71935 Periodic builds on nightly are causin... Closed
causes SERVER-72156 burn_in is not depending on the corre... Closed
causes SERVER-72356 llvm symbolizer broke with v4 Closed
causes SERVER-72415 Revert enterprise-rhel-80-64-bit-futu... Closed
causes SERVER-72600 Add missing compile_variant expansion... Closed
causes SERVER-71002 Remove "required" suffix from builder... Closed
Related
related to SERVER-72611 resmoke fails to download debug symbo... Closed
related to SERVER-70710 Reimplement compile bypass Closed
related to SERVER-67154 Add more tasks to main compile step Closed
is related to SERVER-70857 Query Patch Only changes after "Compi... Closed
is related to SERVER-71022 Many variants are not running on cron Closed
is related to SERVER-71070 ~ Linux DEBUG WiredTiger develop fail... Closed
is related to SERVER-71073 RHEL build variant depends on windows... Closed
is related to SERVER-71113 Tasks generated do not have access to... Closed
Backwards Compatibility: Fully Compatible
Sprint: Dev Platform 2022-05-30, Dev Platform 2022-06-13, Dev Platform 2022-06-27, Dev Platform 2022-07-11, Dev Platform 2022-07-25
Participants:
Linked BF Score: 60

 Description   

We have lots of builders which differ only in the parameters under which the tests execute. For instance ubuntu1804-sbe-yielding-debug and ubuntu1804-debug-suggested. Currently, those builders each declare the full complement of build and test stages: compile_dist_test, run_unittests. However, the results of compile_dist_test are identical across those two builders, and the unit tests aren't parameterized. We could arrange things so that these builders (and builders in similar relationships) simply re-use the compilation artifacts from the "canonical" builder. Eliminating this duplicated work would reduce artifact cache pressure, eliminate duplicate BFs when things are broken, avoid spending time executing unit tests which should give identical results, etc.



 Comments   
Comment by Githook User [ 24/Oct/22 ]

Author:

{'name': 'Rob Guo', 'email': 'robert.guo@mongodb.com'}

Message: SERVER-65040 Consolidate compile tasks for required variants
Branch: master
https://github.com/mongodb/mongo/commit/7ec72a366c71c9d36fd1d6c283390d2dc93b20ce

Comment by Robert Guo (Inactive) [ 08/Apr/22 ]

Yep. Thanks for the reminder Max! I believe we could do something similar to SERVER-65179 for burn_in_tags (if not already done), which should mean we do not have to explicitly specify compile in burn_in_* tasks anymore here.

Comment by Max Hirschhorn [ 07/Apr/22 ]

Does this include having burn_in_tags_gen not generate a compile_dist_test task to build the server for the build variants it generates?

For some historical context: When SERVER-41762 was originally implemented, it was based on top of the "bypass compile" functionality to define the binaries tarball to download. The bypass compile functionality was removed in SERVER-50078. In the meantime we had at least made the generated compile_dist_test task run on the -large distros in SERVER-51793 and SERVER-60513.

Comment by Iryna Zhuravlova [ 04/Apr/22 ]

This work should be done after SERVER-64731 is done

Comment by Richard Samuels (Inactive) [ 29/Mar/22 ]

We'd need to audit the buildvariants and find those with identical flags (this could be done with a python script).

Using the above example, tasks currently dependent on archive_dist_test will instead need a slightly different depends_on:

 depends_on:
- name: archive_dist_test
  variant: ubuntu1804-debug-suggested

(same for archive_dist_test_debug)

Then we'd have to make the portion of the yaml that downloads the binaries/debug symbols aware of that change. That might be as simple as writing some python that generates a yaml file with values for the expansions set in &set_task_expansion_macros (currently set in etc/evergreen_yml_definitions/definitions.yml)

Then we'd need to also update the symbolizer and hang analyzer to be aware of the new locations for download debug symbols. I suspect this could be achieved in one change with an update to db-contrib-tool.

A further audit of uses of the ${build_variant} expansion would be required to make sure we don't miss anything else.

I suspect we'll encounter a complication due to SERVER-64802. The mongodb-mongo-master and mongodb-mongo-master-nightly project both rely on the same definitions. This may require some finagling to ensure that mongodb-mongo-master project's can share assets without affecting the -nightly or mongo-release projects

Generated at Thu Feb 08 06:01:44 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.