public 테이블 inDate 불일치 및 TransactionWriteV2 오류 발생 문의

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

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

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

  • 뒤끝 SDK 버전 :
  • 프로젝트명 : MonsterLegends
  • 스테이터스 코드 :
  • 에러 코드 : 404
  • 에러 메시지 : gameInfo not found, gameInfo을(를) 찾을 수 없습니다.

안녕하세요.
뒤끝 서버에서 public 테이블 데이터를 업데이트하는 과정에서 오류가 발생하여 문의드립니다.

문의 내용

  1. inDate 값 불일치 현상
  • 콘솔에서 확인한 public 테이블의 inDate 값과
    클라이언트에서 TransactionReadV2를 통해 조회한 inDate 값이 서로 다릅니다.
  • 동일한 key 기준에서도 일관되지 않은 inDate 값이 확인됩니다.
  1. 데이터 저장 실패 및 오류 발생
  • 2025년 6월 5일부터 Backend.GameData.TransactionWriteV2 호출 시 다음과 같은 에러가 발생합니다:
StatusCode : 404  
ErrorCode  : NotFoundException  
Message    : gameInfo not found, gameInfo을(를) 찾을 수 없습니다.
////////////////////////////////////////
// 조회
Backend.GameData.TransactionReadV2(transactionList, callback =>
{
    if (callback.IsSuccess())
    {
        var resultJson = callback.GetFlattenJSON()["Responses"];
        for (int i = 0; i < resultJson.Count; i++)
        {
            string key = keys[i];
            string inDate = resultJson[i]["inDate"].ToString();
            serverTableInfoDic[key] = inDate;
        }
    }
});

////////////////////////////////
/// 저장
foreach (var kv in playerDataDic)
{
    string key = kv.Key;
    Param param = new Param().Add(key, LitJson.JsonMapper.ToObject(kv.Value));

    if (serverTableInfoDic.TryGetValue(key, out var inDate))
    {
        transactionList.Add(TransactionValue.SetUpdateV2(key, inDate, Backend.UserInDate, param));
    }
}

Backend.GameData.TransactionWriteV2(transactionList, callback =>
{
    if (!callback.IsSuccess())
    {
        Debug.LogError($"TransactionWriteV2 실패: {callback.GetMessage()}");
    }
});

확인 부탁드립니다.
감사합니다.

안녕하세요 개발자님,
프로젝트 정보가 확인되지 않아 문의에 답변이 불가합니다.
프로젝트 정보를 포함하여 문의해주세요.

좋아요 1

안녕하세요.
늦은 시간에도 빠르게 회신 주셔서 감사합니다.

문의 관련하여 아래와 같이 프로젝트 정보를 추가로 전달드립니다:

  • 프로젝트명: MonsterLegends
    확인 부탁드리며, 다시 한 번 감사드립니다.
좋아요 1

추가 정보

public 타입의 테이블에서 다른 계정의 inDate 값으로 보이는 "2025-06-05T09:33:46.151Z" 값이 반환 되고 있습니다.
여러 계정으로 테스트한 결과, 오직 public 타입의 테이블만 동일한 inDate 값(2025-06-05T09:33:46.151Z)을 반환하고 있습니다.

확인 부탁드립니다.
감사합니다.

우선 남겨주신 코드상 트랜잭션 쓰기는 조회된 row inDate를 통해 해당 row를 수정하는것으로 보이나,
Backend.UserInDate 정보를 봐서는 자신의 데이터를 수정하도록 구성한 것으로 확인됩니다.

하지만 트랜잭션 조회를 통해 조회된 데이터가 타 유저의 inDate여서 트랜잭션 쓰기가 실패하고 있는 상황입니다.

위코드에서 트랜잭션 쓰기가 성공하기 위해서는 inDate가 요청하는 유저의 row inDate 정보가 들어가거나,
Backend.UserInDate 대신 row inDate의 소유 유저의 owner InDate가 들어가야합니다.

트랜잭션 조회에 사용되는 트랜잭션 리스트도 공유가 가능하실까요?
현재 트랜잭션 조회는 특정 유저 혹은 조건에 따라 조회하지 않고 가장 최근 생성된 row 데이터를 조회하는 것으로 예상됩니다.

좋아요 1

안녕하세요.
답변해주신 내용 기반으로 문제를 해결했습니다.

TransactionReadV2 호출 시 public 테이블에서 타 유저의 inDate가 반환되던 원인은,
조회 조건 없이 요청했기 때문이었습니다.
( 그동안 문제가 발생하지 않았던 이유는, 최근에 생성된 계정으로 public 테이블을 테스트했기 때문으로 보입니다.)

아래와 같이 owner_inDate 조건을 명시하여 본인 데이터만 조회하도록 수정한 후,
TransactionWriteV2도 정상 동작하는 것을 확인했습니다.

List<TransactionValue> transactionList = new();
foreach (var key in keys)
{
    // public 테이블은 여러 유저가 공유할 수 있으므로
    // 반드시 owner_inDate 조건을 명시하여 본인 데이터만 조회하도록 한다
    Where where = new Where();
    where.Equal("owner_inDate", Backend.UserInDate);

    // 조건을 포함한 Get 요청 생성
    transactionList.Add(TransactionValue.SetGet(key, where));
}

빠르고 정확한 피드백 정말 감사드립니다!
같은 문제 겪는 분들께도 도움이 될 수 있을 것 같아 공유드립니다.

좋아요 1