Skip to content

Commit 7c69474

Browse files
rjswjddnchw0912chcch529gffd94min0962
authored
release: 캐시 수정 코드 병합 (#144)
* feat: workflow에 EC2 자동 배포 추가 (#78) * feat: workflow에 EC2 자동 배포 추가 * chore: appleboy/ssh-action 최신버전으로 변경 * feat: 발표방 캐싱 및 인덱싱 적용 feat 새로운 기능 추가 (#80) * docs: 발표방 생성 요청 dto 스웨거 수정 * feat: Room secretCode Unique 설정 * feat: Room 캐시 적용 * test: Room 캐시 테스트 * test: 비밀코드 중복 문제 해결 * fix: 로그인 500에러 수정 * fix: 로그인 500에러 수정 * feat: 카카오 로그인 API (#86) * fix: cors disable 추가 * feat: 카카오 로그인 API * feat: 시큐리티에 카카오 로그인 url 추가 * docs: swagger 수정 * test: test yml 수정 * refactor: Presigned URL 업로드용, 조회용 로직 분리 (#84) * refactor: 기존 presigned-url 발급 로직을 업로드용, 조회용으로 분리 * docs: 발표자료 Swagger tag 추가 * refactor: profiles 환경 변수 주입으로 변경 (#90) * feat: 카카오 로그인 재시도 로직, 방 참가자 관리 동시성 수정 (#91) * feat: restTemplate 재시도 로직 추가 * feat: 방 참가자 관리 동시성 수정 및 비밀코드 방 참가 수정 * refactor,fix: 2회차 멘토링 기반 리팩토링 (#94) * fix: MemberController 수정 (#96) * fix: existsMemberByEmail에 RequestBody 추가 * fix: existsMemberByEmail 수정 * feat: 로그인 API 반환 수정 * 답변 조회 기능 수정 (#98) * feat: cors 설정 (#102) * Refactor/101 room detail (#104) * feat: cors 설정 * 웹소켓 * 웹소켓 * Refactor/101 room detail (#106) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * Refactor/101 room detail (#108) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * Refactor/101 room detail (#110) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * Update WebSocketConfig.java * Refactor/101 room detail (#114) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * Refactor/101 room detail (#116) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * Refactor/101 room detail (#118) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 인터셉터, 핸들러 재추가 * 핸들러 다시 추가 * Refactor/101 room detail (#120) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 인터셉터, 핸들러 재추가 * 핸들러 다시 추가 * 핸들러 다시 주석 * sockjs만 살리기 * test: 질문 생성 테스트 배포 (#122) * feat: cors 설정 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 웹소켓 * 인터셉터, 핸들러 재추가 * 핸들러 다시 추가 * 핸들러 다시 주석 * sockjs만 살리기 * dev 와 병합 * 질문 생성 변경 * fix: stomp controller 수정 (#125) * fix: Stomp 컨트롤러 수정 * test: 테스트 코드 수정 * fix: 답변 기능 수정 (#128) * fix: 답변 조회 수정 * test: 답변 조회 테스트 수정 * fix: cors 메서드 수정 (#131) * fix: 에러 코드 변경 * fix: cors 허용 메서드 수정 * fix: 시큐리티 수정 (#133) * fix: 에러 코드 변경 * fix: cors 허용 메서드 수정 * fix: 로그인 anonymous 해제 * fix: 시큐리티 컨픽 불필요한 부분 삭제 * fix: 시큐리티 permitAll 추가 (#135) * fix: 에러 코드 변경 * fix: cors 허용 메서드 수정 * fix: 로그인 anonymous 해제 * fix: 시큐리티 컨픽 불필요한 부분 삭제 * fix: 시큐리티 컨픽 permitall 추가 * fix: 답변율 퍼센트 수정 (#138) * fix: 참여한 발표방 조회 시 생성일, 참여일이 나오게 변경 (#141) * fix: 참여한 발표방 조회 시 생성일, 참여일이 나오게 변경 * test: 변경에 따른 테스트 코드 수정 * fix: 캐시 삭제 로직 수정 (#143) * fix: 에러 코드 변경 * fix: cors 허용 메서드 수정 * fix: 로그인 anonymous 해제 * fix: 시큐리티 컨픽 불필요한 부분 삭제 * fix: 시큐리티 컨픽 permitall 추가 * fix: 캐시 삭제 추가 --------- Co-authored-by: Huiwoong Choi <[email protected]> Co-authored-by: chcch529 <[email protected]> Co-authored-by: SeungTae <[email protected]> Co-authored-by: 민경준 <[email protected]>
1 parent 4a6e59d commit 7c69474

File tree

1 file changed

+41
-13
lines changed

1 file changed

+41
-13
lines changed

src/main/java/com/oronaminc/join/room/service/RoomService.java

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
package com.oronaminc.join.room.service;
22

3+
import static com.oronaminc.join.global.exception.ErrorCode.*;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.stream.Collectors;
8+
9+
import org.springframework.cache.Cache;
10+
import org.springframework.cache.CacheManager;
11+
import org.springframework.context.ApplicationEventPublisher;
12+
import org.springframework.stereotype.Service;
13+
import org.springframework.transaction.annotation.Transactional;
14+
315
import com.oronaminc.join.answer.domain.Answer;
416
import com.oronaminc.join.answer.service.AnswerReader;
517
import com.oronaminc.join.document.domain.Document;
@@ -16,22 +28,24 @@
1628
import com.oronaminc.join.room.dao.RoomRepository;
1729
import com.oronaminc.join.room.domain.Room;
1830
import com.oronaminc.join.room.domain.RoomStatus;
19-
import com.oronaminc.join.room.dto.*;
31+
import com.oronaminc.join.room.dto.CreateRoomRequest;
32+
import com.oronaminc.join.room.dto.CreateRoomResponse;
33+
import com.oronaminc.join.room.dto.JoinRoomRequest;
34+
import com.oronaminc.join.room.dto.JoinRoomResponse;
35+
import com.oronaminc.join.room.dto.ReportResponse;
36+
import com.oronaminc.join.room.dto.RoomDetailResponse;
37+
import com.oronaminc.join.room.dto.RoomJoinResponse;
38+
import com.oronaminc.join.room.dto.RoomUpdateInfoResponse;
39+
import com.oronaminc.join.room.dto.RoomUpdateRequest;
40+
import com.oronaminc.join.room.dto.RoomUpdateStatusRequest;
41+
import com.oronaminc.join.room.dto.TopQnAResponse;
2042
import com.oronaminc.join.room.event.RoomDeleteEvent;
2143
import com.oronaminc.join.room.util.CodeGenerator;
2244
import com.oronaminc.join.room.util.RoomMapper;
2345
import com.oronaminc.join.websocket.session.CurrentParticipantManager;
24-
import lombok.RequiredArgsConstructor;
25-
import org.springframework.cache.annotation.CacheEvict;
26-
import org.springframework.context.ApplicationEventPublisher;
27-
import org.springframework.stereotype.Service;
28-
import org.springframework.transaction.annotation.Transactional;
2946

30-
import java.util.List;
31-
import java.util.Map;
32-
import java.util.stream.Collectors;
47+
import lombok.RequiredArgsConstructor;
3348

34-
import static com.oronaminc.join.global.exception.ErrorCode.*;
3549

3650
@Service
3751
@Transactional(readOnly = true)
@@ -49,6 +63,7 @@ public class RoomService {
4963
private final RoomReader roomReader;
5064
private final CurrentParticipantManager currentParticipantManager;
5165
private final ApplicationEventPublisher publisher;
66+
private final CacheManager cacheManager;
5267

5368
private static final int CODE_LENGTH = 6;
5469

@@ -92,7 +107,6 @@ public RoomDetailResponse getRoomDetail(Long memberId, Long roomId) {
92107
}
93108

94109
@Transactional
95-
@CacheEvict(cacheNames = "roomById", key = "#roomId")
96110
public void updateRoom(Long memberId, Long roomId, RoomUpdateRequest updateRoomRequest) {
97111
participantService.validatePresenter(roomId, memberId);
98112

@@ -105,10 +119,11 @@ public void updateRoom(Long memberId, Long roomId, RoomUpdateRequest updateRoomR
105119
room.update(updateRoomRequest);
106120
participantService.updateTeam(room, updateRoomRequest.teamEmail());
107121
documentService.updateDocument(updateRoomRequest.documentUrl(), roomId);
122+
123+
clearCache(room.getId(), room.getSecretCode());
108124
}
109125

110126
@Transactional
111-
@CacheEvict(cacheNames = "roomById", key = "#roomId")
112127
public void deleteRoom(Long memberId, Long roomId) {
113128
participantService.validatePresenter(roomId, memberId);
114129

@@ -119,18 +134,19 @@ public void deleteRoom(Long memberId, Long roomId) {
119134
throw new ErrorException(BAD_REQUEST_ROOM_STARTED);
120135
}
121136

137+
clearCache(room.getId(), room.getSecretCode());
122138
publisher.publishEvent(new RoomDeleteEvent(roomId));
123139
roomRepository.deleteById(roomId);
124140
s3Service.deleteFile(document.getFileUrl());
125141
}
126142

127143
@Transactional
128-
@CacheEvict(cacheNames = "roomById", key = "#roomId")
129144
public void updateRoomStatus(Long memberId, Long roomId,
130145
RoomUpdateStatusRequest roomUpdateStatusRequest) {
131146
participantService.validatePresenter(roomId, memberId);
132147
Room room = roomReader.getById(roomId);
133148

149+
clearCache(room.getId(), room.getSecretCode());
134150
RoomStatus updateStatus = roomUpdateStatusRequest.roomStatus();
135151
List<RoomStatus> canUpdateStatus = List.of(RoomStatus.STARTED, RoomStatus.ENDED);
136152
if (!canUpdateStatus.contains(roomUpdateStatusRequest.roomStatus())) {
@@ -222,4 +238,16 @@ public RoomJoinResponse subscribeRoom(Long roomId, Long memberId) {
222238
currentParticipantManager.addParticipant(roomId, memberId, limit);
223239
return new RoomJoinResponse(currentParticipantManager.getRoomParticipants(roomId).size());
224240
}
241+
242+
private void clearCache(Long roomId, String secretCode) {
243+
Cache roomByIdCache = cacheManager.getCache("roomById");
244+
if (roomByIdCache != null) {
245+
roomByIdCache.evict(roomId);
246+
}
247+
248+
Cache roomBySecretCodeCache = cacheManager.getCache("roomBySecretCode");
249+
if (roomBySecretCodeCache != null) {
250+
roomBySecretCodeCache.evict(secretCode);
251+
}
252+
}
225253
}

0 commit comments

Comments
 (0)