FIX: Invalid opType in XopGet operation instance.#884
FIX: Invalid opType in XopGet operation instance.#884jhpark816 merged 1 commit intonaver:developfrom
Conversation
3b5498f to
bd10e52
Compare
src/main/java/net/spy/memcached/protocol/ascii/CollectionGetOperationImpl.java
Outdated
Show resolved
Hide resolved
|
|
||
| private boolean redirectSingleKeyOperation(String key, Operation op) { | ||
| return redirectSingleKeyOperation(findNodeByKey(key, op.getAPIType()), op); | ||
| return redirectSingleKeyOperation(findNodeByKey(key, op), op); |
There was a problem hiding this comment.
MemcachedClient.java 파일에 있는 groupingKeys()와 같이
operation 객체를 아직 생성하지 않은 경우에서 key들의 분배 시에는 어떻게 처리할 계획인가요?
There was a problem hiding this comment.
key들의 분배 시에는 어떻게 처리할 계획인가요?
질문이 잘 이해가 안가는데, 아래 답변이 아닌것 같으면 말씀해주세요
groupingKeys에서는 findNodeByKey(key, ApiType)을 그대로 호출합니다.
현재 PR에서는 오버로딩을 통해 op 객체를 인자로하는 메서드를 추가시킨것입니다.
There was a problem hiding this comment.
OK. 이 부분은 변경이 없어도 되는 지를 확인해 볼게요.
bd10e52 to
d2248d2
Compare
|
@oliviarla 리뷰 바랍니다. |
|
@brido4125
일단 repo에 있는 버그를 해겷하기 위해, 현 상태의 PR을 merge 생각입니다. |
|
@oliviarla @uhm0311 |
| return locator.getPrimary(key); | ||
| } | ||
|
|
||
| public MemcachedNode getPrimaryNode(final String key, final Operation op) { |
There was a problem hiding this comment.
public이지 않아도 되는 메서드들은 private / package private으로 변경해주세요.
🔗 Related Issue
enum 타입의 필드가 불변으로 바뀌지 않아서
부정확한 read / write OperatoinType이 발생하는 문제
(아래 코멘트 참고)
#879 (comment)
⌨️ What I did
다양한 구현들을 생각해보았는데, 앞서 언급된 의견들 전부 고려해서
현재 PR이 제일 깔끔하다고 생각들었습니다.
XopGet의 경우 기본적으로는 read opType을 가지고,
op 생성자 내에서 delete 옵션이 true인 경우
setter를 통해 op 타입을 write로 변경합니다.
기존 findNodeByKey의 경우는 APIType을 인자로 받고 해당 인자내의 OpType을 사용했었는데요,
이 대신 Op 자체를 넘겨서 setter를 통해 변경된 Op를 사용하도록 변경했습니다.
groupingKeys와 같은 Op 인스턴스가 생기기전에 노드를 찾아야 하는 경우에만
기존의 APIType을 인자로 받는 findNodeByKey를 호출하도록 변경했습니다.