운영서버에 간헐적으로 CPU 사용량이 100%가 되어 내려오지 않는 현상이 발생하였고 몇주동안이나 원인을 찾지 못하다가 

우연히 서버에 CSV 파일을 업로드하다 무한루프가 있음을 발견하였다.


CSV 한 행에서 열의 갯수가 3개 이하일 경우 3개로 맞춰주는 부분을 아래와 같이 while문을 통해 작성하였는데,


String [] row = getRows(); // csv 파일의 한 행을 String [] 형태로 반환한다;
while(row.length != 3) // 
   Arrays.append(row,"");


열의 갯수가 3보다 큰 경우를 고려하지 않아서 열의 갯수가 3보다 큰경우의 무한루프에 빠지게 되었다.

조건문을 수정하여 row.length != 3 -> row.length <3  문제는 해결 하였지만 


기본적인 부분에서 테스트 미흡 , 무한루프를 고려하지 못한점이 많이 아쉽다.



요약


원인 : while문을 사용할때 잘못 된 조건문 사용

해결 : 조건문 수정 / while 문사용시 무한 루프 고려 및 테스트 철저히

+ Recent posts