Skip to content

BUG: Volume action fails when restoring from volume bigger volumes

Opis problemu

Task czekający aż wolumen zostanie przywrócony z wolumeny czeka na jego dostępność. Ten task ma zdefiniowane retries które staje się bardzo duże na skutek błedu i mnożenia wartości string zamiast int. Mnożona jest z kolei wartość GB w największym zadanym wolumenie przez 10. to powoduje że dla wolumenów większych niż 999 powodują "błąd wielkiej liczby".

Logi

  • sam błąd
TASK [openstack : debug] ***************************************************************************************************************************************************************************************************************************************
Friday 29 October 2021  06:21:47 +0000 (0:00:02.080)       0:00:09.111 ******** 
ok: [localhost] => {
    "1664166416641664166416641664166416641664": "1664166416641664166416641664166416641664"
}

TASK [openstack : wait for restored volume to become available] ************************************************************************************************************************************************************************************************
Friday 29 October 2021  06:21:47 +0000 (0:00:00.042)       0:00:09.153 ******** 
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: OverflowError: Python int too large to convert to C long
fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}

powyżej zdebugowana wartość dla retries jeśli największy backup ma 1664 GB.

Działania naprawcze

Bardzo proste w jednej zmiennej dodać rzutowanie wartości na int przed jej pomnożeniem przez 10:

_openstack_volumes_from_backup_retries: "{{ _openstack_volumes_from_backup | map(attribute='size') | max | int * 10 }}"
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information