| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- integer
- Tomcat
- 스레드
- 삼성증권
- API
- 톰캣
- 영상편집
- Linux
- equals
- Docker
- MariaDB
- 컨트롤러
- JDBC
- java
- 안드로이드 스튜디오
- 오블완
- 티스토리챌린지
- wsdl
- MySQL
- http
- HTML
- oracle
- ibatis
- 키보드
- cmd
- letterspacing
- 스레드 덤프
- Database
- 프로세스
- START WITH
- Today
- Total
블로그 이름
[이슈해결] 필드명 초기화 이슈 해결 본문
임시저장된 글을 보니 날짜가 2023-12-20... 오래된 순으로 정리하고 있는데 많이 밀렸다. 시간 날 때 하나씩 정리해야겠다.
당시에 특정 페이지 저장 시, 변수 하나가 초기화되는 이슈가 존재하였다.
이슈 재현 방법은 클라이언트에서 자산정보를 올린 뒤, 서버에서 해당 자산을 조회하여 페이지 조회 하면 한개 변수가 안보이는 현상이었다.
● 이슈 정리
1. 이력 확인 시, 특정 변수 변경점이 조회되지 않음
2. 페이지 목록 조회 시, 특정 변수가 표시되지 않음
> DB에는 데이터가 있는 상태이고 웹에서도 변수 seq를 잘 받아온다.
● 원인 파악
1. 해당 필드를 표시하는건 표시용 모델 객체에서 캐시로 조회하는걸 확인
2. 캐시를 갱신하는 부분을 모두 파악한다. 캐시는 톰캣 시작 시, 해당 필드 추가/변경/제거 시 전체 갱신한다.
3. 클라이언트 인증 시 데몬에서 필드명을 추가하는데 이 때 캐시갱신을 하지 않는다.
4. 캐시에 필드명이 존재하지 않아 웹에서 필드명을 표시하지 못하고 있다.
5. 자산 저장 시 필드명을 어떻게 보내는지 확인한다. 변경전 자산은 seq가 잘 들어가 있으나 변경후 자산은 0으로 전송한다.
6. 프론트의 어디에서 자산을 0으로 초기화하는지 확인한다.
(여기서 좀 헤멤)
7. 프론트에서 캐시 갱신 후 자산을 저장하면 이슈가 재발하지 않는 것을 확인
8. 자산의 필드명이 표시되지 않아 seq를 0으로 초기화하여 저장할 것이라 판단 후 해당 부분 코드 확인
9. 모델명 표시는 컴포넌트를 사용하는데, input으로 seq를 받고 필드명 목록에서 seq로 name을 검색한 뒤, output으로 name의 seq를 반환한다.
10. 때문에 기존 자산을 조회 할 때 올바른 seq로 필드명 캐시목록에서 조회하지만 캐시에서 찾지 못해 0을 반환하게 되고,
자산 저장 시 반환한 0을 저장하게 되어 모델명이 초기화 되는 것
● 조치 방안
클라이언트에서 필드명을 신규 추가 할 때 insert 후 캐시 갱신을 하지 않아 발생하는 것으로,
서버에서 DB에 필드명 추가 후 웹서버로 API를 보내 추가한 필드명을 웹캐시에 추가하도록 한다.
당시엔 문제 이해부터 원인 확인 방법 및 분석, 조치까지 한사이클을 모두 배울 수 있는 좋은 경험이 됐었다.