Skip to content
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

Canonicalize filesystem paths in user-facing APIs (#2370) #2371

Merged
merged 4 commits into from
Aug 9, 2022

Conversation

tustvold
Copy link
Contributor

@tustvold tustvold commented Aug 8, 2022

Which issue does this PR close?

Closes #2370

Rationale for this change

Users expect to be able to pass arbitrary paths to LocalFileSystem::new_with_prefix or Path::from_filesystem_path and for it to work correctly. This stopped working following #2269 as we stopped canonicalizing paths.

This PR therefore strikes a middle-ground, we canonicalize paths passed to the external interfaces, ensuring the above works. However, we otherwise continue to preserve symlinks, etc... whilst navigating the filesystem as part of object storage operation, thereby ensuring symlinks behave "as expected".

What changes are included in this PR?

Are there any user-facing changes?

@tustvold tustvold force-pushed the local-file-system-relative-root branch from e1eefbb to 88a9408 Compare August 9, 2022 13:53
@tustvold tustvold changed the title Canonicalize LocalFileSystem::root (#2370) Canonicalize filesystem paths in user-facing APIs (#2370) Aug 9, 2022
async fn relative_paths() {
LocalFileSystem::new_with_prefix(".").unwrap();
LocalFileSystem::new_with_prefix("..").unwrap();
LocalFileSystem::new_with_prefix("../..").unwrap();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this should be ok (../.. will exist) -- as long as the test isn't run in the root of the file system 😆

@alamb alamb merged commit b55e3b1 into apache:master Aug 9, 2022
@ursabot
Copy link

ursabot commented Aug 9, 2022

Benchmark runs are scheduled for baseline = 77c814c and contender = b55e3b1. b55e3b1 is a master commit associated with this PR. Results will be available as each benchmark for each run completes.
Conbench compare runs links:
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on ec2-t3-xlarge-us-east-2] ec2-t3-xlarge-us-east-2
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on test-mac-arm] test-mac-arm
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on ursa-i9-9960x] ursa-i9-9960x
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on ursa-thinkcentre-m75q] ursa-thinkcentre-m75q
Buildkite builds:
Supported benchmarks:
ec2-t3-xlarge-us-east-2: Supported benchmark langs: Python, R. Runs only benchmarks with cloud = True
test-mac-arm: Supported benchmark langs: C++, Python, R
ursa-i9-9960x: Supported benchmark langs: Python, R, JavaScript
ursa-thinkcentre-m75q: Supported benchmark langs: C++, Java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
object-store Object Store Interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

LocalFileSystem::new_with_prefix fails with relative path
3 participants