NegativeArraySizeException 관련

분산/병렬 프로그램 만들다 보니 전혀 재현 불가능한 에러도 발생합니다. 오늘 발생한 에러는 거의 재현하기 불가능할 것 같습니다.

코드는 다음과 같습니다.

class Test {
    TreeSet<String> values = new TreeSet<String>();
    
     //이부분이 Multi client로부터 접속되는 코드
     public void exec() {
        values.add(...);
        ...
        //다양한 조건을 이용하여 valus add, remove
        List<String> temp = new ArrayList<String>();
        temp.addAll(values);
     }
}

원래는 Test하는 코드의 exec를 호출하는 것은 앞단에서 하나의 클라이언트만 접속하게 되어 있었는데 이 부분에 약간 잘못이 있어 동시에 접속되는 상황이 발생한 것 같습니다.
예외는 다음과 같이 발생했습니다.

java.lang.NegativeArraySizeException
        at java.util.AbstractCollection.toArray(AbstractCollection.java:119)
        at java.util.ArrayList.addAll(ArrayList.java:472)

AbstractCollection 소스를 보니 TreeSet의 size()에서 반환되는 값이 0 보다 작은 경우에만 이런 예외가 발생하게 되어 있습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/254

Leave a comment
« Previous : 1 : ... 176 : 177 : 178 : 179 : 180 : 181 : 182 : 183 : 184 : ... 388 : Next »