Skip to content

An excluded page's dangling data source still blocks exec, though its dangling actions no longer do #680

Description

@ako

Summary

864440db ("excluded page's dangling action references no longer block exec") lets an excluded page keep action references to documents the project doesn't have. The same allowance doesn't extend to data sources, so an excluded page whose data source names a missing document still can't be written back — by check or by the builder.

Verified on main at 2a723ec7, Mendix 11.13.0.

The check output states the rule, then contradicts it

FeedbackModule.ShareFeedback_Logo ships excluded — it's the Examples/WithCompanyLogo variant of the Feedback marketplace module, and the nanoflows it names are genuinely absent from the project.

$ mxcli -p App.mpr -c "DESCRIBE PAGE FeedbackModule.ShareFeedback_Logo" > sfl.mdl

$ mxcli check sfl.mdl -p App.mpr --references
  page 'FeedbackModule.ShareFeedback_Logo' is excluded, so its unresolved
  references do not block (Mendix does not validate excluded documents):
  - nanoflow not found: FeedbackModule.ACT_TriggerScreenshotMode
  - nanoflow not found: FeedbackModule.ACT_UploadImage
  - nanoflow not found: FeedbackModule.ACT_ClearImage
  - nanoflow not found: FeedbackModule.ACT_ClearForm
Reference errors:
  statement 1: page 'FeedbackModule.ShareFeedback_Logo' is excluded, but a
    data source or entity it names does not exist:
  - nanoflow not found: FeedbackModule.DS_FeedbackForm (data source)

✗ 1 reference error(s) found

Four actions tolerated with the reason spelled out — "Mendix does not validate excluded documents" — and then one data source blocks, on the same excluded page, two lines later. The four missing nanoflows and the one missing nanoflow are equally missing; only the slot they sit in differs.

It's the builder too, not only the checker

--no-check doesn't get past it:

$ mxcli exec sfl.mdl -p App.mpr --no-check
Error: failed to build page: failed to build widget: failed to build datasource:
       failed to resolve nanoflow: nanoflow not found: FeedbackModule.DS_FeedbackForm

So the writer insists on resolving a data source that the page, being excluded, will never run.

The build is the arbiter and it doesn't care

The pristine project — this page present and excluded, those nanoflows absent — is clean:

$ mx check App.mpr
The app contains: 0 errors.

mxbuild doesn't compile excluded documents, which is the whole point of the exclusion. check's own message says this.

Impact

Small but exact: it's the only one of 20 pages in my test project that won't round-trip on this build, and it's the last thing between DESCRIBE PAGE → exec over a whole project and a clean sweep. With #662, #663 and the 54A fixes in, replaying the other 19 pages leaves the project at mx check 0 errors.

Suggested fix

Apply 864440db's allowance to data sources and entities on an excluded document, in the builder as well as the reference checker — leave the reference as stored, or write a placeholder, rather than hard-resolving it.

Suggested guard: round-trip every page of a fixture project that contains an excluded page with a dangling data source. The action case is presumably already covered by 864440db's test; this is the same test with the reference moved to the other slot.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions