Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 266211

Summary: emerge: don't break on "Stale NFS file handle" error
Product: Portage Development Reporter: Krzysztof Olędzki <ole+gentoo>
Component: RepomanAssignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: enhancement Keywords: InVCS
Priority: High    
Version: 2.2   
Hardware: All   
OS: All   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 210077, 268228    
Attachments: Handle ENOENT and ESTALE in the same way, patch against portage-2.2_rc30

Description Krzysztof Olędzki 2009-04-15 07:45:13 UTC
Running portage over nfs can lead sometimes into problems like:

# emerge -f busybox
Calculating dependencies... done!

>>> Fetching (1 of 1) sys-apps/busybox-1.13.4
Traceback (most recent call last):
  File "/usr/bin/emerge", line 40, in <module>
    retval = _emerge.emerge_main()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 15715, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 14659, in action_build
    retval = mergetask.merge()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 10723, in merge
    rval = self._merge()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 11024, in _merge
    self._main_loop()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 11152, in _main_loop
    while self._schedule():
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 9456, in _schedule
    return self._schedule_tasks()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 11183, in _schedule_tasks
    if q.schedule():
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 9325, in schedule
    task.start()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1836, in start
    self._start()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 3963, in _start
    self._start_task(build, self._default_final_exit)
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2154, in _start_task
    task.start()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1836, in start
    self._start()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2725, in _start
    self._prefetch_exit(prefetcher)
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2738, in _prefetch_exit
    retval = fetcher.execute()
  File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1751, in execute
    mydbapi=portdb, tree="porttree")
  File "//usr/lib64/portage/pym/portage/__init__.py", line 6156, in doebuild
    fetchme, mysettings, listonly=listonly, fetchonly=fetchonly):
  File "//usr/lib64/portage/pym/portage/__init__.py", line 3867, in fetch
    mysize = os.stat(myfile_path).st_size
OSError: [Errno 116] Stale NFS file handle: '/usr/gentoo-nfs/portage/distfiles/busybox-1.13.4.tar.bz2'

I think we should handle ENOENT and ESTALE in the same way.
Comment 1 Krzysztof Olędzki 2009-04-15 07:46:39 UTC
Created attachment 188387 [details, diff]
Handle ENOENT and ESTALE in the same way, patch against portage-2.2_rc30
Comment 2 Zac Medico gentoo-dev 2009-04-15 18:44:20 UTC
Thanks, this is in svn r13347.
Comment 3 Zac Medico gentoo-dev 2009-04-19 23:34:17 UTC
This is fixed in 2.2_rc31.
Comment 4 Zac Medico gentoo-dev 2009-05-02 02:42:29 UTC
This is fixed in 2.1.6.12.