14.10.20202 min

Redakcja Bulldogjob

Nowe narzędzie naprawi zawieszanie się programów Javy i nie tylko

Badacze z North Carolina State University oraz IBM Research stworzyli narzędzie do automatycznej naprawy błędów, powodujących zawieszanie się programów lub całych systemów.

Nowe narzędzie naprawi zawieszanie się programów Javy i nie tylko

Naukowcy z North Carolina State University oraz IBM Research opracowali narzędzie o nazwie HangFix, który może automatycznie naprawić większość wzorców w kodzie, które sprawiają, że programy się zawieszają. Jingzhu He, Xiaohui Gu i Guoliang Jin z North Carolina State oraz Ting Dai z IMB Research przedstawią na AMC Symposium on Cloud Computing w przyszłym tygodniu pracę naukową na temat tego, jak ich wynalazek może załatać Java bytecode, który doprowadza do zawieszania się aplikacji w środowisku chmurowym. 


Obiecujące narzędzie

Wyżej wspomniani naukowcy twierdzą, że prototyp programu HangFix został już zaimplementowany. Jego twórcy utrzymują, że zbadali reprodukcje 42 prawdziwych błędów, polegający na zawieszeniu się JVM, w 10 szeroko używanych usługach chmurowych (np. Cassandra, HDFS, Mapreduce, czy HBase) - ich program naprawił 40 z nich w ciągu kilku sekund. Naprawa takich bugów zazwyczaj zajmuje developerom kilka dni i, co gorsza, trzeba to robić ręcznie.

Przy pozostałych dwóch błędach trzeba było trochę więcej pogrzebać i to przy pomocy innych programistów. Niemniej jednak powyższy wynik i tak jest bardzo obiecujący. 

Według twórców HangFix jest w stanie rozpoznać aż 76% ze wszystkich 237 błędów, które do tej pory zidentyfikowano. Twórcy mówią, że reszta bugów dotyczy głównie współbieżności i synchronizacji, które można rozwiązać przy pomocy innych narzędzi do tego przeznaczonych. 


HangFix w kodzie

Nowe narzędzie skupia się na 4 wzorcach, które mogą spowodować zawieszenie się systemu/programu. Są to:

  • Nieoczekiwane pojawienie się wartości zwracanych funkcji w pętlach
  • Niepoprawnie skonfigurowane parametry w pętlach
  • Niewłaściwa obsługa wyjątków w pętlach
  • Blokowanie operacji, które nie zawierają pętli.



Zawieszanie się programów

Twórcy narzędzia utrzymują, że błędy doprowadzające do zawieszania się programów są trudne do odnalezienia, ponieważ nie produkują zazwyczaj zbyt dużo informacji diagnostycznej. Ciężko jest też je odnaleźć podczas testów, ponieważ są one wynikiem deformacji danych związanych z uruchamianiem programu lub problemów w wewnętrznej komunikacji, które dają o sobie znać na produkcji.

Błędy powodujące zawieszanie się programów różnią się od bugów, które powodują crash, tym, że są po prostu frustrujące i spowalniają pracę, powodując przerwy w działaniu całych serwerów.


Koszty

Zawieszenie się programu lub systemu może być dosyć drogie. Outage usług dla British Airways z 2017 roku kosztował firmę około 80 milionów funtów. Bug, który to spowodował, pojawił się po deformacji danych spowodowanych przez awarię w centrum danych. 

Innym przypadkiem jest pięciogodzinny outage Amazon DynamoDB z 2015 roku, który zawiesił m.in. Netflixa, Tindera, czy portal filmowy IMDb. A wszystko przez bug, który był rezultatem złej obsługi błędów, co obciążyło serwer metadanych zbyt wieloma żądaniami.


Co dalej?

Xiaohui Gu, jeden z twórców HangFix, mówi, że narzędzie ma zostać oficjalnie wydane jako open source na GitHubie. Warto tutaj jeszcze zaznaczyć, że zostało ono zaprojektowane z myślą o Javie, ale będzie go można używać z innymi językami programowania, według tego, co mówi Gu. 

<p>Loading...</p>

Dziel się wiedzą ze 160 tysiącami naszych czytelników

Zostań autorem Readme

Simple SA

Java Developer (Mid/Senior)

medium

7 000 - 15 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
JavaSpringSpring Boot

Sapiens Software Solutions Poland Sp. z o.o.

Java Developer

medium

Znamy widełki

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Bardzo dobrze
JavaJava script

Lottomerkury

Tech Lead (Java)

senior

Brak widełek

Kontrakt B2BUmowa o pracę

Warszawa

Praca zdalna 100%

Ważna do 25.02.2022

Bardzo dobrze
Java
Dobrze
SpringHibernatePostgreSQL

Euvic Services

Tech Lead Java Developer

senior

Brak widełek

Kontrakt B2B

Praca zdalna 100%

Ważna do 25.02.2022

Bardzo dobrze
Java

DataArt

verified

AEM Backend Developer

medium

Do 21 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 25.02.2022

Dobrze
JavaAEM

Transition Technologies PSC S.A.

Junior IoT Specialist

junior

3 200 - 5 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 25.02.2022

Dobrze
JavaJavaScriptCSS

Transition Technologies PSC S.A.

Junior IoT Specialist (Java&JS)

junior

3 200 - 5 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 25.02.2022

Dobrze
JavaSQLJavaScript

Netcompany Poland Sp. z o.o.

Junior Java Developer

junior

6 500 - 8 500 PLN

Umowa o pracę

Warszawa

Ważna do 25.02.2022

Początkująco
JavaSpring BootSQL

Accenture Polska

Android Engineer (Java/Kotlin)

medium

Brak widełek

Umowa o pracę

Wrocław

Ważna do 25.02.2022

Dobrze
Java/Kotlin Android SDK

Future Processing

Tech Lead Java

senior

12 300 - 26 500 PLN

Kontrakt B2BUmowa o pracę

Gliwice

Praca zdalna 100%

Ważna do 25.02.2022

Bardzo dobrze
Java