Skip to content

Using import_types introduces transitive compile dependencies on resolvers #1359

Open
@jesenko

Description

@jesenko

Scenario: split large schema module to multiple smaller submodules, use import_types and import_fields to combine them.

This introduces compile-time dependency of combined schema module on all submodules from which we import fields and types. Submodules however have runtime dependencies on various resolvers (which themselves have runtime dependencies all over the place). All there runtime dependencies become transitive compile-time dependencies of schema module, resulting in recompilation of large number of files on each change in any transitive compile-time dependency.

This blogs sums it quite nicely and I guess is still relevant with current version of absinthe: https://devonestes.com/trying-to-speed-up-compilation-with-absinthe

Not sure what could be done at absinthe level with respect to this issue... I guess we could obscure resolver calls so that compiler does not detect them as runtime dependencies, but not sure if that would introduce other issues. At least, there should probably be an "official" way on how to avoid described recompilation issue?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions