Bug #21660
closedtests.test_inodes.InodeTests.test_inode_cleared fails intermittently
Description
====================================================================== FAIL: test_inode_cleared (tests.test_inodes.InodeTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/workspace/developer-run-tests-doc-pysdk-api-fuse/services/fuse/tests/test_inodes.py", line 87, in test_inode_cleared self.assertEqual(600, cache.total()) AssertionError: 600 != 1100 ----------------------------------------------------------------------
The attached log failed on a development branch, but later passed on the exact same commit.
Files
Updated by Peter Amstutz 7 months ago
- Target version changed from Future to Development 2024-06-05 sprint
- Assigned To set to Tom Clegg
Updated by Tom Clegg 7 months ago
- Status changed from New to In Progress
21660-inode-test-race @ f254e6a4e1593a4ade5176e8f283162fbd9af8f2 -- developer-run-tests: #4252
The test case needs to wait for the _inode_remove_queue tasks to be completed, but _inode_remove method was calling task_done() too early in the case of tasks that are deferred until evict_candidates.
Updated by Peter Amstutz 7 months ago
Tom Clegg wrote in #note-3:
21660-inode-test-race @ f254e6a4e1593a4ade5176e8f283162fbd9af8f2 -- developer-run-tests: #4252
[...]
This LGTM. You're right, it can't call task_done until the task is really actually done, but the deferred execution to play around the llfuse lock obscures that.
I agree this shouldn't have any usage implications outside of testing one way or the other, it only affects the behavior of shutdown, at which point you're discarding everything so cache management doesn't matter. Only within the very narrow bounds of the test do you need to make sure cache management operations have completed.
Updated by Tom Clegg 7 months ago
- Status changed from In Progress to Resolved
Applied in changeset arvados|d9506e8ac1add07732c64ca923468465ca96007b.