This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] [PATCH] xend: fix avoidance to restart domain on crash

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] xend: fix avoidance to restart domain on crash
From: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
Date: Wed, 15 Apr 2009 16:24:12 +0900
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Wed, 15 Apr 2009 00:24:51 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
If a qemu-dm dies immediately (probably by wrong setting),
xend repeats to restart a domain so many times. 
That causes system overload.

There is already a logic to avoid too early restarting, however,
it might not work. Since xenstore entry 'xend/previous_restart_time'
is volatile. XendDomainInfo.destroy() which removes the entry from
xenstore is called in some places.

Also, this patch prevents too early restarting even at the first
domain creation.

Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>

diff -r 94ffd85005c5 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Tue Apr 14 15:23:53 2009 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py   Wed Apr 15 13:19:36 2009 +0900
@@ -514,7 +514,6 @@ class XendDomainInfo:
         if reason not in DOMAIN_SHUTDOWN_REASONS.values():
             raise XendError('Invalid reason: %s' % reason)
-        self._removeVm('xend/previous_restart_time')
         self.storeDom("control/shutdown", reason)
         # HVM domain shuts itself down only if it has PV drivers
@@ -2001,20 +2000,13 @@ class XendDomainInfo:
         old_domid = self.domid
         self._writeVm(RESTART_IN_PROGRESS, 'True')
-        now = time.time()
-        rst = self._readVm('xend/previous_restart_time')
-        if rst:
-            rst = float(rst)
-            timeout = now - rst
-            if timeout < MINIMUM_RESTART_TIME:
-                log.error(
-                    'VM %s restarting too fast (%f seconds since the last '
-                    'restart).  Refusing to restart to avoid loops.',
-                    self.info['name_label'], timeout)
-                self.destroy()
-                return
-        self._writeVm('xend/previous_restart_time', str(now))
+        elapse = time.time() - self.info['start_time']
+        if elapse < MINIMUM_RESTART_TIME:
+            log.error('VM %s restarting too fast (Elapsed time: %f seconds). '
+                      'Refusing to restart to avoid loops.',
+                      self.info['name_label'], elapse)
+            self.destroy()
+            return
         prev_vm_xend = self._listRecursiveVm('xend')
         new_dom_info = self.info
Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>