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 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.
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ć.
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.