Blob Blame History Raw
From 0dca216a84720e5652b1d87aac8c7e0aa8b4a31c Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Wed, 27 Feb 2019 14:21:26 -0600
Subject: [PATCH] High: libcrmcommon: complete interrupted live migrations
 correctly

8435966 (2.0.0) got the sense of compare_version() wrong when attempting to
remove the old behavior for recording partial live migrations, instead
re-introducing it.

This causes a regression in behavior when a transition containing a live
migration is aborted after the migrate_to has been initiated but before the
migrate_from has been initiated. In that case, it would schedule a full start
on the destination node rather than a migrate_from.
---
 lib/common/operations.c | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/lib/common/operations.c b/lib/common/operations.c
index 40d4c18..88c4fa5 100644
--- a/lib/common/operations.c
+++ b/lib/common/operations.c
@@ -396,8 +396,8 @@ create_operation_update(xmlNode * parent, lrmd_event_data_t * op, const char * c
 
     task = op->op_type;
 
-    /* Remap the task name under various scenarios, to make life easier for the
-     * PE when determining the current state.
+    /* Record a successful reload as a start, and a failed reload as a monitor,
+     * to make life easier for the scheduler when determining the current state.
      */
     if (crm_str_eq(task, "reload", TRUE)) {
         if (op->op_status == PCMK_LRM_OP_DONE) {
@@ -405,18 +405,6 @@ create_operation_update(xmlNode * parent, lrmd_event_data_t * op, const char * c
         } else {
             task = CRMD_ACTION_STATUS;
         }
-
-    } else if (crm_str_eq(task, CRMD_ACTION_MIGRATE, TRUE)) {
-        /* if the migrate_from fails it will have enough info to do the right thing */
-        if (op->op_status == PCMK_LRM_OP_DONE) {
-            task = CRMD_ACTION_STOP;
-        } else {
-            task = CRMD_ACTION_STATUS;
-        }
-
-    } else if ((op->op_status == PCMK_LRM_OP_DONE)
-               && crm_str_eq(task, CRMD_ACTION_MIGRATED, TRUE)) {
-        task = CRMD_ACTION_START;
     }
 
     key = generate_op_key(op->rsc_id, task, op->interval_ms);
-- 
1.8.3.1