← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1565399] [NEW] A stale file handle error occurs when resizing

 

Public bug reported:

This error can occur when resizing vm and resource tracker are executed
at the same time.

The cause of this bug is that the file path of a VM disk is changed temporarily when resizing.
(from /var/lib/nova/instances/[UUID]/ to /var/lib/nova/instances/[UUID]_resize/)

The _get_instance_disk_info method which gets a total disk size that all instance uses is executed periodically in resource_tracker.
At that time, the os.path.getsize() method which gets a file size is executed.

It is just a speculation, but the os.path.getsize() method consists of
these steps.

 1. open the file by using a fopen method in C
 2. get the status of file by using a stat method in C
 
At that time, if the file path of a VM disk is changed between 1. and 2., a errno.ESTALE will occur.
So we have to take into account the OSError(errno.ESTALE) in order to avoid above error.

It's a very rare case, however it can happen with a shared storage
environment using slow NFS.

** Affects: nova
     Importance: Undecided
     Assignee: Hiroyuki Eguchi (h-eguchi)
         Status: New

** Changed in: nova
     Assignee: (unassigned) => Hiroyuki Eguchi (h-eguchi)

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1565399

Title:
  A stale file handle error occurs when resizing

Status in OpenStack Compute (nova):
  New

Bug description:
  This error can occur when resizing vm and resource tracker are
  executed at the same time.

  The cause of this bug is that the file path of a VM disk is changed temporarily when resizing.
  (from /var/lib/nova/instances/[UUID]/ to /var/lib/nova/instances/[UUID]_resize/)

  The _get_instance_disk_info method which gets a total disk size that all instance uses is executed periodically in resource_tracker.
  At that time, the os.path.getsize() method which gets a file size is executed.

  It is just a speculation, but the os.path.getsize() method consists of
  these steps.

   1. open the file by using a fopen method in C
   2. get the status of file by using a stat method in C
   
  At that time, if the file path of a VM disk is changed between 1. and 2., a errno.ESTALE will occur.
  So we have to take into account the OSError(errno.ESTALE) in order to avoid above error.

  It's a very rare case, however it can happen with a shared storage
  environment using slow NFS.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1565399/+subscriptions


Follow ups