diff mbox series

tests/migration-test: Wait for cancellation sooner in multifd cancel

Message ID 20240920161319.2337625-1-jmarcin@redhat.com
State New
Headers show
Series tests/migration-test: Wait for cancellation sooner in multifd cancel | expand

Commit Message

Juraj Marcin Sept. 20, 2024, 4:13 p.m. UTC
The source QEMU might not finish the cancellation of the migration
before we start setting up the next attempt. During the setup, the
test_migrate_start() function and others might need to interact with the
source in a way that is not possible unless the migration is fully
canceled. For example, setting capabilities when the migration is still
running leads to an error.

By moving the wait before the setup, we ensure this does not happen.

Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: Juraj Marcin <jmarcin@redhat.com>
---
 tests/qtest/migration-test.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Comments

Peter Xu Sept. 20, 2024, 4:23 p.m. UTC | #1
On Fri, Sep 20, 2024 at 06:13:02PM +0200, Juraj Marcin wrote:
> The source QEMU might not finish the cancellation of the migration
> before we start setting up the next attempt. During the setup, the
> test_migrate_start() function and others might need to interact with the
> source in a way that is not possible unless the migration is fully
> canceled. For example, setting capabilities when the migration is still
> running leads to an error.
> 
> By moving the wait before the setup, we ensure this does not happen.
> 
> Cc: Peter Xu <peterx@redhat.com>
> Signed-off-by: Juraj Marcin <jmarcin@redhat.com>

+Fabiano, +PeterM.

Some more context: this issue Juraj can only reproduce in one of our
downstream 9.2 branch with some probably over crowded build systems.  But
logically it looks still possible to also happen upstream..

queued, thanks!

> ---
>  tests/qtest/migration-test.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
> index 814ec109a6..95e45b5029 100644
> --- a/tests/qtest/migration-test.c
> +++ b/tests/qtest/migration-test.c
> @@ -3267,6 +3267,16 @@ static void test_multifd_tcp_cancel(void)
>      qtest_wait_qemu(to);
>      qtest_quit(to);
>  
> +    /*
> +     * Ensure the source QEMU finishes its cancellation process before we
> +     * proceed with the setup of the next migration. The test_migrate_start()
> +     * function and others might want to interact with the source in a way that
> +     * is not possible while the migration is not canceled properly. For
> +     * example, setting migration capabilities when the migration is still
> +     * running leads to an error.
> +     */
> +    wait_for_migration_status(from, "cancelled", NULL);
> +
>      args = (MigrateStart){
>          .only_target = true,
>      };
> @@ -3282,8 +3292,6 @@ static void test_multifd_tcp_cancel(void)
>      /* Start incoming migration from the 1st socket */
>      migrate_incoming_qmp(to2, "tcp:127.0.0.1:0", "{}");
>  
> -    wait_for_migration_status(from, "cancelled", NULL);
> -
>      migrate_ensure_non_converge(from);
>  
>      migrate_qmp(from, to2, NULL, NULL, "{}");
> -- 
> 2.46.1
>
diff mbox series

Patch

diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 814ec109a6..95e45b5029 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -3267,6 +3267,16 @@  static void test_multifd_tcp_cancel(void)
     qtest_wait_qemu(to);
     qtest_quit(to);
 
+    /*
+     * Ensure the source QEMU finishes its cancellation process before we
+     * proceed with the setup of the next migration. The test_migrate_start()
+     * function and others might want to interact with the source in a way that
+     * is not possible while the migration is not canceled properly. For
+     * example, setting migration capabilities when the migration is still
+     * running leads to an error.
+     */
+    wait_for_migration_status(from, "cancelled", NULL);
+
     args = (MigrateStart){
         .only_target = true,
     };
@@ -3282,8 +3292,6 @@  static void test_multifd_tcp_cancel(void)
     /* Start incoming migration from the 1st socket */
     migrate_incoming_qmp(to2, "tcp:127.0.0.1:0", "{}");
 
-    wait_for_migration_status(from, "cancelled", NULL);
-
     migrate_ensure_non_converge(from);
 
     migrate_qmp(from, to2, NULL, NULL, "{}");