Skip to content

Commit 8471dd2

Browse files
authored
Merge pull request #22 from CarToi/dev
[Refactor/embedding qpm] 스레드 비동기 동작 로그 확인
2 parents 7d34a06 + 1b60583 commit 8471dd2

File tree

7 files changed

+12
-11
lines changed

7 files changed

+12
-11
lines changed

src/main/java/org/jun/saemangeum/consume/controller/SurveyController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jun.saemangeum.consume.controller;
22

33
import lombok.RequiredArgsConstructor;
4+
import lombok.extern.slf4j.Slf4j;
45
import org.jun.saemangeum.consume.domain.dto.RecommendationResponse;
56
import org.jun.saemangeum.consume.domain.dto.SurveyCreateRequest;
67
import org.jun.saemangeum.consume.domain.dto.SurveyUpdateRequest;
@@ -9,6 +10,7 @@
910

1011
import java.util.List;
1112

13+
@Slf4j
1214
@RestController
1315
@RequestMapping("/api/survey")
1416
@RequiredArgsConstructor
@@ -21,6 +23,7 @@ public class SurveyController {
2123
*/
2224
@PostMapping("/recommendation")
2325
public List<RecommendationResponse> createSurvey(@RequestBody SurveyCreateRequest request) {
26+
log.info("{} - 데이터 소비 요청응답", Thread.currentThread().getName());
2427
return surveyRecommendationService.createRecommendationsBySurvey(request);
2528
}
2629

@@ -29,6 +32,7 @@ public List<RecommendationResponse> createSurvey(@RequestBody SurveyCreateReques
2932
*/
3033
@PatchMapping("/update")
3134
public void updateSurvey(@RequestBody SurveyUpdateRequest request) {
35+
log.info("{} - 데이터 소비 업데이트", Thread.currentThread().getName());
3236
surveyRecommendationService.updateSurvey(request);
3337
}
3438
}

src/main/java/org/jun/saemangeum/consume/service/strategy/TableEmbeddingVectorStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public List<? extends IContent> calculateSimilarity(String text) {
3737

3838
TableEmbeddingVectorStrategy.ContentSimilarity cs =
3939
new TableEmbeddingVectorStrategy.ContentSimilarity(vec.getContent(), similarity);
40-
if (pq.size() < 10) {
40+
if (pq.size() < 18) {
4141
pq.offer(cs);
4242
} else if (similarity > pq.peek().similarity) {
4343
pq.poll();

src/main/java/org/jun/saemangeum/consume/service/strategy/ViewEmbeddingVectorStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public List<? extends IContent> calculateSimilarity(String text) {
3737

3838
ViewEmbeddingVectorStrategy.ContentSimilarity cs =
3939
new ViewEmbeddingVectorStrategy.ContentSimilarity(vec.getContentView(), similarity);
40-
if (pq.size() < 10) {
40+
if (pq.size() < 18) {
4141
pq.offer(cs);
4242
} else if (similarity > pq.peek().similarity) {
4343
pq.poll();

src/main/java/org/jun/saemangeum/global/config/Initializer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,5 @@ public void setEmbeddingStrategy() {
3636
// 전략 초기화
3737
log.info("테이블 기반 임베딩 벡터 조회 전략 처리");
3838
StrategyContextHolder.setStrategy(tableEmbeddingVectorStrategy);
39-
// surveyRecommendationService.setEmbeddingVectorStrategy(tableEmbeddingVectorStrategy);
4039
}
4140
}

src/main/java/org/jun/saemangeum/pipeline/application/schedule/PipelineScheduler.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import lombok.RequiredArgsConstructor;
55
import lombok.extern.slf4j.Slf4j;
6-
import org.jun.saemangeum.consume.service.application.SurveyRecommendationService;
76
import org.jun.saemangeum.consume.service.strategy.StrategyContextHolder;
87
import org.jun.saemangeum.consume.service.strategy.TableEmbeddingVectorStrategy;
98
import org.jun.saemangeum.consume.service.strategy.ViewEmbeddingVectorStrategy;
@@ -19,18 +18,17 @@ public class PipelineScheduler {
1918

2019
private final PipelineService pipelineService;
2120
private final ViewJdbcUtil viewJdbcUtil;
22-
private final SurveyRecommendationService surveyRecommendationService;
2321
private final TableEmbeddingVectorStrategy tableEmbeddingVectorStrategy;
2422
private final ViewEmbeddingVectorStrategy viewEmbeddingVectorStrategy;
2523

26-
// @Scheduled(cron = "0 0 3 ? * SUN") // 얘 자체가 애시당초 다른 스레드 풀에서 돌아가게 처리
24+
@Scheduled(cron = "0 0 3 ? * SUN") // 얘 자체가 애시당초 다른 스레드 풀에서 돌아가게 처리
2725
public void process() {
2826
try {
27+
log.info("{} - 파이프라인 프로세스 시작", Thread.currentThread().getName());
2928
log.info("[스케줄러] 스왑 뷰 추가");
3029
viewJdbcUtil.createViews();
3130

3231
log.info("[스케줄러] DB 조회 무중단 처리, 임베딩 벡터 조회 스왑 뷰 전략 교체");
33-
// surveyRecommendationService.setEmbeddingVectorStrategy(viewEmbeddingVectorStrategy);
3432
StrategyContextHolder.setStrategy(viewEmbeddingVectorStrategy);
3533

3634
log.info("[스케줄러] 데이터 파이프라인 프로세스 시작");
@@ -40,7 +38,6 @@ public void process() {
4038
log.error("[스케줄러] 파이프라인 중 {} 예외 발생", e.getClass().getSimpleName(), e);
4139
} finally {
4240
log.info("[스케줄러] 임베딩 벡터 조회 전략 테이블 복귀 처리");
43-
// surveyRecommendationService.setEmbeddingVectorStrategy(tableEmbeddingVectorStrategy);
4441
StrategyContextHolder.setStrategy(tableEmbeddingVectorStrategy);
4542

4643
log.info("[스케줄러] 스왑 뷰 삭제");

src/main/java/org/jun/saemangeum/pipeline/infrastructure/queue/EmbeddingWorker.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public EmbeddingWorker(EmbeddingJobQueue queue, EmbeddingVectorService service)
2626

2727
@Override
2828
public void run() {
29+
log.info("{} - 임베딩 벡터 작업(재시도 포함)", Thread.currentThread().getName());
2930
while (true) {
3031
try {
3132
EmbeddingJob job = queue.pollQueue();

src/test/java/org/jun/saemangeum/service/StrategyConcurrencyTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ void testStrategyThreadUnsafe() throws InterruptedException {
129129

130130
List<RecommendationResponse> responses =
131131
mockSurveyRecommendationService.createRecommendationsBySurvey(request);
132-
observedTitles.add(responses.get(0).title());
133-
log.info("[데이터 소비 3티어] 사용된 추천 제목(전략): {}", responses.get(0).title());
132+
observedTitles.add(responses.getFirst().title());
133+
log.info("[데이터 소비 3티어] 사용된 추천 제목(전략): {}", responses.getFirst().title());
134134
} catch (InterruptedException e) {
135135
log.error("스레드 인터럽트 발생");
136136
} finally
@@ -142,7 +142,7 @@ void testStrategyThreadUnsafe() throws InterruptedException {
142142
latch.await();
143143
executor.shutdown();
144144

145-
String usedTitle = observedTitles.get(0);
145+
String usedTitle = observedTitles.getFirst();
146146
log.info("최종 추천(조회 전략): {}", usedTitle);
147147

148148
// 1번 실행기에서 전략이 스왑 뷰로 바뀌면 그 전략을 2번 실행기에서 따라가야 한다.

0 commit comments

Comments
 (0)