AtoM에서 인수기록의 기증자/이관 단체 영역 전거 연결시 500 서버 에러 발생시 참고

edited August 2016 in AtoM
한국국가기록연구원의 정미리 선생님께서 문의하신 AtoM 관련 문의사항(http://osasf.net/discussion/431/문의1-20160725)에 대한 답변입니다.
문의하신 에러는 AtoM 2.2.0 버젼에서 발생하는 버그로 확인되었습니다.
현재 기관이나 단체, 학교 등에서 2.2.0 버젼의 AtoM을 사용하시는 이용자분들도 해당 사항이 있으므로 본 게시글을 꼭 참고하시기 바랍니다.

2.2.0 버젼의 AtoM에서 인수기록 편집모드의 기증자/이관단체 영역에서 자동완성 기능으로 기증자 전거 연결 후 저장시 갑자기 500 Internal Server Error가 발생하는 것을 볼 수 있습니다.
이는 AtoM 2.2.0 버젼의 버그로 AtoM 개발사의 이슈리스트 중 Bug #9027에 버그 관련 정보를 공지하고 있습니다(https://projects.artefactual.com/issues/9027)
다행히도 상위 버젼인  2.2.1 버젼에선 해당 버그를 해결하여 배포하고 있습니다.

# AtoM v.2.2.0의 이슈리스트 중 Bug #9027 정보
image
image


아래의 캡쳐 이미지는 인수기록 편집 모드 화면인데 기증자/이관 단체 영역(Donor/Transferring body area)에서 관련 기증자(Related donors)를 Add new로 추가한 후 저장하면 500 서버 에러가 발생하는 것을 볼 수 있습니다.

# 인수기록 편집 모드 화면
image

# 관련 기증자 전거 연결 화면
image

# 전거 연결 후 인수기록 편집 모드 저장시 출력되는 에러 화면
image

# 에러 화면을 디버그 모드(Debug Mode)로 출력한 화면
image

본 에러는 인수 기록 추가 모드와 기존의 인수 기록 수정 모드에서 기증자/이관 단체 영역 편집시 일어나고 있습니다. 직접 테스트해본 결과 관련 기증자 선택시 기존에 이미 등록되어 있는 기증자를 선택하는 경우에 처음엔 잘 불러오는 듯 싶지만 편집 모드를 저장하는 순간 에러가 발생했습니다.
하지만 기증자 선택시 자동 완성으로 나타나는 기존에 등록된 기증자가 아닌 신규 기증자 이름을 입력하고 저장하는 경우에는 에러가 발생하지 않았습니다.
물론 기증자/이관 단체 영역 편집에서 관련 기증자를 추가하는 일은 이미 등록된 기증자를 대상으로 하는 경우가 대부분이므로 본 에러는 상당히 심각한 에러라고 할 수 있습니다.

AtoM 개발사(Artefactual Systems Inc)의 소프트웨어 엔지니어인 Jesus Garcia Crespo의 코멘트에 따르면 해당 에러(exception)의 발생 위치는 AtoM의 Accession(인수) 관련 플러그인인 qtAccessionsPlugin의 컴포넌트 중 AccessionRelatedComponent 또는 RelationEditComponent 컴포넌트에서 발생하는 것으로 보고 있습니다(출처 : https://groups.google.com/d/msg/ica-atom-users/OhoorWVdTFc/W0Y2aaivBAAJ).

특히 이 문제는 AtoM의 자동완성(autocomplete) 필드의 기능상의 문제에서 기인한다고 지적하고 있습니다.
앞서 설명드렸듯이 인수 기록 폼에서 기증자를 기존 기증자가 아닌 새 기증자 이름을 입력하는 경우엔 자동완성 기능이 사용되지 않고 사용자가 기증자에 대한 정보를 하나씩 입력하는 방식을 사용해야 합니다. 이 경우에는 인수 기록 폼 저장시 위와 같은 에러는 발생되지 않았습니다.

하지만 기존에 이미 등록해두었던 기증자 정보를 불러오는 경우 인수 폼은 자동으로 <iframe> 요소를 사용해서 해당 기증자 페이지의 정보를 그대로 가져오는데 이를 가져와서 저장하는 과정에서 서버가 예외처리할 수 없는 이벤트가 발생되는 것으로 보입니다.

정상적이라면 사용자가 기증자 전거 정보를 자동 완성으로 불러온 후 인수기록 폼을 저장하면 해당 Request에 대해 서버가 바로 응답해야 정상적으로 정보가 저장되는데, 자동완성 기능을 통해 임베드한 폼에 대해 서버가 정상적인 Request라고 판단하지 않고 이에 대해 응답하지 않는 과정에서 서버 에러가 발생되는 것으로 보고 있습니다.

그렇다면 이 문제를 해결하는 방법은 다음과 같이 두 가지로 구분할 수 있을 것 같습니다.
[방안 1] 현재의 AtoM 버젼을 상위 버젼으로 업그레이드
참고로 AtoM 업그레이드는 1.x 버젼에서 업그레이드 하는 경우가 아닌 2.x 버젼에서 업그레이드 하는 경우 그리 어렵지 않게 수행할 수 있으므로 크게 문제가 될 사항은 없습니다.

[방안 2] 현재의 AtoM 버젼의 qtAccessionsPlugin을 상위 버젼의 플러그인으로 변경
참고로 이 방법은 사용해본 적이 없으므로 현재의 AtoM 버젼을 유지해야 되는 경우에는 매우 신중하게 수행해야만 합니다. 이 경우 가급적 AtoM 2.2.0 인스턴스를 하나 생성한 후 상위 버젼에서 해당 플러그인만 갖고 와서 테스트한 후 인수 기록 폼 실행에 에러가 발생되지 않는 것을 반드시 확인한 후에 자관의 AtoM에 적용하는 것을 추천드립니다.


Sign In or Register to comment.