PR #7 코드 리뷰에서 도출된 후속 개선 사항입니다.
1. FQDataType.write() — try-with-resources 적용
위치: FQDataType.java:77-78
// 현재
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();
// 개선
try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
oos.writeObject(obj);
}
ByteArrayOutputStream이라 실제 리소스 누수는 없으나, 코드 일관성 및 향후 변경 안전성을 위해 try-with-resources 사용 권장.
2. SafeObjectInputStream — 다차원 배열 처리 추가
위치: SafeObjectInputStream.java:414
현재 [L...; 1단계 배열과 길이 2인 기본 타입 배열만 허용. [[Ljava.lang.String; 같은 다차원 객체 배열은 차단됨.
개선 방향:
- 재귀 호출로 다차원 배열(
[[L...;, [[[L...;) 지원
- 또는 Javadoc에 "1차원 배열만 지원" 명시
3. FQDataType.getMemory() — 고정값 개선 또는 문서화
위치: FQDataType.java:68-70
@Override
public int getMemory(T obj) {
return 1024; // 하드코딩
}
H2 MVStore의 캐시 크기 추정에 사용되는 값으로, 실제 객체 크기와 괴리가 크면 캐시 효율이 저하될 수 있음.
개선 방향:
- 추정값 반환 (e.g., 직렬화 후 byte 배열 길이 기반)
- 또는 Javadoc에 "고정 추정값, 캐시 정밀도보다 단순성 우선" 의도 명시
4. 불필요한 커밋 쌍 정리 — H2 업그레이드/롤백
커밋: 143adc4 (2.2.224 → 2.3.232 업그레이드), 551e177 (2.3.232 → 2.2.224 롤백)
두 커밋이 상쇄되어 net change = 0이나 히스토리에 그대로 남아 있음. squash merge 전 git rebase -i로 두 커밋을 fixup 또는 drop 처리 권장.
관련 PR: #7
PR #7 코드 리뷰에서 도출된 후속 개선 사항입니다.
1.
FQDataType.write()— try-with-resources 적용위치:
FQDataType.java:77-78ByteArrayOutputStream이라 실제 리소스 누수는 없으나, 코드 일관성 및 향후 변경 안전성을 위해 try-with-resources 사용 권장.2.
SafeObjectInputStream— 다차원 배열 처리 추가위치:
SafeObjectInputStream.java:414현재
[L...;1단계 배열과 길이 2인 기본 타입 배열만 허용.[[Ljava.lang.String;같은 다차원 객체 배열은 차단됨.개선 방향:
[[L...;,[[[L...;) 지원3.
FQDataType.getMemory()— 고정값 개선 또는 문서화위치:
FQDataType.java:68-70H2 MVStore의 캐시 크기 추정에 사용되는 값으로, 실제 객체 크기와 괴리가 크면 캐시 효율이 저하될 수 있음.
개선 방향:
4. 불필요한 커밋 쌍 정리 — H2 업그레이드/롤백
커밋:
143adc4(2.2.224 → 2.3.232 업그레이드),551e177(2.3.232 → 2.2.224 롤백)두 커밋이 상쇄되어 net change = 0이나 히스토리에 그대로 남아 있음. squash merge 전
git rebase -i로 두 커밋을fixup또는drop처리 권장.관련 PR: #7