public class PriceMessageBlockingQueue implements MessageQueue<PriceMessageProduceEvent, CryptoCoin> {
private HashMap<String, PriorityQueue<CryptoCoin>> priceHashMapPriorityQueue = new HashMap<>();
테스트를 통해 발견된 에러 처리 1
private int getCoinsIndex() {
return coinsIndex.getAndAccumulate(
1,
(current, update) -> {
if (current < coins.size() - 1) {
return current + update;
}
return 0;
});
}
thread-safe 하지만 인덱스가 넘어가는 부분을 수정.
PriceApiRequestFailureEventListener 변경
if (!isFailure) {
failureCount.decrementAndGet();
failureCount.compareAndSet(-1, 0);
}
if (failureCount.get() == maxFailures) {
log.error("Price request module reached max failures");
// TODO : 가격데이터를 불러올 수 없으므로 거래를 진행할 수 없어 거래 등록 서비스가 중지되게 해야함
return;
}
if (isFailure) {
failureCount.incrementAndGet();
}
이슈 개요
price 모듈이 thread-safe 테스트를 작성합니다.
재현 단계
작성 테스트 코드
예상 동작
테스트 코드의 동작
실제 동작
테스트 코드의 동작
추가 정보
Non-Thread-safe 자료구조 사용시 테스트 결과
테스트를 통해 발견된 에러 처리 1
thread-safe 하지만 인덱스가 넘어가는 부분을 수정.
PriceApiRequestFailureEventListener 변경