-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[hailctl] batch submit fixes #14805
base: main
Are you sure you want to change the base?
[hailctl] batch submit fixes #14805
Conversation
d1c6edb
to
a2a376e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Thanks for pushing this over the line.
ce28d88
to
dedc203
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems well implemented and the test cases give me good confidence. My only minor concern is relying on a trailing '/' to decide whether something is a directory or not. If you can make me feel better about that, I'll happily 👍 . Oh, and I think a minor documentation improvement is possible too 😄
|
||
|
||
def real_absolute_cwd() -> str: | ||
return real_absolute_expanded_path(os.getcwd())[0] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we be adding a /
to the end here to make cwd look like a directory?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As you can tell, this sort of thing is unreliable and inconsistently applied. The short answer is no. I'm gonna change this implementation to use pathlib for local files.
|
||
|
||
def real_absolute_expanded_path(path: str) -> Tuple[str, bool]: | ||
had_trailing_slash = path[-1] == '/' # NB: realpath removes trailing slash |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this really the best we can do? Can we not make an os call to find out for sure whether or not it's a directory?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to take a detailed look at this PR now. I initially just assumed it was good to go but it's clear that's not possible.
This was mostly implemented by @danking - I just tweaked the tests to not drool invalid current working directories. |
04e7718
to
918f509
Compare
CHANGELOG: Fix many issues, including (hail#14274), with hailctl batch submit introduced in 0.2.127. Fixes hail-is#14274, Replaces hail-is#14351 (authored by @jigold)
918f509
to
a42df02
Compare
CHANGELOG: Fix many issues, including (hail#14274), with hailctl batch submit introduced in 0.2.127.
Fixes #14274, Replaces #14351 (authored by @jigold) and #14186 (authored by @danking).
This change has low security impact
Dan's original commit message is as follows:
"""
Issues resolved herein:
exit 0
as it exits the test early.orjson
tojson
.--wait
which waits for the submitted batch to complete and exits success only when the batch is success.realpath
which resolves symlinks. In particular, on Mac OS X,/tmp
is a symlink to/private/tmp
and Python's APIs are inconsistent on whether they return a realpath or a path with symlinks. [1]ln -s src dst
means different things depending on whether dst is an extant folder or not. In this PR, I prefer to always be fully explicit so I never rely onln
detecting the destination is a directory and acting differently. Put differently:file_input_to_src_dest
now never returns a file source and a destination folder.real_absolute_cwd()
on the job before wecd
into it.test_dir_outside_curdir
suggests that--file foo/:/
is meant to copy the contents of foo into the root. This cannot be implemented with our symlink strategy (you can't replace the root with a symlink), so I changed the interpretation: a trailing slash on the source is meaningless. If the destination ends in a slash, we "copy into", otherwise we "copy to".[1]:
"""