[SERVER-79281] Remove the package task from most variants in mongodb-mongo-master Created: 25/Jul/23 Updated: 29/Oct/23 Resolved: 16/Aug/23 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 7.1.0-rc0 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Trevor Guidry | Assignee: | Zack Winter |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Assigned Teams: |
Server Development Platform
|
| Backwards Compatibility: | Fully Compatible |
| Participants: |
| Description |
|
The vast majority of the variants in mongodb-mongo-master have "has_packages" set to false. This causes the task to be skipped over instead of running packaging as can be seen in this script: https://github.com/10gen/mongo/blob/master/evergreen/packager.py_run.sh#L10C18-L10C18 These variants are still spinning up ec2 instances to run this task which will eventually not do anything except run a scons compile and upload some files to s3. These variants also have a "compile_all" task so we should not be losing any coverage on scons targets.
If we change these variants to use compile task groups that do not have the packaging task we will lose no coverage and will save ~10k/yr. |
| Comments |
| Comment by Githook User [ 16/Aug/23 ] |
|
Author: {'name': 'Zack Winter', 'email': 'zack.winter@mongodb.com', 'username': 'zackwintermdb'}Message: |
| Comment by Trevor Guidry [ 10/Aug/23 ] |
|
zack.winter@mongodb.com That is reasonable. The cost for running package and all of its prerequisite tasks is probably less than one required patch build.
I have a hunch that >90% of the variants in the mongodb-mongo-master project are going to have `has_packages: false`. We do almost all of our packaging testing in the `mongodb-mongo-master-nightly` project. Both of these projects are based off the mongo master branch .
The mongodb-mongo-master project is the default that runs when you use `evergreen patch` which uses `etc/evergreen.yml` as the config The mongodb-mongo-master-nightly project is a separate one that you would have to specify manually with -project when you submit a patch and it uses `etc/evergreen_nightly.yml` as its config.
Make sure to run your testing on both of these. It is very easy to forget about the mongodb-mongo-master-nightly project. I doubt any of the variants there will require this change, maybe 1 or 2 of them will.
Feel free to ask questions if you need more clarification on any of this. |
| Comment by Zack Winter [ 09/Aug/23 ] |
|
Thanks trevor.guidry@mongodb.com If I wanted to get a current list of the variants with package tasks running with `has_packages: false`, would it be unreasonable to create a test branch and change the behavior of the packager to fail in that scenario, then make a PB that runs all of the variants with all of their tasks? If that's too expensive I can find another way. |
| Comment by Trevor Guidry [ 09/Aug/23 ] |
|
zack.winter@mongodb.com yup, that is 100% correct. I don't know of a command better than `evergreen evaluate` to expand the task list so it probably does not exist. It might be worth getting rid of the ability to skip the packager script with has_packages: false and to make the task fail instead whenever has_packages is set to false. This would prevent this test from quietly passing again in the future. It might create some failures in the near term though. Maybe steve.gross@mongodb.com or alex.neben@mongodb.com have an opinion on this. |
| Comment by Zack Winter [ 09/Aug/23 ] |
|
Hey trevor.guidry@mongodb.com if I understand this right, what's happening is that there are variants that are marked with `has_packages: false`, but still have a `package` task in the variant's evaluated list of tasks (coming from their task groups). Because the `package` task still is running, it then spins up an ec2 instance which then effectively does nothing. We want to now switch these variants to use task groups that do not contain the `package` task, which will probably involve creating new task groups that are a duplicate of the current ones, just without the `package` task. For example, if a `has_packages: false` task that includes the task group `compile_test_and_package_serial_TG`, we would want to create a duplicate task group like `compile_test_serial_TG` containing a list of the original tasks, but with the `package` task removed? https://github.com/10gen/mongo/blob/SERVER-79817/etc/evergreen_yml_components/definitions.yml#L8771 Is there an evergreen cli command to print out the expanded list of tasks for a given variant? I found `evergreen evaluate --variants etc/evergreen.yml` but it looks like it doesn't expand the task groups. |
| Comment by Steve Gross [ 08/Aug/23 ] |
|
trevor.guidry@mongodb.com Can you add implementation details to help Zack get started? |