You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
POST /api/chats 호출시, 해당 스레드에 속한 채팅들의 timestamp가 갱신되는 것 같음.
DB에 값이 그렇게 반영된지 확인을해보니 데이터베이스 레벨에서 timeStamp 값이 갱신 되어있음
→ Spring AI chat - memory - repository의 동작여부를 조금 더 자세히 알아봐야할 것 같음
내부 쿼리를 열어보는게 필요하다 디버그 레벨에서
spring_ai_chat_table을 커스터마이징할 수 있는지 여부, 프론트엔드의 요청에 따라 게스트의 정보를 넣어주는 과정에서 ChatGuset라는 엔티티를 설정했음. 그런데, 트랜잭션, 동시성 문제등으로 Chat 테이블의 데이터 개수와 ChatGuset의 데이터 개수가 달라지는 상황이 있었음.
아마도 프론트엔드에서 guest를 요청을 할 때, 채팅을 여러번 보내서 . . .? 그런 상황이 발생했던 것 같음
그걸 떠나서 지금 상황에서는 guestCode를 도입하지 않거나 커스터마이징 하는 것이 필요함
chat 테이블에 (conversationId, timeStamp)가 동시에 들어가는 상황이 발생한다면?
물론 이런 상황은 동일한 채팅방에 동시에 채팅을 넣는 즉 API를 직접 호출하는 방식이 아니면 발생하지 않음.
그렇지만 알아야할것은 결국 hibernate의 쿼리가 네이티브 쿼리로 변경되어서 전송되고, 쿼리 파라미터에 쿼리를 넣는건 JavaThread임. 그래서 이런 상황이 발생하면 ? DB에서는 예외를 던지고 애플리케이션에 전송될수 밖에없음
📌 해커톤 과정에서 발견한 이슈들입니다.
개선할점
DB에 값이 그렇게 반영된지 확인을해보니 데이터베이스 레벨에서 timeStamp 값이 갱신 되어있음
→ Spring AI chat - memory - repository의 동작여부를 조금 더 자세히 알아봐야할 것 같음
물론 이런 상황은 동일한 채팅방에 동시에 채팅을 넣는 즉 API를 직접 호출하는 방식이 아니면 발생하지 않음.
그렇지만 알아야할것은 결국 hibernate의 쿼리가 네이티브 쿼리로 변경되어서 전송되고, 쿼리 파라미터에 쿼리를 넣는건 JavaThread임. 그래서 이런 상황이 발생하면 ? DB에서는 예외를 던지고 애플리케이션에 전송될수 밖에없음