Changes between Version 3 and Version 6 of Ticket #10098


Ignore:
Timestamp:
10/10/10 08:29:32 (11 years ago)
Author:
mpatel
Comment:

Replying to vbraun:

Did that appear at the same time as the "sync" was removed from NFS? Or did we upgrade the expect python module?

As far as I'm aware, the Skynet cluster is administered independently (by Mariah Lenox) from the Sage cluster. I don't know whether Mariah has made any recent changes to Skynet's NFS configuration.

We made some changes to sage.interfaces.expect at #10004.

I think something is tripping over the following fact: In UNIX, you can open a file, then delete it, then delete the containing directory. The file is still open for business until you close it. But NFS doesn't have inodes, so if you delete an open file the NFS volume will contain a fake directory entry .nfs00000000007d541a0000abf1 that only disappears when you close the file. I guess that the "Device or resource busy" error is from trying to delete the non-empty directory. Either because the open file descriptor was leaked or because of some concurrency issue with NFS.

Thanks! I've tried to make an example:

sage: import os
sage: os.mkdir('dir')
sage: f = open('dir/foo', 'w')
sage: os.listdir('dir')
['foo']
sage: # Now 'rm dir/foo' in a separate window.
sage: sage: os.listdir('dir')
['.nfs000000000143f92500013636']
sage:  os.unlink('dir/.nfs000000000143f92500013636')
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)

/home/mpatel/<ipython console> in <module>()

OSError: [Errno 16] Device or resource busy: 'dir/.nfs000000000143f92500013636'
sage: os.rmdir('dir')
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)

/home/mpatel/<ipython console> in <module>()

OSError: [Errno 39] Directory not empty: 'dir'
sage: f.close()
sage: os.rmdir('dir')
sage: 

For the problem in the description, I suppose Sage tries to empty a temporary directory. What if we wrap that in a try-except block?

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #10098 – Description

    v3 v6  
    11With #10004 merged into 4.6.alpha3, I get the doctest failures
    22{{{
    3 #!
     3#!python
    44sage -t -long  -force_lib devel/sage/sage/interfaces/expect.py
    55**********************************************************************