INTERNAL: Refactoring updateReplConnections.#874
Conversation
d6ad65c to
bb2cff2
Compare
|
@uhm0311 아직 draft 상태입니다. |
bb2cff2 to
2dabb95
Compare
|
질문이 있습니다. 변경된 MemcachedConnection 파일의 416~419 line에 아래 내용이 존재하는데요, 이전과 형상이 동일한 그룹일 경우에만 switchoverMemcachedReplGroup 메서드를 호출하고 나머지 경우에는 remove만 해주어야 하지 않나요? if (oldGroup.isDelayedSwitchover()) {
delayedSwitchoverGroups.remove(oldGroup);
switchoverMemcachedReplGroup(oldGroup, true);
} |
|
@oliviarla
참고로 기존 구현은 2번 케이스가 아예 진행되지 않습니다. 아마 2번 케이스에 대한 코멘트를 남겨주신것 같은데 맞나요? |
|
@brido4125 생각해보니 이전 zk 형상과 새로운 zk 형상이 달라진 것을 두 케이스로 나누어 아래와 같이 처리할 수 있을 것 같습니다. 적합한지 검토 부탁드려요.
|
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
2dabb95 to
d7427d5
Compare
d7427d5 to
d06980d
Compare
d06980d to
fdc945f
Compare
oliviarla
left a comment
There was a problem hiding this comment.
리뷰 완료.
415 line은 이미 상위에서 handleDelayedSwitchover 호출하므로 제거해도 될것 같습니다.
fdc945f to
da06b19
Compare
| if (oldMasterAddr.isSameAddress(newMasterAddr)) { | ||
| if (oldSlaveAddrs.equals(newSlaveAddrs)) { | ||
| // No change in the group. | ||
| continue; |
There was a problem hiding this comment.
코드는 간단해 보이지만, 최적화가 된 것인지는 의문입니다.
두 개의 set이 같은 지를 비교하기 위해서는 아래 형태의 fore 문을 수행하기 때문입니다.
for 문을 이용한 비교가 한번 더 수행될 수 있어 오히려 최적화의 반대 효과를 낼 것 같습니다.
bool same = true;
for (ArcusReplNodeAddress newSlaveAddr : newSlaveAddrs) {
if (!oldSlaveAddrs.contains(newSlaveAddr)) {
same = false; break;
}
}
for (ArcusReplNodeAddress oldSlaveAddr : oldSlaveAddrs) {
if (!newSlaveAddrs.contains(oldSlaveAddr)) {
same = false; break;
}
}
return same;There was a problem hiding this comment.
오히려 제거하는게 나을 것 같네요
da06b19 to
cb0e337
Compare
🔗 Related Issue
https://github.com/jam2in/arcus-works/issues/620#issuecomment-2505369614
⌨️ What I did
기존 로직의 경우 findChangedGroups을 통해
해시링의 형상과 zk로부터의 형상을 먼저 비교합니다.
그 후에 변경이 있는 Group에 대해서만 루프를 돌며 update를 수행합니다.
변경된 로직은 해시링의 형상(old)을 순회를 돌며
해당 해시링 기준, zk로부터의 형상(new)을 곧바로 비교하면서
update를 수행합니다.
리뷰를 위해 이슈 관련 히스토리도 아래에 정리합니다.
결론적으로 기존의 findChangedGroups가 가진 문제는 해결된 상태에서의 PR인점을 참고해주세요.
추가적으로 아래 코멘트 사항에서 언급된 경우도 처리합니다.
#874 (comment)
기존에는 for 루프 내에서 group 별로 처리하는 경우를
for 루프 앞단에서 일괄적으로 이전 delayed switchover를 처리하도록 변경했습니다.