Skip to content

describe microflow times out (300s) on high-complexity flows in mdl/json; mermaid renders instantly (repro on v0.13.0) #710

Description

@Chendodelangen

mxcli version: reproduced on v0.13.0 (2026-06-20T10:38:49Z) — latest and v0.11.0 (2026-05-21T18:04:46Z). The v0.13.0 default modelsdk codec engine does not fix it.
Mendix version: 10.x (project AssetManagement)
Severity: Medium — blocks documentation/extraction of complex microflows; silent (looks like a hang)
Diagnostic bundle: mxcli-diag-20260629-104537.tar.gz (fresh, on v0.13.0; available on request)
Related (closed) issues: #281 (DESCRIBE MICROFLOW completeness) and #651 (REFRESH CATALOG SOURCE 5m timeout, O(N²)) — this is a distinct path (the mdl/json serializer of a single describe microflow), still open.


Summary

describe microflow on a high-complexity microflow (McCabe 44, 98 activities) times out after exactly 300s when rendering to mdl (default) or json. The mermaid format renders the same microflow — including all conditions and validation-feedback metadata — in ~1.4s. This indicates the graph extraction is fast; the bottleneck is in the MDL/JSON serialization (likely path/branch enumeration that scales pathologically with cyclomatic complexity).

Steps to Reproduce

Target: AssetManagement.Asset_Validate (Boolean, 98 activities, McCabe 44).

# All three time out after 300s:
mxcli describe -p AssetManagement.mpr microflow AssetManagement.Asset_Validate                 # mdl (default)
mxcli describe -p AssetManagement.mpr --format json microflow AssetManagement.Asset_Validate   # json
mxcli -p AssetManagement.mpr -c "DESCRIBE MICROFLOW AssetManagement.Asset_Validate"            # sql path → "statement timed out after 5m0s"

# This returns in ~1.4s with the full flow graph + @nodeinfo (conditions, messages, targets):
mxcli describe -p AssetManagement.mpr --format mermaid microflow AssetManagement.Asset_Validate

Expected vs Actual

  • Expected: mdl/json render in time comparable to mermaid (seconds).
  • Actual: mdl/json/-c hang to the 300s timeout and return nothing (exit 1, Error: statement timed out after 5m0s); mermaid succeeds instantly.

Re-test on v0.13.0 (latest), 2026-06-29

command v0.11.0 v0.13.0
describe microflow … Asset_Validate (mdl, default) timeout 5m timeout 5m0s, exit 1
describe microflow … --format mermaid ~1.4s 0.34s, 332 lines

v0.13.0 now suggests raising the limit via MXCLI_EXEC_TIMEOUT (e.g. MXCLI_EXEC_TIMEOUT=30m) in the error message — but since mermaid proves the extraction is sub-second, the serializer is the real bottleneck; raising the timeout treats the symptom, not the cause.

Hypothesis

Graph extraction is clearly fast (mermaid proves it). The MDL/JSON serializer likely enumerates execution paths/branches in a way that is exponential in cyclomatic complexity. McCabe 44 appears to cross the threshold where it no longer completes within 300s.

Impact

The analyze-for-docs / knowledge-extraction workflows default to DESCRIBE MICROFLOW (MDL). Every McCabe-heavy flow is silently skipped (timeout), leaving gaps in generated documentation and unit-test inputs.

Workaround

Use --format mermaid for complex flows; the @nodeinfo block at the bottom of the mermaid output contains each node's condition, validation-feedback target and message — enough to reconstruct the full logic.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions