From d2e8bba818f02f3c37903fc5f512d9ee4401be2a Mon Sep 17 00:00:00 2001 From: Clover Song Date: Sat, 14 Dec 2024 16:36:00 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EB=8B=89=EB=84=A4=EC=9E=84=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EA=B0=92=20=EC=97=AC=EB=B6=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mafoo/user/controller/dto/response/MemberResponse.java | 4 ++++ .../src/main/java/kr/mafoo/user/domain/MemberEntity.java | 5 ++++- .../src/main/java/kr/mafoo/user/service/MemberService.java | 3 ++- .../resources/db/migration/V4__add_is_default_name_field.sql | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 user-service/src/main/resources/db/migration/V4__add_is_default_name_field.sql diff --git a/user-service/src/main/java/kr/mafoo/user/controller/dto/response/MemberResponse.java b/user-service/src/main/java/kr/mafoo/user/controller/dto/response/MemberResponse.java index 298cc88a..53fa8f67 100644 --- a/user-service/src/main/java/kr/mafoo/user/controller/dto/response/MemberResponse.java +++ b/user-service/src/main/java/kr/mafoo/user/controller/dto/response/MemberResponse.java @@ -11,6 +11,9 @@ public record MemberResponse( @Schema(description = "사용자 이름", example = "송영민") String name, + @Schema(description = "닉네임 기본값 여부", example = "false") + boolean isDefaultName, + @Schema(description = "프로필 이미지 URL", example = "https://mafoo.kr/profile.jpg") String profileImageUrl, @@ -21,6 +24,7 @@ public static MemberResponse fromEntity(MemberEntity memberEntity) { return new MemberResponse( memberEntity.getId(), memberEntity.getName(), + memberEntity.isDefaultName(), memberEntity.getProfileImageUrl(), String.format("%04d", memberEntity.getSerialNumber()) ); diff --git a/user-service/src/main/java/kr/mafoo/user/domain/MemberEntity.java b/user-service/src/main/java/kr/mafoo/user/domain/MemberEntity.java index 2b826359..fb3f0aac 100644 --- a/user-service/src/main/java/kr/mafoo/user/domain/MemberEntity.java +++ b/user-service/src/main/java/kr/mafoo/user/domain/MemberEntity.java @@ -23,6 +23,9 @@ public class MemberEntity implements Persistable { @Column("name") private String name; + @Column("is_default_name") + private boolean isDefaultName; + @Column("serial_number") private Integer serialNumber; @@ -50,7 +53,7 @@ public int hashCode() { return id.hashCode(); } - public static MemberEntity newMember(String id, String name, String profileImageUrl) { + public static MemberEntity newMember(String id, String name, String profileImageUrl, boolean isDefaultName) { MemberEntity member = new MemberEntity(); member.id = id; member.name = name; diff --git a/user-service/src/main/java/kr/mafoo/user/service/MemberService.java b/user-service/src/main/java/kr/mafoo/user/service/MemberService.java index 7afa5070..5c0f1cea 100644 --- a/user-service/src/main/java/kr/mafoo/user/service/MemberService.java +++ b/user-service/src/main/java/kr/mafoo/user/service/MemberService.java @@ -49,7 +49,7 @@ public Mono getMemberByMemberId(String memberId) { @Transactional public Mono createNewMember(String username, String profileImageUrl, String userAgent) { - MemberEntity memberEntity = MemberEntity.newMember(IdGenerator.generate(), username, profileImageUrl); + MemberEntity memberEntity = MemberEntity.newMember(IdGenerator.generate(), username, profileImageUrl, true); return memberRepository.save(memberEntity) .flatMap(savedMember -> @@ -71,6 +71,7 @@ public Mono changeName(String memberId, String name) { .switchIfEmpty(Mono.error(new MemberNotFoundException())) .map(member -> { member.setName(name); + member.setDefaultName(false); return member; }) .flatMap(memberRepository::save); diff --git a/user-service/src/main/resources/db/migration/V4__add_is_default_name_field.sql b/user-service/src/main/resources/db/migration/V4__add_is_default_name_field.sql new file mode 100644 index 00000000..64bff32e --- /dev/null +++ b/user-service/src/main/resources/db/migration/V4__add_is_default_name_field.sql @@ -0,0 +1,2 @@ +ALTER TABLE member + ADD is_default_name TINYINT(1) DEFAULT FALSE AFTER name; From c3c462758f5ac2985c2295932742aee87c09a50f Mon Sep 17 00:00:00 2001 From: Clover Song Date: Sat, 14 Dec 2024 23:23:18 +0900 Subject: [PATCH 2/4] fix: test --- .../mafoo/gateway/ApiGatewayApplicationTests.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 api-gateway/src/test/java/kr/mafoo/gateway/ApiGatewayApplicationTests.java diff --git a/api-gateway/src/test/java/kr/mafoo/gateway/ApiGatewayApplicationTests.java b/api-gateway/src/test/java/kr/mafoo/gateway/ApiGatewayApplicationTests.java deleted file mode 100644 index 1eb6b90a..00000000 --- a/api-gateway/src/test/java/kr/mafoo/gateway/ApiGatewayApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package kr.mafoo.gateway; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class ApiGatewayApplicationTests { - - @Test - void contextLoads() { - } - -} From b1cb8a8ff87930ae164f68e65050bfec96a2f053 Mon Sep 17 00:00:00 2001 From: Clover Song Date: Sun, 15 Dec 2024 21:09:48 +0900 Subject: [PATCH 3/4] feat: error test --- .../main/java/kr/mafoo/photo/config/WebExceptionHandler.java | 2 +- .../java/kr/mafoo/photo/controller/SumoneController.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java b/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java index 3b27e993..1a79d9d6 100644 --- a/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java +++ b/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java @@ -113,7 +113,7 @@ private Mono> handleExceptionInternal(ServerWebExchange e if (status == HttpStatus.INTERNAL_SERVER_ERROR) { return slackService.sendErrorNotification( requestMemberId, method, fullPath, requestBody, originIp, userAgent, exception.getMessage() - ).then(Mono.just(new ResponseEntity<>("Internal Server Error", status))); + ).then(Mono.error(exception)); } return Mono.just(new ResponseEntity<>(status.getReasonPhrase(), status)); diff --git a/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java b/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java index 21db1d6a..72d33f06 100644 --- a/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java +++ b/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java @@ -162,4 +162,9 @@ Mono getInviteCode( .findById(userId) .map(SumoneInviteCodeResponse::fromEntity); } + + @PostMapping("/error") + Mono error() { + return Mono.error(new RuntimeException("error")); + } } From 1c582b1c44e01b0d1ca8640e2e5d5a51e13cea54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=A1=EC=98=81=EB=AF=BC=20=28YeongMin=20Song=29?= Date: Wed, 18 Dec 2024 21:31:19 +0900 Subject: [PATCH 4/4] feat: optimize memory --- api-gateway/build.gradle.kts | 6 ++++-- photo-service/build.gradle.kts | 6 ++++-- user-service/build.gradle.kts | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/api-gateway/build.gradle.kts b/api-gateway/build.gradle.kts index e2711499..e23a53f1 100644 --- a/api-gateway/build.gradle.kts +++ b/api-gateway/build.gradle.kts @@ -73,8 +73,10 @@ jib { "-XX:+UnlockExperimentalVMOptions", "-XX:+UseContainerSupport", "-XX:+UseG1GC", - "-XX:InitialHeapSize=1g", - "-XX:MaxHeapSize=1g", + "-Xms1500M", + "-Xmx3G", + "-XX:MaxRAMPercentage=80", + "-XX:MaxGCPauseMillis=200", "-XX:+DisableExplicitGC", // System.gc() 방어 "-server", ) diff --git a/photo-service/build.gradle.kts b/photo-service/build.gradle.kts index cda793ee..0b5474c0 100644 --- a/photo-service/build.gradle.kts +++ b/photo-service/build.gradle.kts @@ -70,8 +70,10 @@ jib { "-XX:+UnlockExperimentalVMOptions", "-XX:+UseContainerSupport", "-XX:+UseG1GC", - "-XX:InitialHeapSize=1g", - "-XX:MaxHeapSize=1g", + "-Xms1500M", + "-Xmx3G", + "-XX:MaxRAMPercentage=80", + "-XX:MaxGCPauseMillis=200", "-XX:+DisableExplicitGC", // System.gc() 방어 "-server", ) diff --git a/user-service/build.gradle.kts b/user-service/build.gradle.kts index caa2d232..e88d69c2 100644 --- a/user-service/build.gradle.kts +++ b/user-service/build.gradle.kts @@ -88,8 +88,10 @@ jib { "-XX:+UnlockExperimentalVMOptions", "-XX:+UseContainerSupport", "-XX:+UseG1GC", - "-XX:InitialHeapSize=1g", - "-XX:MaxHeapSize=1g", + "-Xms1500M", + "-Xmx3G", + "-XX:MaxRAMPercentage=80", + "-XX:MaxGCPauseMillis=200", "-XX:+DisableExplicitGC", // System.gc() 방어 "-server", )