-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Trying to use Git on seaweedfs FUSE encounters arbitrary errors #1182
Comments
For the first error, |
Thanks for looking into this! I haven't got around to testing yet, but AFAIK this shouldn't be necessary and won't fix the problem. The Git repository is inside the seaweedfs mount, this isn't the case of a Git repository that has a mount inside of the repository and running Git from inside that mount. What's happening is that for some reason Git fails to detect the repository, something in it either got corrupted (Inside the I think The code in Git that does the discovery is here: git/git/setup.c:957, and this function is used to check if candidate/suspect is a Git directory: git/git/setup.c:311. |
Thanks for the details! I got
The error "unable to get current working directory" happens here: https://github.com/git/git/blob/53f9a3e157dbbc901a02ac2c73346d375e24978c/abspath.c#L105 |
I haven't used Docker for Mac bind mounts when testing this, and this happened on top of the seaweedfs mount anyhow, which shouldn't be going through such bind mounts. In the seaweedfs case, this happens quite deterministicly for me while I haven't had any such issue with bind mounts yet. |
Found the problem. There is a rename operation and the SeaweedFS mount is not clearing the old item cache. |
hmm, still
|
works on docker. seems still some problem on Mac |
Strange. With my instructions it's supposed to be just a normal mount inside a Linux VM not some Docker for Mac magical bind mount. Since it is a Linux VM it has its own kernel running so maybe the kernel version and/or FUSE version plays a part here. |
When git use mmap to update a file, the file content is not flushed in time. see https://github.com/git/git/blob/master/config.c#L2722 and osxfuse/osxfuse#202 This caused an additional file |
Now I understand that you were talking about running on macOS directly with OSXFUSE when you meant there is still an issue on Mac. |
Using the same setup with version 1.51 the instructions in the PR description seem to work. I then tried:
|
able to |
Mostly working now. For small~medium repo, everything works. For large ones, often I got "File exists" error. From the logging, it seems a race condition. Usually there are 3 file existence checking followed by a file creation. But sometimes the file creation happens first and causing this. You can use 1.52 to try it out.
|
After commit 892e726 , the git clone for large repo works fine now. This is because reusing the gRPC context object for too many operations caused the object to be cancelled for unknown reason. |
Describe the bug
Trying to do the following using the default
docker-compose
setup causes Git to throw the following arbitrary errors due to unexpected filesystem syscalls failures, such asENOENT
ongetcwd
. When some of those happen, even the shell calling Git often becomes confused about what its current pwd is, ending up showing it as(unknown)
Errors:
System Setup
docker-compose
setup from here: docker/seaweedfs-compose.ymldocker-compose
setup: Alpine 3.10.2, on top of Docker for Mac 2.1.0.5 on macOS 10.14.6.weed version
: version 30GB 1.50 linux amd64filer.toml
Expected behavior
Git should work correctly like it does on a local disk.
The text was updated successfully, but these errors were encountered: