Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core: Don't try to register separate checkable resources for each module instance #31860

Merged
merged 3 commits into from Sep 26, 2022

Commits on Sep 23, 2022

  1. core: DynamicExpand can return diagnostics

    We were previously _trying_ to handle diagnostics here but were not quite
    doing it right because we were testing whether the resulting error was
    nil rather than appending it to the diagnostics and then seeing if the
    result has errors.
    
    The difference here is important because it allows DynamicExpand to return
    warnings without associated errors when needed. Previously the graph
    walker would treat a warnings-only result as if it were an error.
    
    Ideally we'd change DynamicExpand to return diagnostics directly, but we
    previously decided against that because there were so many implementors
    to update, and my intent for this change is to be surgical in the update
    so we minimize risk of backporting the change into patch releases.
    apparentlymart committed Sep 23, 2022
    Copy the full SHA
    b9379e6 View commit details
    Browse the repository at this point in the history
  2. core: Eliminate NodePlannableResource indirection

    We previously did two levels of DynamicExpand to go from ConfigResource to
    AbsResource and then from AbsResource to AbsResourceInstance.
    
    We'll now do the full expansion from ConfigResource to AbsResourceInstance
    in a single DynamicExpand step inside nodeExpandPlannableResource.
    
    The new approach is essentially functionally equivalent to the old except
    that it fixes a bug in the previous implementation: we will now call
    checkState.ReportCheckableObjects only once for the entire set of
    instances for a particular resource, which is what the checkable objects
    infrastructure expects so that it can always mention all of the checkable
    objects in the check report even if we bail out partway through due to
    a downstream error.
    
    This is essentially the same code but now turned into additional methods
    on nodeExpandPlannableResource instead of having the extra graph node
    type. This has the further advantage of this now being straight-through
    code with standard control flow, instead of the unusual inversion of
    control we were doing before bouncing in and out of different Execute and
    DynamicExpand implementations to get this done.
    apparentlymart committed Sep 23, 2022
    Copy the full SHA
    5036853 View commit details
    Browse the repository at this point in the history

Commits on Sep 26, 2022

  1. core: Document that TransformRoot must produce coalescable node

    We use a non-pointer value for this particular node, which means that
    there can never be two root nodes in the same graph: the graph
    implementation will just coalesce them together when a second one is added.
    
    Our resource expansion code is relying on that coalescing so that it can
    subsume together multiple graphs for different modules instances into a
    single mega-graph with all instances across all module instances, with
    any root nodes coalescing together to produce a single root.
    
    This also updates one of the context tests that exercises resource
    expansion so that it will generate multiple resource instance nodes per
    module and thus potentially have multiple roots to coalesce together.
    However, we aren't currently explicitly validating the return values from
    DynamicExpand and so this test doesn't actually fail if the coalescing
    doesn't happen. We may choose to validate the DynamicExpand result in a
    later commit in order to make it more obvious if future modifications fail
    to uphold this invariant.
    apparentlymart committed Sep 26, 2022
    Copy the full SHA
    0fc51ab View commit details
    Browse the repository at this point in the history