압축데이터 오류 문의

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

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

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

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

펑션쪽에서 트랜잭션을 이용하여 데이터를 insert하는 코드를 작성하고 테스트 중에 발생한 문제입니다.
var writeTransactions = new List();
writeTransactions.Add(TransactionValue.SetInsert(“UserSystemData”, UserSystemDataParam.Get()));
writeTransactions.Add(TransactionValue.SetInsert(“UserProfile”, UserProfileParam.Get(nickName)));
writeTransactions.Add(TransactionValue.SetInsert(“UserGameData”, UserGameDataParam.Get()));
writeTransactions.Add(TransactionValue.SetInsert(“InventoryData”, InventoryParam.Get()));
var bro = Backend.GameData.TransactionWriteV2(writeTransactions);
if (!bro.IsSuccess())
ReturnObject.Error(bro.ErrorCode);
return ReturnObject.Success(bro.ToString());
코드는 대충 이런 식으로 작성했고

오류 내용은 아래와 같습니다.
StatusCode : 400
ErrorCode : BadParameterException
Message : bad compressed dataType must string, 잘못된 compressed dataType must string 입니다

내용을 보니 압축데이터 관련 문제인거 같은데
InventoryData만 딱 압축데이터 컬럼을 사용중이여서 InventoryData 하나가 문제인거 같습니다만
insert할때 컬럼명도 콘솔에 명시한대로 똑같이 작성하여 추가했는데도 이러네요 뭐가 문제일까요?
추가로 이 오류가 IsSuccess가 true일때 발생하던데 이건 의도된건가요?
오류 처리할때 좀 불편한거 같습니다.

안녕하세요 개발자님,
문의해주신 내용 상세 확인하여 안내드릴 수 있도록 하겠습니다.

기다려주셔 감사합니다.
담당부서를 통해 확인 시 비동기로 TransactionWriteV2를 호출하여 사용 시에는 문제가 발생하지 않고
동기로 호출해서 사용하는 경우 말씀해주신 에러가 발생하는 것으로 확인하였습니다.

또한 펑션을 사용하게되면 펑션 내부에서 발생하는 에러와는 관계없이 InvokeFunction에 대한 성공 여부만이 확인되어서 리턴값으로 IsSuccess가 true로 전달되고 있습니다. 참고하여 주시면 감사하겠습니다.

트랜잭션 호출 에러 관련하여서는 빠르게 수정하여 적용될 수 있도록 하겠으며, 수정 업데이트 후 해당 게시물에 추가 회신 드릴 수 있도록 하겠습니다.
이용에 불편을 드려 죄송합니다.

좋아요 1

안녕하세요 개발자님,
문의해주셨던 트랜잭션 쓰기 과정의 오류가 SDK 5.18.1 버전 업데이트를 통해 해결되었습니다.
감사합니다. :D

좋아요 1

추가 안내드립니다.
펑션도 해당 업데이트에 맞춰 1.0.2 버전이 업데이트되었으니 확인 이용해 주시면 감사하겠습니다.

좋아요 1

안녕하세요 압축데이터 설정에 대한 건에 대해 답변 주시기 전 까지 비정의 스키마로 사용하다가
이번에 생각나게 되어 다시 적용하고 확인해본 결과
똑같은 결과가 나왔습니다.
그런데 처음 문의 했을때는 생각을 못했는데
이번에 다시 보니 그냥 압축 데이터의 경우 string으로 만 저장 해야 되는거 같더라고요. 맞을까요?
맞다면 list나 dictionary를 한번 json화 한 다음 저장하는 방식인가요?

답변 어려우실까요? int, float, string, List, Dictionary를 지원한다고 해서 Dictionary 원본으로 넣었으나 되지 않아
json화 해서 string으로 저장했는데 되긴 했으나 콘솔이랑 로그에서 @@@로 나오던데
문서만 보고는 개인적으로 이해가 좀 어려워서요 ㅠ 압축데이터 컬럼에 대한 자세한 사용법을 알고 싶습니다.

