[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: SERVER-79281 fail packager when has_package is set to false
Branch: master
https://github.com/mongodb/mongo/commit/e2810f907afd98deb37f6d20fe90704c11ef2366

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?

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