conda-incubator / conda-store

Data science environments, for collaboration. ✨
https://conda.store
BSD 3-Clause "New" or "Revised" License
142 stars 46 forks source link

[BUG] - Raise an error in the UI if env name is too long #654

Closed nkaretnikov closed 9 months ago

nkaretnikov commented 10 months ago

Describe the bug

OSError: [Errno 36] File name too long: '/home/nkaretnikov/.conda-store/storage/logs/804c728fbcd3f510b399fc7b1e12de61061008766f8d0b6815542305ded59906-20231106-180635-533958-1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.log'

(This is with a local backend with uses the FS. With a different backend, the error might be different, but the problem is the same - we need to communicate errors.)

Expected behavior

An error is shown in the UI. I think the solution here is to check some API after N seconds, but only if the package is in the Building status (this will avoid a race condition where multiple things are Queued). If the API fails, mark the whole build as Failed, too.

What happens instead is that UI keeps spinning in the Builds state.

How to Reproduce the problem?

See above.

Output

No response

Versions and dependencies used.

server: 0760fa2b386bc207936df89f52b4df83f61e8af8 ui: 646c5834562f159f94de8033345240ccde08331b

Anything else?

No response

nkaretnikov commented 10 months ago

Alternatively, it might be possible to report the status as part of the initial call when a build is created. That would be best, since it's less racy, but not sure if it's possible.

Clicking on the Create button -> api_post_specification -> register_environment -> create_build.

In create_build, DB operations are done, then an async task is launched. Because the task is async and might be in the Queued state, we don't block and return the build id.

So the solution here might be catching errors in the the task and updating build state to Failed.

nkaretnikov commented 9 months ago

Status update: in review, will be fixed as part of https://github.com/conda-incubator/conda-store/pull/653/commits (Set status to FAILED in build_conda_environment)