Bug #7846
closed[FUSE] Fuse MagicDirApiError test failure, kernel version specific?
Description
ERROR: runTest (tests.test_mount.MagicDirApiError) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/peter/work/arvados/services/fuse/tests/test_mount.py", line 1034, in runTest llfuse.listdir(os.path.join(self.mounttmp, self.testcollection)) File "llfuse/fuse_api.pxi", line 43, in llfuse.capi.listdir (src/llfuse/capi_linux.c:22621) OSError: [Errno 2] No such file or directory: '/tmp/tmpSbUVZB/97d180c4f916faf61fb3d64aa2263961+52'
This error doesn't happen on the Jenkins server.
My suspicion is that around v4.0 the Linux VFS may have changed the way directory listings are cached, so this test which checks if something exists (OSError on induced API fail) then checks again (API success) is failing the 2nd time because the 2nd request is being served from the Linux VFS cache instead of asking arv-mount again. The tentative solution is to do a VFS cache invalidation on the directory when there is an API error.
Updated by Tom Clegg almost 9 years ago
I think this is only a test bug, i.e., it wouldn't cause noticeable trouble in actual usage. It means you need to wait some number of milliseconds for an API server problem to go away, which is fine because you shouldn't need to depend on the exact timing of network/server problems getting fixed.
Possible fix: use mock/patch to set allow_dirent_cache=False for everything during this test case.
Updated by Peter Amstutz almost 9 years ago
Bugfix in branch 7846-magic-invalidate-entry
Updated by Tom Clegg almost 9 years ago
- Category set to FUSE
- Assigned To set to Peter Amstutz
- Target version set to 2016-02-03 Sprint
e399a43 LGTM
Updated by Peter Amstutz almost 9 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100
Applied in changeset arvados|commit:cabbceab8a2e164f2c4f5afb0e2062dd02fd7790.