W celu zapewnienia poprawnego i ciągłego działania aplikacji na panelu dotykowym, zdecydowano się na wprowadzenie funkcjonalności automatycznych aktualizacji klienta panelu dotykowego.
Aplikacja PAN posiada wbudowany mechanizm automatycznych aktualizacji. By działał on poprawnie, na serwerze produkcyjnym w katalogu, gdzie zainstalowano serwer Anakonda, w podkatalogu ac/pan/ powinna być zawsze umieszczana (np. za pomocą wyżej wymienionego polecenia svn co...) najnowsza wersja aplikacji PAN – stanowiąca podstawę (źródło) aktualizacji.
Przy pierwszej aktualizacji po stronie klienta (na maszynie panelu dotykowego), w katalogu gdzie zainstalowana jest aplikacja PAN, tworzone są:
plik nr_i_czas_ost_aktualizacji – można go zawsze usunąć, by wymusić aktualizację wszystkich plików aplikacji PAN (zob. niżej),
ukryty katalog .kopia_zapasowa_zrodel_PAN – nie należy go usuwać ani ręcznie modyfikować jego zawartości.
Ponadto, po stronie serwera, w katalogu gdzie zainstalowany jest serwer Anakondy, przy pierwszym uruchomieniu serwera tworzony jest ukryty katalog .aktualizacje_pan zawierający pliki pomocnicze dotyczące aktualizacji (nie należy go usuwać ani ręcznie modyfikować jego zawartości).
Aplikacja PAN (klient) inicjuje proces aktualizacji:
przy każdym starcie – wysyłając do serwera żądanie aktualizacji,
podczas pracy – wysyłając do serwera żądanie przygotowania aktualizacji, a następnie – po 30 sekundach – właściwe żądanie aktualizacji (patrz niżej).
W celu zmniejszenia zapotrzebowania panelu na zasoby systemowe (pamięć, moc procesora) oraz zminimalizowania ilości danych przesyłanych przez sieć, przygotowanie aktualizacji (a więc dokonanie koniecznych porównań w celu określenia plików do usunięcia/zamiany/dodania) jest w całości scedowane na serwer.
Dane przekazywane wraz żądaniem aktualizacji lub przygotowania aktualizacji przez aplikację PAN obejmują jedynie zawartość wyżej wymienionego pliku nr_i_czas_ost_aktualizacji – to znaczy napis: xx@yy, gdzie xx to numer ostatnio dokonywanej aktualizacji (zwanej dalej aktualizacją wyjściową), a yy to jej znacznik czasu w standardzie uniksowym (oba przesłane przez serwer przy poprzedniej aktualizacji). W razie braku pliku nr_i_czas_ost_aktualizacji żądanie zawiera napis: 0@0, oznaczający, że będzie to pierwsza aktualizacja – co oznacza, że skasowane i pobrane mają być wszystkie pliki/podkatalogi aplikacji PAN (z wyjątkiem konfiguracji i logów).
Serwer, w reakcji na żądanie aktualizacji lub żądanie przygotowania aktualizacji:
Sprawdza czy od ostatnio przygotowywanej na serwerze aktualizacji nastąpiły jakieś zmiany w przechowywanym po stronie serwera wzorcowym kodzie aplikacji PAN (w wyżej wspomnianym podkatalogu serwera ac/pan) – jeśli tak, przygotowywana jest nowa aktualizacja,
Sprawdza czy przesłany przez klienta numer i znacznik czasu wyjściowej aktualizacji odpowiada numerowi i znacznikowi czasu aktualizacji przygotowanej ostatnio na serwerze – w razie różnicy przygotowywane są i zapamiętywane przez serwer: lista plików do usunięcia oraz lista i zawartość plików do dodania/podmiany (o ile nie były już wcześniej przygotowane i zapamiętane).
Ponadto – w przypadku żądania aktualizacji – serwer: wysyła do aplikacji PAN przygotowane listy/zawartość plików do usunięcia/dodania/podmiany wraz z numerem i znacznikiem czasu dokonywanej aktualizacji.
Aplikacja PAN (klient) odbiera te listy/zawartość plików i na ich podstawie aktualizuje swój kod. W razie wystąpienia błędu podczas tej czynności, przywracany jest poprzedni stan z kopii zapasowej (przechowywanej we wspomnianym katalogu .kopia_zapasowa_zrodel_PAN), jeśli natomiast wszystko poszło dobrze, aktualizowana jest również kopia zapasowa, zaś w wyżej wspominanym pliku nr_i_czas_ost_aktualizacji zapisywany jest, otrzymany z serwera, numer i znacznik czasu dokonanej aktualizacji.
Do zastosowania aktualizacji konieczne jest przeładowanie (ponowne uruchomienie) aplikacji PAN. Przeprowadza się to w dwojaki sposób:
w przypadku aktualizacji przy uruchomieniu: aplikacja jest przeładowywana natychmiast (w sposób niewidoczny dla operatora);
w przypadku aktualizacji podczas pracy operatora: w polu statusu (u góry po prawej stronie okna aplikacji PAN) pojawia się przycisk „Zastosuj aktualizacje” – program zostanie przeładowany po jego naciśnięciu przez operatora (zalogowany operator i połączenie z serwerem będą zachowane, jednakże wyzerowany zostanie bieżący stan i zawartość pól oraz przycisków).
Domyślnie aplikacja inicjuje aktualizacje co 60 minut. Interwał ten można zmienić w wyżej opisanym pliku konfiguracji konfig.ini. Ustawienie tej wartości na 0 (zero) całkowicie wyłącza aktualizacje (również te dokonywane przy uruchamianiu programu).
By wyeliminować niebezpieczeństwo modyfikacji zawartości katalogu z podstawą aktualizacji w trakcie generowania nowej aktualizacji przez serwer, nową podstawę aktualizacji należy ładować za pomocą skryptu "zaladuj_podstawe_aktualizacji_pan.py", którego sposób użycia jest następujący: ./zaladuj_podstawe_aktualizacji_pan.py KATALOG_Z_AKTUALNYMI_ZRODŁAMI_KLIENTA_PAN lub python zaladuj_podstawe_aktualizacji_pan.py KATALOG _Z AKTUALNYMI_ZRODLAMI_KLIENTA_PAN Podstawa aktualizacji jest teraz przechowywana wraz z innymi zasobami dotyczącymi aktualizacji w ukrytym podkatalogu ".aktualizacje_pan", którego zawartości w typowej sytuacji nie należy ręcznie modyfikować. Jeżeli z jakiegoś powodu aktualizacje przestały działać (np. administrator ręcznie uszkodził źródła do aktualizacji) należy wówczas skasować katalog ”.aktualizacje_pan", a następnie uruchomić skrypt "zaladuj_podstawe_aktualizacji_pan.py" (podając jako argument katalog zawierający aktualne źródła klienta PAN, np. ../ac25/pan).