오전에 유지보수 등록 관련해서 담당하는 어드민분에게 문의드렸는데

어드민분도 정확한 규정이 없으시긴 했는데 알보고니 그분이 직접 규정을 새로 만드는 중이셨다.

 

일단은 요청자는 공백으로 두고 유지보수로 생성한 다음

해당 내용 id값을 내부 work에 기록하는 방식으로 진행하기로 했다.

 

인터페이스 매일 발송 기록에 대해서 체크하는 부분에서 비정상적으로 적은 부분에 대해 발견했고

해당 사항이 배치의 설정 문제인지 아니면 실제로 그렇게 된건지는 확인이 어렵지만

주말사이에 이렇게 이상한게 이상해서 관련 내용을 공유했고

추가 확인을 해야 하는 도중 갑자기 자바서버 확인 요청을 받아서 중단 후 자바서버쪽 확인으로 돌아갔다.

 

자바서버는 내가 개발하지 않은 부분도 이제 좀 볼만해졌는데

서버에 올라간 로그를 확인하며 어떤 부분이 문제가 되는지 빠르게 확인할 수 있었고

일단 외부에서 자바서버로 발송하는 데이터에는 이상없고 우리쪽 문제임을 파악했다.

 

내부 코드를 확인하기는 더 어려웠는데

일반적으로 자바, 클래스 파일을 같이 올려서 어떤 내용인지 확인할 수 있어야 헀지만

이번에 올라간 클래스의 경우에는 자바파일이 누락되어있기 때문에

일차적으로는 로그에 찍힌 클래스의 코드를 확인할 수 없고

이차적으로는 코드를 확인할 수 없으니 연계된 다른 클래스들이 어떤 것인지 정확한 파악이 어려웠다.

 

유지보수 마감으로 인한 완료처리 요청을 처리해준 다음 점심을 먹고 와서

일단 반영된 것 까지는 확인헀기 때문에 정상처리를 해뒀었겠거니 생각하고 넘어갔는데

막상 서버 재기동을 해도 정상적으로 처리되지 않았는데

결국 휴가중인 분의 노트북 비밀번호를 물어봐서 직접 이클립스로 파일을 확인했다.

 

문제의 원인은 서로 다른 회사를 통합해서 관리하려는 시도에 있었는데

SFDC 발송 토큰은 한번 발급받으면 재사용이 한동안 가능하기 때문에

요청 수신 시 토큰이 없는 경우에는 전달된 값으로 토큰을 생성하고

있는 경우에는 기존에 생성한 토큰(30분 정도 유지)을 사용하는 방식이었지만

안타깝게도 토큰 중복 체크 자체를 공통으로 사용하기 때문에

서로 다른 org(같은 회사 다른 sfdc org)의 토큰을 이용해 인터페이스를 발송해서

영 상관없는 org쪽으로 발송하는 문제가 발생했던 것이었다.

 

원인을 파악하고 나서는 사실 그냥 생성하듯 분리만 해주면 되는 부분이라 쉽게 해결되었는데

원인을 파악하는 과정도 나쁘지 않은 경험이었다.

 

이후 미발송 관련 로직을 다시 확인해보니

요청은 1, 7 상태값인 경우 발송해달라는 일배치였지만

배치가 발송될 시점에 1이 아니라 2, 3 등 다른 값인 경우 발송되지 않고

다시 조회하는 시점에는 상태값들이 변경되니 1 또는 7이 많이 보여서 발송해야 했지만 아닌 것 처럼 보였고

LastmodifiedDate를 기준으로 확인하니 전부 오늘 오전~오후에 수정된 것을 볼 수 있었다.

 

결론적으로 1에서 발송되지 않고 넘어가버리게 되면

그 이후 로직을 타더라도 전송되지 않은 상태로 유지되며

한참 지연 후 또는 방치된 후 최종 상태에 가서 발송되거나

실제로는 1 또는 7에서 발송되었지만 취소된 경우에도 취소되었다는 정보가 발송되지 않기 때문에

정보 누락에 대한 걱정이 되었지만 요청받은 사항 그대로 구현된 것이라 어쩔 수 없었는데

내부적으로도 이건 문제가 많을 것 같다는 의견이 나와서 결국 담당자들을 태그해서 문의 메일을 발송했다.

 

문의 메일 발송 후 얼마 되지 않아서 해당 로직이 맞다는 단순한 답변이 넘어왔는데

왜 그렇게 이용하는지는 모르겠지만

생각해보면 SFDC가 주 처리 경로고 수신처는 그냥 정보를 쌓아둔다는 가정 하에는

진행완료되지 않은 정보를 쌓아둘 필요는 없을 수 있겠다는 추측만 하고 넘어갔다.

 

퇴근하려고 정리하던 중

팀원분에게 파일 전송 관련 문의가 들어와서 확인해봤는데

heap size가 6MB 제한이기 때문에 전송되지 않는 부분에 대해서 협업하는 개발자분이 모르셨던 것 같고

결론적으로는 자꾸 트랜잭션 자체가 터져버려서 로그도 찍히지 않는 문제가 발생했던 것 같다.

 

heap size 문제가 맞는지 용량별 파일을 준비해서 발송 후

이 부분에서 apex를 통해 파일을 로딩하는 과정이 숨어있다는 것을 확인했고

대안으로 가능한 부분들을 전달드린 다음 6시 50분쯤 마무리하고 퇴근했다.

 

(1).백준 24072번 帰省 (Homecoming)는 귀성길 일정이 예정되었을 때

만날 수 있는지 여부를 1, 0으로 출력해야 하는 문제로

처음에는 단순히 a~c 사이에 b가 있는지 체크했지만

b는 오후였고 a, c는 오전 기준이었기 때문에 a는 초과가 아닌 이상으로 변경한 후 해결할 수 있었다.

const [a,b,c] = `2 5 2`.split(' ').map(Number)

console.log(((a <= c) && (c < b)) ? 1 : 0)

'회고' 카테고리의 다른 글

[개발일지] - 645  (0) 2025.04.09
[개발일지] - 644  (0) 2025.04.08
[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641(주말)  (0) 2025.04.05
[개발일지] - 641  (0) 2025.04.04

+ Recent posts