BUG: Inconsistent volume data attached to instance which later was destroyed
Opis zdarzenia
Mam sobie takie flow:
- Tworzę instancje i dołączam do niej wolumen, rolą filesystem montuje itd wszystko pięknie
- Na tym wolumenie mam dwa pliki z archiwami listuje je
- Tworzę sobie dwa nowe pliki z archiwami na tym wolumenie
- Z wykorzystaniem listy z punktu drugiego usuwam stare archiwa, asynchronicznie czekam na wykonanie usuwania (modułem
file
→state
:absent
) - Usuwam maszynę akcją
instance/destroy
z tej roli - Przechodzę flow od początku stawiam maszynę z wolumenem i na początku jak listuje pliki widzę że stare pliki usunięte poprzednio istnieją i mają dane, nowe też istnieją ale mają zerową wielkość, na dowód wynik watcha na katalogu:
Co się dzieje?
Nie wiem, coś się nie synchronizuje? jakiś cache jest włączony?
Co powinno się dziać?
Stare pliki powinny zostać usunięte i po utworzeniu nowej maszyny z tym samym wolumenem powinny w katalogu istnieć tylko nowe.
Workaround
Po sugestii @porzech przed usuwaniem maszyny dodałem sobie wyłączanie maszyny i czekanie aż przejdzie w status SHUTOFF
, po takich taskach problem przestał występować.
Propozycja zmian
Dodać dwa taski w akcji instance/destroy
przed faktycznym usuwaniem instancji:
- name: "stop instance"
connection: "local"
command: "openstack --os-cloud {{ openstack_cloud }} server stop {{ inventory_hostanme }}"
failed_when: "false"
changed_when: "_result_openstack_instance_stop.rc == 0"
register: "_result_openstack_instance_stop"
- name: "wait for instance to shutoff"
connection: "local"
command: "openstack --os-cloud {{ openstack_cloud }} server show {{ inventory_hostanme }} --format json"
when: "_result_openstack_instance_stop.changed"
changed_when: "false"
retries: 100
until: "(_result_openstack_server_status.stdout | from_json).status == 'SHUTOFF'"
register: "_result_openstack_server_status"
Edited by Krzysztof Szymański