Michał Liszcz

warsztat

Habitat Flow 1.0: zanim dałem numer 1.0, celowo psułem zgrywanie

Przed niedzielnym wydaniem Codex zabijał Habitat Flow w dziesięciu miejscach zapisu. Numer 1.0 padł, gdy każde wznowienie oddawało zgodne kopie i nie ruszało cudzych plików.

Habitat Flow na iPhonie po zgraniu karty: zielony kwadrat z ptaszkiem, napis zweryfikowano 11 GB, FX6 Day 01, 58 plików, ASC MHL zapisany

Habitat Flow 1.0 wyszedł w niedzielę, 18 października. Numer 1.0 nie oznaczał nowych funkcji. Oznaczał, że aplikację da się brutalnie wyłączyć w trakcie zgrywania karty, a po ponownym uruchomieniu i tak kończy z dwiema kopiami zgodnymi ze źródłem i nie nadpisuje niczego, czego sama nie stworzyła.

Dlaczego psułem własną aplikację

Zgrywanie karty z planu to moment, w którym nikt nie patrzy na ekran. Laptop się zamyka, kabel wypada, prąd w wozie gaśnie. Pytanie nie brzmi, czy kopiowanie się przerwie, tylko co aplikacja zrobi po wznowieniu.

Więc poprosiłem Codexa, żeby zabijał Habitat Flow w dziesięciu miejscach, w których zapisuje pliki: przy skanowaniu karty, przy zapisie listy plików, przy kopiowaniu, przy publikacji kopii, przy weryfikacji i przy zapisie raportu. Zabicie oznacza tu sygnał, którego program nie może przechwycić ani posprzątać po sobie. Potem dwa świeże uruchomienia i porównanie sum kontrolnych, czyli cyfrowych odcisków pliku, źródła i obu kopii.

Okno Habitat Flow na Macu w trakcie sprawdzania kopii: pasek weryfikacji całego importu na 56 procentach, trzy karty FX6, A7RV i FX3 w imporcie, po prawej licznik 79 procent z przyciskiem Wstrzymaj
Sprawdzanie kopii co do bitu. W takim momencie Codex ubijał proces.

Co wyszło przed poprawkami

Sześć błędów. Odtworzonych na syntetycznych plikach, trzy najważniejsze. Historia potrafiła pokazać „zweryfikowane” przy kopii, która była uszkodzona. Druga kopia, ta na zapasowym dysku, mogła nadpisać inny plik o tej samej nazwie. Aplikacja kasowała niedokończone pliki, które nie były jej.

Późniejsza próba wyłapała czwarty: nowe nagranie ze starszą datą historia uznawała za już zgrane i pomijała. Na planie to wygląda jak karta zgrana do końca, z jednym ujęciem mniej.

Co działa w 1.0

Po wznowieniu aplikacja nie ufa własnej historii. Czyta źródło i obie kopie jeszcze raz. Jeśli w miejscu docelowym leży plik o innej treści, zostaje na miejscu, a aplikacja zgłasza konflikt jako błąd, zamiast wpisać sukces. Swoje resztki po przerwaniu zapisuje w trwałym dzienniku, więc wie, co może posprzątać, a czego nie dotykać.

Okno Habitat Flow na Macu po zakończeniu importu: trzy karty zweryfikowane, w drzewku projektu FX6 trzy zgrania, A7RV i FX3 po dwa, po prawej zielony ptaszek i napis Materiały bezpieczne, 72 pliki, 144 GB
Koniec importu: wszystkie karty zweryfikowane, dopiero wtedy zielony ptaszek.

Ostatni przebieg przed wydaniem: 140 testów zaliczonych, zero błędów. Do tego próba obciążeniowa na 1200 małych plikach i jednym pliku 128 MiB, przerwana 50 razy.

Habitat Flow zgrywa karty z planu na dwa dyski naraz i mówi wprost, kiedy kopia zgadza się z kartą co do bitu.