|
|
|
|
|
|
|
|
|
|
xen-api
[Xen-API] [PATCH] fix an upgrade race in the Host_patch record update lo
# HG changeset patch
# User David Scott <dave.scott@xxxxxxxxxxxxx>
# Date 1264088709 0
# Node ID 22cd3f304b9e0818b80ac5a40e6d4c6438c5e58a
# Parent d062b05c786746edc58629bf4128aa5444f853d9
CA-35549: fix a race in the Host_patch record update logic
The master checks every 30s if we've just finished a rolling upgrade by
noticing when
all the Host.software_version:product_version strings match. It then calls a
script
/opt/xensource/libexec/xapi-rolling-upgrade stop
which currently deletes pool-wide patch records if all the per-host links are
gone.
Unfortunately the dbsync code on the slave was updating the software_version
before
deleting the per-host links, creating a race which could result in old patch
records
lingering, confusingly around.
Signed-off-by: David Scott <dave.scott@xxxxxxxxxxxxx>
diff -r d062b05c7867 -r 22cd3f304b9e ocaml/xapi/dbsync_slave.ml
--- a/ocaml/xapi/dbsync_slave.ml Tue Jan 19 15:17:14 2010 +0000
+++ b/ocaml/xapi/dbsync_slave.ml Thu Jan 21 15:45:09 2010 +0000
@@ -86,6 +86,7 @@
Xapi_globs.localhost_software_version := software_version; (* Cache this *)
(* Xapi_ha_flags.resync_host_armed_flag __context host; *)
+ debug "Updating host software_version";
Db.Host.set_software_version ~__context ~self:host ~value:software_version;
Db.Host.set_API_version_major ~__context ~self:host
~value:Xapi_globs.api_version_major;
@@ -664,11 +665,6 @@
(* Load the host rrd *)
Monitor_rrds.load_rrd ~__context (Helpers.get_localhost_uuid ()) true;
- (* refresh host info fields *)
- switched_sync Xapi_globs.sync_refresh_localhost_info (fun () ->
- refresh_localhost_info ~__context;
- );
-
(* maybe record host memory properties in database *)
switched_sync Xapi_globs.sync_record_host_memory_properties (fun () ->
record_host_memory_properties ~__context;
@@ -741,3 +737,13 @@
if Db.Host.get_bios_strings ~__context ~self:localhost = [] then
Bios_strings.set_host_bios_strings ~__context ~host:localhost
);
+
+ (* CA-35549: In a pool rolling upgrade, the master will detect the end of
upgrade when the software versions
+ of all the hosts are the same. It will then assume that (for example)
per-host patch records have
+ been tidied up and attempt to delete orphaned pool-wide patch records.
*)
+
+ (* refresh host info fields *)
+ switched_sync Xapi_globs.sync_refresh_localhost_info (fun () ->
+ refresh_localhost_info ~__context;
+ );
+
diff -r d062b05c7867 -r 22cd3f304b9e scripts/xapi-rolling-upgrade-miami
--- a/scripts/xapi-rolling-upgrade-miami Tue Jan 19 15:17:14 2010 +0000
+++ b/scripts/xapi-rolling-upgrade-miami Thu Jan 21 15:45:09 2010 +0000
@@ -24,8 +24,6 @@
;;
stop)
- logger -t upgrade "Sleeping for 30s"
- sleep 30s
for i in $($XE sr-list other-config:xenserver_tools_sr=true params=uuid
--minimal | sed 's/,/ /g'); do
echo Renaming $i
$XE sr-param-set uuid=$i name-label="XenServer Tools"
name-description="XenServer Tools ISOs"
2 files changed, 11 insertions(+), 7 deletions(-)
ocaml/xapi/dbsync_slave.ml | 16 +++++++++++-----
scripts/xapi-rolling-upgrade-miami | 2 --
xen-api.hg.patch
Description: Text Data
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-API] [PATCH] fix an upgrade race in the Host_patch record update logic,
David Scott <=
|
|
|
|
|