Bug #7846

[FUSE] Fuse MagicDirApiError test failure, kernel version specific?

Added by Peter Amstutz almost 4 years ago. Updated over 3 years ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
FUSE
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
Story points:
-

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.

Associated revisions

Revision cabbceab
Added by Peter Amstutz over 3 years ago

Merge branch '7846-magic-invalidate-entry' closes #7846

History

#1 Updated by Peter Amstutz almost 4 years ago

  • Description updated (diff)

#2 Updated by Tom Clegg over 3 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.

#3 Updated by Peter Amstutz over 3 years ago

Bugfix in branch 7846-magic-invalidate-entry

#4 Updated by Tom Clegg over 3 years ago

  • Category set to FUSE
  • Assigned To set to Peter Amstutz
  • Target version set to 2016-02-03 Sprint

e399a43 LGTM

#5 Updated by Peter Amstutz over 3 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Applied in changeset arvados|commit:cabbceab8a2e164f2c4f5afb0e2062dd02fd7790.

Also available in: Atom PDF