Repository navigation
[FIX] Data input path loses a character when entered by fast automated input (Batch Run / Train Model) - #3797
Merged
Taras-Hlukhovetskyi merged 2 commits intoNov 11, 2026
Conversation
…d input (Batch Run / Train Model)
amit-noy
approved these changes
Nov 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Description
Fast automated input (Selenium
send_keys) into the data input path of the Batch Run / Train Model wizard lost one character: the 53rd keystroke. The job then failed withHTTP Error 404because it read a URL that doesn't exist. Typing or pasting by hand was not affected.Root cause: React 19 changed how it detects infinite update loops. After each commit it counts a "nested update" while any Sync or Default work is still pending; React 18 only counted Sync work.
TargetPathupdatedfieldInfo(the value sent with the run) from aFormOnChangeeffect, which scheduled another render on every keystroke.onChange, before the new value was stored, and restored the previous input value.Fix:
TargetPathnow applies typed input (and suggestion clicks) to the form directly in the change event: the path,fieldInfoand the saved MLRun store state. Scheme selection and changes made by the form itself still go throughFormOnChangeafter render, asbefore, and the effect skips when
fieldInfoalready matches. So validation and error messages are unchanged.🛠️ Changes Made
TargetPath.jsxchangePathFieldInfowrites the path type, path value anddataInputStateto the form.handleOnChangecalls it for typed input and suggestion clicks.handlePathChange, theFormOnChangehandler, skips whenfieldInfoalready matches the path.match(...)returningnull).targetPath.util.js:handleStoreInputPathChangealso returns the MLRun store state it computes, so the change event can save it in the form.TargetPath.test.jsx(13): scheme selection and the required error, typing, validation, clearing, MLRun store suggestions at every level, the saved store state, scheme switching, programmatic path changes, editing an existing path, restoring saved state, forms withoutformStateDataInputState, and machine-speed HTTPS and store paths.targetPath.util.test.js(2):handleStoreInputPathChange.FormDataInputsTable.test.jsx(2): the ticket flow in the real data-inputs table at machine speed, and an MLRun store round trip (apply, reopen, edit).FormOnChange.test.jsx(5):FormOnChangebehaviour, plus a guard that its handler keeps running in a passive effect. Moving it touseLayoutEffectbreaks validation in the Job wizard Resources step (FormResourcesUnits).✅ Checklist
🔗 References
🚨 Potentially Breaking Changes
Includes DRC change
If yes -> requires bump NPM version
🔍 Additional Notes
send_keysdoes) reproduced the bug on the original code:machine-sped-input, andsubmit_jobsent the wronginputs.dataset. With the fix the path is kept and submitted exactly.TargetPathplaces gave identical results on the original and the fix (58 recorded steps). It covered every scheme, validation, editing, paste, scheme switching, discard, MLRun store suggestions, Run payloads, Train model, Registerartifact and Register model.
npm run test:ui -- tests/features/artifacts.feature:125:203:354:729:757 tests/features/datasets.feature:198:272:416:681:717:946:1420 tests/features/jobsAndWorkflows.feature:1213:1445:2233:2672 tests/features/models.feature:288:381 tests/features/projectMonitoring.feature:294:345:391:436 tests/features/quickActions.feature:82:184:274:376UrlPath) are not affected; they update state in the change event. Both were checked in Chrome at machine speed.this today.
📸 Screenshots / Demos
N/A: no visual changes.