Comment 26 for bug 1688508

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

list_guests lists all 6
  8b5645c2-12e5-4ec7-9350-08adb3e8cb0f
  ef55638c-926a-4d43-9790-99aae3010951
  119975ea-8d86-4114-84db-02f1f655d279
  afe0321b-2deb-44c8-9cd3-727882b140b9
  6d0a05d2-b40c-433e-b656-3519626dcbf3
  a9224770-a4b7-4044-b4ce-2ceb934c1e4b

All xenial-testshutdown-* get printed to stdout

Listfile gets URI + guests:
+ echo default 8b5645c2-12e5-4ec7-9350-08adb3e8cb0f ef55638c-926a-4d43-9790-99aae3010951 119975ea-8d86-4114-84db-02f1f655d279 afe0321b-2deb-44c8-9cd3-727882b140b9 6d0a05d2-b40c-433e-b656-3519626dcbf3 a9224770-a4b7-4044-b4ce-2ceb934c1e4b

shutdown_guests_parallel called with:
+ uri=default
+ guests=8b5645c2-12e5-4ec7-9350-08adb3e8cb0f ef55638c-926a-4d43-9790-99aae3010951 119975ea-8d86-4114-84db-02f1f655d279 afe0321b-2deb-44c8-9cd3-727882b140b9 6d0a05d2-b40c-433e-b656-3519626dcbf3 a9224770-a4b7-4044-b4ce-2ceb934c1e4b

on_shutdown= (empty initially)
loops until
  $on_shutdown is empty (again)
  AND
  $guests is empty (expects remove of handled guests)

    Then counts current $on_shutdown vs $PARALLEL_SHUTDOWN target.
    Makes $guests the arguments vais "set --"
    Picks $1 as guest
    Shifts $1 out of the args
    guests is assigned the remaining guests.
    TL;DR This popped $1 into $guest and shrunk $guests by 1

    Checks if this popped val is already in $on_shutdown
    Gets a guest name
    Calls shutdown_guest_async with that $guest
=> 8b5645c2-12e5-4ec7-9350-08adb3e8cb0f
    Extends on_shutdown by $guest

    LOOPS UP

    $guests still full
    Then counts current $on_shutdown vs $PARALLEL_SHUTDOWN target - still some to go.
    Again pops one and shrinks $guests

    Checks if this popped val is already in $on_shutdown
    Gets a guest name
    Calls shutdown_guest_async with that $guest
=> ef55638c-926a-4d43-9790-99aae3010951
    Extends on_shutdown by $guest

  Now it has 2 (of 2) async shutdowns started

  sleep 1
  Counts remaining guests = 4
  Counts on shutdown = 2

  Reports on progress in regard to timeout

  # Saves current on_shutdown
  on_shutdown_prev=$on_shutdown

  # Determines how much of current on_shutdown are still running and sets $guests_shutting_down to remaining ones
  check_guests_shutdown "$uri" "$on_shutdown"

  on_shutdown="$guests_shutting_down"
  print_guests_shutdown "$uri" "$on_shutdown_prev" "$on_shutdown"

  Initially both shutdown guests are still on, so they are kept and nothing is reported as shut down.

    For now the inner loop repetition does not make progress due to on_shutdown already being 2 matching 2 of $PARALLEL_SHUTDOWN

  On the next check of check_guests_shutdown default 8b5645c2-12e5-4ec7-9350-08adb3e8cb0f ef55638c-926a-4d43-9790-99aae3010951 the guests are down

  on_shutdown= is set to an empty value
  on_shutdown_prev= 8b5645c2-12e5-4ec7-9350-08adb3e8cb0f ef55638c-926a-4d43-9790-99aae3010951 (from before the check)

  print_guests_shutdown reports the two guests as GONE
  LOOPS UP

  It detects that on shutdown is now count 0
  FIND#1: the check against $guests is not the long VAR
  Something modified $guests to the value of on_shutdown and this is what breaks progress.

  From here is is an infnite loop until timeout.

  This is a scope bug in this §%$/&( script.
  I hate to touch it BTW as I did when fixing the last issue, but bugs needs fixing.