'Push'에 해당하는 글 2건

Parse push failed

Daily/Prog 2017. 2. 1. 16:51

Error generating response. ParseError {

  code: 135,

  message: 'at least one ID field (deviceToken, installationId) must be specified in this operation' }


Error generating response. ParseError {

  code: 137,

  message: 'A duplicate value for a field with unique values was provided' }


갑자기 생겨난 원인을 찾기 힘든 parse error 메시지.

마이그레이션 하고 나서 개발자들이 테스트 하다가 이 모양이 됐다.


135 error 는 deviceToken 이나 installationId 가 payload 에 있어야 하는데 없다는 얘기 같고. 그래도 뭔소린지 모르겠고.. 

(deviceToken 이랑 installationId 가 둘다 값이 없는 데이터는 한 개도 없음.)

137 error 는 unique 컬럼에 중복 값이 있다는 오류 같고.

(이것도 검색 결과 나오지 않았음.)


아 놔 에러 메시지가 친절히 나와도 이거 당최 알 수가 없네.

일단 deviceToken 을 살펴보니 테스트들 한답시고 test 와 123456... 이런 문자들이... ㅋㅋ 줸장!

mongoDB 에서 문자의 길이가 64자 미만의 deviceToken 값들을 찾아봤다.



db.getCollection('_Installation').find({$where"this.deviceToken.length < 64"}).limit(10);
cs


Error: error: {

"$err" : "TypeError: Cannot read property 'length' of undefined\n    at _funcs2 (_funcs2:1:46) near '64' ",

"code" : 16722

}


undefined 값들의 길이를 구할 수 없다는 에러가 ㅋㅋ;

토큰이 빈건 또 뭐여...


db.getCollection('_Installation').find({deviceToken: {$existstrue}, $where"this.deviceToken.length < 64"})
cs


조회하고 삭제. (find -> remove 대체.)


이렇게 했는데도 push 가 반절은 발송되지 않았다. unique 컬럼을 찾아봤다.


db.getCollection('_Installation').getIndexes()
cs


unique 키는 installationId_1 이랑 installationId_1_deviceToken_1.

중복값을 체크해 봤다.


db.getCollection('_Installation').aggregate([
       {$group : {_id : "$deviceToken", count : {$sum 1}}},
       {$match : {count : {$gt : 1}}} ])
 
db.getCollection('_Installation').aggregate([
       {$group : {_id : "$installationId", count : {$sum 1}}},
       {$match : {count : {$gt : 1}}} ])
cs


중복값은 없다;


deviceToken 과 installationId 가 마이그레이션 후에 undefined 로 들어간게 2천개 가량 있는데 이 부분이 약간 의심스러움. SDK 문제인지...

index 까지 완전 동일한 테스트 서버에서는 undefined 백개 있어도 잘 보내짐 ㅜㅜ

운영서버는 push 보내려면 또 한 달을 기다려야 하고... 아~ 짜증난다...




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Remote Repository

Tool/Git 2013. 3. 26. 01:03

로컬 저장소에서 특정 작업물을 commit 하여 HEAD 에 반영하였습니다.
이제 원격 저장소와의 소통이 필요할 때입니다.
원격 저장소의 작업물을 로컬 저장소로 받아오던지(pull), 로컬 저장소의 작업물을 원격 저장소로 보내던지(push).

 

 

git remote add <별칭> <URL>

 

첫째로 remote 명령을 사용해서 원격 저장소의 주소를 로컬 저장소에 추가해야 합니다.

 

$ git remote add r1 git@github.com:ggamzzak/test.git
$ git remote show r1
Enter passphrase for key '/home/oops4u/.ssh/id_rsa':
* remote r1
  Fetch URL: git@github.com:ggamzzak/test.git
  Push  URL: git@github.com:ggamzzak/test.git
  HEAD branch: master
  Remote branch:
    master new (next fetch will store in remotes/r1)
  Local ref configured for 'git push':
    master pushes to master (local out of date)

 

remote show 명령으로 원격 저장소(r1)의 정보를 확인할 수 있습니다.
원격 저장소의 URL과 branch에 대한 정보가 나타나지만 그 외에 자료가 없는 관계로 많은 정보가 나타나지 않았습니다만,
pull, push, fetch 명령을 사용시 작업이 진행될 branch 들을 명시합니다.

 

로컬 저장소에 추가한 원격 저장소의 별칭 수정.
git remote rename <별칭> <새별칭>
별칭 삭제.
git remote rm <별칭>

 

 

push / pull

 

다시 branch로 되돌아가서...
로컬 저장소에는 최소 하나의 branch(master)가 생성됩니다.
원격 저장소도 마찬가지로 최소 하나의 branch(master)가 생성됩니다.

 

두 저장소간에 작업물을 보내거나(push), 받는(pull, fetch) 것은,
상대 저장소 branch의 마지막 커밋을 추가하거나 병합되는 형태가 됩니다.

 

원격 저장소에서 로컬로 작업물을 가져오는 방법은 세가지가 있습니다.
clone / pull / fetch
세 명령의 차이와 특징에 맞게 사용하면 되겠습니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,