-
Couldn't load subscription status.
- Fork 202
Open
Labels
DesignRequiredIssues that cannot progress due to incomplete designIssues that cannot progress due to incomplete design
Description
mitogen.master.ModuleFinder locates Python modules on the controller tthat can be sent to children in response to a GET_MODULE request. It also scans the found module M to identify "related modules" - a dependency tree of modules imported by M, directly or indirectly.
mitogen.master.ModuleResponder sends the found module and all related modules, proactively.
Current bugs and quirks
- False positives: sending related modules that are undesired, e.g. ModuleResponder sends ansible.cli package, and many others, probably unnecessarily #1124
- False negatives: missing related modules e.g. mitogen does not deploy class level imports #682
Ideas so far, not mutually exclusive
- Use
astto scan forimportstatements- Eliminates false negatives
- Potentially increases false positives, depending on how we define desired criteria (e.g.
import mitogen.masterinsidemitogen.main())
- Remove related functionality, rely on children sending GET_MODULE requests as needed
- Eliminates a chunk of fiddly code
- Reduces CPU and random disk IO on controller
- Increases number of round trips
- May increase Time To First Execution (TTFE, a term I just made up) on the child
- May increase maintenance burden wrt new Ansible releases, manually maintaining a preload list of required Ansible modules
- May make Mitogen less robust wrt to long tail of Python packages and Ansible collections
- Make related search/delivery configurable, e.g.
- Something similar to
# !mitogen: minify_safemarkers - Environment variable(s)
- Something similar to
Metadata
Metadata
Assignees
Labels
DesignRequiredIssues that cannot progress due to incomplete designIssues that cannot progress due to incomplete design