유튜브 "메타코딩" 님의 스프링부트5.0 채팅서버 만들기
강의를 통해 만든 채팅서버를 구현하던 와중 에러가 발생하였다.
Sort: {}
Proj: {}
tailable cursor requested on non capped collection' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "error processing query: ns=messenger.chat batchSize=256Tree: roomNum $eq \"100\"\nSort: {}\nProj: {}\n tailable cursor requested on non capped collection", "code": 2, "codeName": "BadValue"}] with root cause
com.mongodb.MongoQueryException: Command failed with error 2 (BadValue): 'error processing query: ns=messenger.chat batchSize=256Tree: roomNum $eq "100"
Sort: {}
Proj: {}
tailable cursor requested on non capped collection' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "error processing query: ns=messenger.chat batchSize=256Tree: roomNum $eq \"100\"\nSort: {}\nProj: {}\n tailable cursor requested on non capped collection", "code": 2, "codeName": "BadValue"}
at com.mongodb.internal.operation.FindOperation.lambda$exceptionTransformingCallback$6(FindOperation.java:364) ~[mongodb-driver-core-4.11.1.jar:na]
at com.mongodb.internal.operation.AsyncOperationHelper.lambda$transformingReadCallback$19(AsyncOperationHelper.java:433) ~[mongodb-driver-core-4.11.1.jar:na]
..(중략)
Room번호가 "100"인 채팅방에 조회하기 위한 url 👇 을 요청했는데.. 원하는 응답 데이터가 오지 않고..
// 예시
http://localhost:8080/chat/roomNum/100
아래 그림과 같이 에러만 발생했다.
해당 문제를 검색해본 결과 아래의 블로그에서 문제 원인과 해결방법을 찾을 수 있었다.
출처 - bw1611.log
// java console 에러 메세지
tailable cursor requested on non capped collection ...(중략)
tailable cursor(테일러 커서)는 capped collection(고정된 컬렉션)에서만 사용가능한데
문제 원인을 파악했으니... 문제 해결만 남았다.
문제 해결은 다음과 같다.
3-1. 몽고DB 접속
mongodb://localhost:27017
3-2. 접근할 DB 목록 조회
show dbs
내가 접근할 DB는 "messenger" DB 이다.
3-3. 원하는 DB 접근
use 원하는 DB명
3-4. 해당 DB 내의 Collection(컬렉션) 상태 확인
db.확인할 컬렉션명.stats()
위의 그림에서 볼 수 있듯이 chat 컬렉션의 capped 여부가 false
=> 즉, non capped 상태인 것을 확인할 수 있다.
3-5. Collection(컬렉션) - capped 유뮤 & 사이즈 변경
db.runCommand({converToCapped: '변경할 컬렉션명', size:8192})
ok면 변경에 성공했다는 의미이다. 그래도 혹시 모르니 다시 상태를 확인해보면...!
변경이 완료된 것을 완벽하게 확인할 수 있다.