Skip to content

Chart never sets EXECUTION_ENGINE for ui_react, so a deployed React UI submits runs to the wrong engine #150

Closed

Description

@mosoriob

Question

The MINT chart tells the Lit UI which execution engine the deployment runs. It does not tell
ui_react. So a chart-deployed React UI falls back to localex no matter what the Ensemble
Manager actually runs, and run submission goes to a route that does not exist.

Measured live on the dev cluster

Flipped mint.local to ui_react (chart 9.0.0-beta.5, image 04c5b679), then read both
config maps:

config map execution engine
mint-ui-config-map (Lit) REACT_APP_EXECUTION_ENGINE = "tapis"
mint-ui-react-config-map key absent

The served env-config.js confirms the fallback:

"EXECUTION_ENGINE": "localex"

This cluster's Ensemble Manager runs tapis
(components.ensemble_manager.config.execution_engine.type).

Root cause

templates/ui-config.yaml:52 emits REACT_APP_EXECUTION_ENGINE from
components.ensemble_manager.config.execution_engine.type. templates/ui-react-config.yaml
emits no equivalent, and components.ui_react.config has no key for it — so a deployment
cannot set it, not even by overriding values. The image then defaults it:

EXECUTION_ENGINE: pick(env, ...) ?? 'localex'
-- ui-react/scripts/generate-env-config.mjs:68

executionEnginePath in src/lib/ensemble-manager.ts picks the submission route from that
value, so the run POST goes to /executionEngines/localex.

Why this blocks #77

By the rule #99 and #104 set — a defect blocks the flip only if moving off Lit is a
regression. Here it is exactly that. Lit is told tapis and can submit; a chart-deployed
ui_react is told nothing, defaults to localex, and cannot. TACC runs tapis.

This is #88 returning through
configuration rather than through code. #88 fixed the client to honour the value; nothing
supplies the value.

Why no earlier ticket caught it

#92 ran a real job at TACC end to end —
but from localhost, where public/env-config.js hardcodes EXECUTION_ENGINE: "tapis".
Every authenticated walkthrough so far has used a hand-written config. The chart-rendered
config has never been exercised for run submission.

The fix

Add a key under components.ui_react.config and emit EXECUTION_ENGINE in
ui-react-config.yaml, defaulting to the same
components.ensemble_manager.config.execution_engine.type that Lit already reads, so the two
UIs cannot disagree about the deployment they are in.

Also worth knowing

DATA_CATALOG_API is not emitted either, but its image default is
https://ckan.tacc.utexas.edu, which happens to be right. It is right by luck, not by
derivation — the same class of gap.

Activity

  1. added
    wayfinder:taskWayfinder ticket: manual work that unblocks a decision
    on Aug 30, 2026
  2. self-assigned this
    on Aug 30, 2026
  3. mosoriob commented on Aug 30, 2026

    @mosoriob
    ContributorAuthor

    Fixed, and verified as a browser sees it — both UIs now say tapis. The chart derives
    EXECUTION_ENGINE from components.ensemble_manager.config.execution_engine.type, the same value
    ui-config.yaml gives the legacy UI, so the two UIs cannot disagree about the deployment they are
    in. components.ui_react.config.execution_engine overrides it. Chart in
    mintproject/mint#108, version 9.0.0-beta.6.
    No client change: ui-react already honours the value (#88).

    The measurement was re-checked before the fix and held. mint-ui-config-map carried
    REACT_APP_EXECUTION_ENGINE = "tapis"; mint-ui-react-config-map carried no such key.

    Verified live, not by template. That distinction is the point of this ticket, so the check was
    run the way the ticket says it must be: helm upgrade on the dev cluster with its own values, then
    the served file over the ingress —

    $ curl http://mint.local/env-config.js
    "EXECUTION_ENGINE": "tapis",
    $ curl http://legacy.mint.local/config.js
    window.REACT_APP_EXECUTION_ENGINE = "tapis";
    

    Six controls on the rendered template: chart defaults give localex; an explicit
    execution_engine overrides the Ensemble Manager; an explicit data_catalog_api beats external
    CKAN; with CKAN disabled and data_catalog enabled the component ingress is used; a missing
    Ensemble Manager config omits the key rather than failing the render; an empty client_id still
    fails.

    The "also worth knowing" was real, and it is fixed in the same PR. DATA_CATALOG_API was
    derived from components.data_catalog only — which a deployment using external_services.ckan
    does not enable — so the key was omitted and the app fell back to a compiled-in default. It now
    reads external_services.ckan.url, as ui-config.yaml does. The dev cluster's map went from no
    key to https://ckan.tacc.utexas.edu, derived rather than lucky. That was one of the three chart
    cleanups #75 landed on #77; the other two landed with it — MODEL_CATALOG_API is no longer
    emitted and its override key is gone, and the client_id text no longer claims the React UI needs
    a client distinct from the legacy UI's. #77 has no chart cleanups left.

    Two things outlive this ticket.

    1. helm upgrade does not restart pods when only a config map changes #123 does not bite ui_react. Its deployment carries a checksum/config pod-template
      annotation, so a config-map-only change does roll the pod — the upgrade above rolled it, and
      that is how the new file reached the browser. mint-ui and mint-ensemble-manager carry no such
      annotation. Landed on #123.
    2. 9.0.0-beta.6 is not installable from the chart repo. beta.4 and beta.5 were version
      bumps in Chart.yaml that were never packaged, so releases/ and index.yaml still stop at
      9.0.0-beta.3. The dev cluster runs the chart from a local path. Flip mint.tacc.utexas.edu to ui-react #77 must either package a
      release or deploy from a checkout — landed there.

    The dev cluster is on the branch chart, release mint revision 68. Rollback is
    helm rollback mint 67.

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

Metadata

Metadata

Assignees

Labels

wayfinder:taskWayfinder ticket: manual work that unblocks a decision

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions