Update 비동기 처리 문제에 대해 문의드립니다.

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.9.3
  • 프로젝트명 : 땅파서 돈벌기
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

문제 상황

  1. 게임 레벨(씬) 변경될 때마다 Update 비동기 처리(게임 데이터 저장)을 수행합니다.
  2. 저장되는 데이터 중 부분 누락됩니다.

스크린샷에 대해 설명드리면, Long 데이터 Gold가 클라이언트의 값과 Backend 서버에 저장되는 값이 서로 다릅니다. 가끔 1값 만큼 차이나긴 하지만, 심한 경우 0으로 초기화됩니다.

혹시 Instruction 실행 관점으로 살펴볼 때, 비동기라 Race Condition이 일어나기 때문인가요?
이유를 모르겠네요 ㅜㅜ

1
2


안녕하세요 개발자님,
관련 내용 상세히 확인하여 안내드릴 수 있도록 하겠습니다.

랭킹 함수에서 데이터가 16자리 넘는 경우 문제가 발생하는지 여러 테스트를 진행해보았으나, 이상은 확인되지 않았습니다.

비동기 함수를 호출하는 경우

  1. 데이터 생성
  2. 데이터 삽입
  3. 데이터 로그 확인

위 순소대로 한 함수안에 로직을 구성하더라도

  1. 데이터 생성
  2. 데이터 삽입 호출
  3. 데이터 로그 확인
  4. 데이터 삽입 완료

위와 같은 순서대로 가고,
AsyncPoll로 인해 한 프레임씩 늦게 호출될 수 있어서 만약 초기화 로직이나 이후에 데이터가 수정된다면 수정되기 전에 호출했던 함수에도 영향이 갈 수 있습니다.
혹, 위 안내드린 것과 같이 진행될 수 있는 구성이 있는지 검토해 주시면 감사하겠습니다.

답변 감사합니다! 저는 데이터 삽입 후 로그 확인이 되는 줄 알았는데 아니었군요.
한 달에 한 번 정도 한 유저의 데이터가 절반 이상이 Dummy 데이터로 초기화 되는 현상도 있던데, 그것도 위 문제랑 비슷한 것 같네요.

한번 비동기 처리 중에 데이터가 수정되는 부분이 있는지 확인해보겠습니다.
답변 감사합니다.

좋아요 1