Skip to content

[ bug ] 그룹 생성 시 ObjectOptimisticLockingFailureException #100

@saokiritoni

Description

@saokiritoni

🛠️ 발견된 버그 기능

우분트 그룹 새로 생성 시 버그 발생

Spring Lob
createGroup 메서드 내부에서 usedIdRepository.save(gidUsedId)를 호출한 후, 다음으로 groupRepository.save(group)를 호출할 때 오류 발생

Group 엔티티는 ubuntuGid를 @id로 사용하고, 동시에 @OnetoOne 관계를 가진 UsedId 엔티티의 ID를 @mapsid로 매핑하고 있는 상태,

usedIdRepository.save(gidUsedId): 이 호출이 새로운 UsedId 엔티티를 데이터베이스에 영속화 시킴
groupRepository.save(group): 이 호출은 Group 엔티티를 저장하려 하는데, 이때 JPA는 Group의 ID를 usedId의 ID(gidUsedId.getIdValue())로 설정

문제는 UsedId와 Group 엔티티가 ubuntuGid라는 동일한 ID를 공유
UsedId는 이미 영속화되었지만, Group은 아직 아님
JPA는 Group 엔티티를 저장하기 전에 UsedId 엔티티에 대한 잠금(lock) 확인, 동시에 다른 트랜잭션이 동일한 ID(ubuntuGid)를 가진 데이터를 건드리고 있어서, optimistic locking 실패가 발생하는 것으로 예상

🌎 발견된 환경

📝 check-lists

  • UsedId와 Group 간의 연관 관계 매핑(특히 @mapsid) 확인
  • 트랜잭션 분리 확인
  • GroupService 확인

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions