Dictionary Update 오류

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

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

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

  • 뒤끝 SDK 버전 : 5.9.2
  • 프로젝트명 : The Dust
  • 스테이터스 코드 : 200
  • 에러 코드 : x
  • 에러 메시지 : x

안녕하세요.
저장이 안되는 버그가 있어서 문의드립니다.

트랜젝션을 통해서 UpdateV2로 저장을 시도하고 있습니다.
디버깅을 해보면 분명 코드가 들어갔고, param도 잘 들어갔습니다.

그런데 콘솔을 보면 저장이 안되어 있습니다.

다른 테이블은 잘 저장되는데 일부 테이블이 저장이 안됩니다.

저장 안되는 테이블 : SkillInfo, SkillEquipInfo

  • 저장 시도한 데이터
  • Dictionary<string, int> 형태.

Key = D1, Value = 1

동일한 형식의 다른 테이블은 저장이 됩니다.

  • 저장되는 테이블 : GachaInfo

Key: “Skill”, Value = 7

이럴 땐 어떤 부분을 확인해야 하나요…?

안녕하세요 개발자님,
남겨주신 말씀에 정보 확인 시 트랜잭션 요청이 실패한 내역이 확인됩니다.
SkillInfo, SkillEquipInfo 테이블로 진행되는 요청에 대해서
inDate 또는 where절 정보가 잘 구성되어 있는지 확인하여 주시면 감사하겠습니다.

inDate 저장 형태를 사용중입니다.

디버그로 찍어보니 콘솔에 있는 inDate와 일치합니다.

111
222

코드는 아래와 같이 사용중입니다.

// 트랜젝션 리스트에 추가
transactions.Add( TransactionValue.SetUpdateV2( EGameData.SkillInfo.ToString(), UserManager.Ins.skillInfo.indate, UserManager.Ins.userIndate, UserManager.Ins.skillInfo.FormatJsonData() ) );
// …중략
SendQueue.Enqueue( Backend.GameData.TransactionWriteV2, transactions, callback =>
{
if( callback.IsSuccess() == false )
{
OnSaveData.OnNext( false );
Debug.LogErrorFormat( “Save Error : {0}”, callback.GetMessage() );
return;
}

OnSaveData.OnNext( true );
} );

해당 요청과 관련해 성공 요청으로는 확인되지 않고 트랜잭션 요청 실패 기록만이 확인되고 있는데요,
정확한 확인을 위해 처리부분을 try catch 해 공유해주시면 감사하겠습니다.

또한 요청 전과 후에도 inDate로 설정된 값이 정상적으로 할당되어있는지 확인해주시면 감사하겠습니다.

try {
transactions.Add( TransactionValue.SetUpdateV2( EGameData.SkillInfo.ToString(), UserManager.Ins.skillInfo.indate, UserManager.Ins.userIndate, UserManager.Ins.skillInfo.FormatJsonData() ) );
Debug.Log(UserManager.Ins.skillInfo.indate);
Debug.Log(UserManager.Ins.userIndate);
}
catch(Exception e) {
Debug.LogError(e);
}

try {
Debug.Log(UserManager.Ins.skillInfo.indate);
Debug.Log(UserManager.Ins.userIndate);

if( callback.IsSuccess() == false )
{
OnSaveData.OnNext( false );
Debug.LogErrorFormat( "Save Error : {0}", callback.GetMessage() );
return;
}

OnSaveData.OnNext( true );

} catch(Exception e) {
 Debug.LogError(e)
}

추가해보니 에러가 발생합니다.
안내주신 대로 inDate 에러 메시지가 나옵니다.

System.Exception: inDate and where is null

디버깅으로 보면 분명 inDate값이 괜찮은데…
혹시 몰라 유저 inDate (owner_inDate)도 확인해보니 콘솔에 있는 것과 일치합니다.

===== 수정 =======
수정된 글을 이제야 봐서 inDate 값도 확인해보겠습니다.

트렌젝션 List에 add할때와 Write할때 값이 일치합니다.

조금 더 확인해보니 해당 테이블 말고도 다른 테이블들도 다 그러네요…
분명 전부 괜찮았는데 어느 순간부터 이러는거 같습니다.

다른 테이블들도 다 indate 확인해보았는데 indate값은 문제 없습니다.

좋아요 1

현재 내부에서 지속적으로 테스트를 진행하고 있으나,
재현이 되지 않아 안내에 어려움이 있는 상황입니다.

유저와 데이터가 고정된다는 가정하에,
skillInfo.INS.indate 에 있는 값을 string으로 빼서 인지값으로 사용해 테스트해 주시면 감사하겠습니다.

transactions.Add( TransactionValue.SetUpdateV2( "SkillInfo", "2023-03-14T10:53:07.194Z, "유저 inDate", UserManager.Ins.skillInfo.FormatJsonData() ) );

안녕하세요.
모든 코드를 확인해보니 해당 테이블이 문제가 아니라 다른 테이블에서 inDate값이 잘못되고 있는 것을 확인했습니다.
List 복사가 되면서 얉은 복사가 되면서 문제가 있었습니다.

도움 주셔서 너무 감사합니다.

좋아요 1