안녕하세요 개발자님,
답변이 지연되어 죄송합니다.
확인 시 압축데이터 컬럼을 동기 방식 트랜잭션 쓰기 호출시에도 이상없이 호출이 이루어짐을 확인하였습니다.
또한 압축데이터 컬럼은 string만 허용하는 것이 아니며, List나 Dictionary 타입을 그대로 Param에 담아 전송하시면 서버에서 자동으로 압축 처리합니다.

보다 정확한 안내를 위해 해당 요청에 사용하신 코드 전문을 공유해주시면 감사하겠습니다.

var writeTransactions = new List();
writeTransactions.Add(TransactionValue.SetInsert(“UserData”, UserDataParam.Get(characterType)));
writeTransactions.Add(TransactionValue.SetInsert(“UserProfile”, UserProfileParam.Get(nickName, uid)));
writeTransactions.Add(TransactionValue.SetInsert(“OwnedCharacterData”, OwnedCharacterDataParam.Get(characterType)));
writeTransactions.Add(TransactionValue.SetInsert(“ShopRecordData”, ShopParam.Get(shopChartID)));
writeTransactions.Add(TransactionValue.SetInsert(“UserBalanceData”, new Param()));
writeTransactions.Add(TransactionValue.SetInsert(“Inventory_Stack”, Inventory_StackParam.Get()));
writeTransactions.Add(TransactionValue.SetInsert(“Inventory_Equip”, Inventory_EquipParam.Get()));
writeTransactions.Add(TransactionValue.SetInsert(“MailData”, MailParam.Get()));
writeTransactions.Add(TransactionValue.SetInsert(“EquippedItemData”, EquipInfoParam.Get()));
writeTransactions.Add(TransactionValue.SetInsert(“StaminaData”, StaminaParam.Get()));
var bro = Backend.GameData.TransactionWriteV2(writeTransactions);
if (!bro.IsSuccess())
ReturnObject.Error(bro.ErrorCode);

뒤끝펑션 환경에서 작성된 코드이며 각각 param에 대한 초기 설정을 위해 Getter method를 작성하였습니다.
문제가 되는 압축데이터를 설정한 Inventory_Stack과 Inventory_Equip의 경우

public static class Inventory_EquipParam
{
public static Param Get()
{
var param = new Param();
var dic = new Dictionary<int, string>();
dic.Add(0, “[]”); //임시 데이터
dic.Add(1, “[]”);
dic.Add(2, “[]”);
param.Add(“weapons”, dic);
param.Add(“wearables”, dic);
return param;
}
}
와 같이 콘솔에서 미리 지정한 압축데이터 컬럼명 그대로 Add했습니다.(Inventory_Stack class도 동일하게 작업)

현재 사용하고 계신 펑션 버전 정보도 공유 요청드립니다.

Sdk 5.18.1,
펑션 1.0.2

둘다 예전에 안내해주셨을때 업데이트 다 했었습니다.

아래 안내드리는 코드를 참고하여 키값을 string으로 변경하여 요청을 시도하시고 결과를 확인해주시기 바랍니다.

public static Param Get()
{
    var param = new Param();
    var dic = new Dictionary<string, string>();
    dic.Add("0", "[]");
    dic.Add("1", "[]");
    dic.Add("2", "[]");
    param.Add("weapons", dic);
    param.Add("wearables", dic);
    return param;
}

실패했습니다.
혹시 몰라서 string형이여도 숫자가 들어가면 안되나 싶어서 순수 문자로만 key로 구성해서 해봤는데
안되네요

관련하여 상세 확인 후 안내드리겠습니다.

내부에서 재확인한 결과 이상없이 작동되는 것으로 확인하였습니다.

현재 파악으로는 펑션 업데이트는 이루어졌으나, 구버전으로 생성된 프로젝트에서 DLL 파일 정보가 교체되지 않아 구버전으로 동작하면서 발생하는 문제로 예상됩니다. 말씀하신 압축 데이터 관련 동작도 이로 인해 정상적으로 작동하지 않았을 가능성이 높습니다.

펑션 신규 업데이트 이후 프로젝트를 새로 생성하여 배포하신 적이 없으시다면, 새로운 프로젝트를 생성하여 다시 배포 및 테스트를 진행해 주시면 감사하겠습니다.

프로젝트를 새로 만들었더니 됐네요 감사합니다. ㅠㅠ

좋아요 1