소스 검색

ZOOKEEPER-4000: use the computeIfAbsent to simplify the Leader#processSync method

```
public synchronized void processSync(LearnerSyncRequest r) {
    if (outstandingProposals.isEmpty()) {
        sendSync(r);
    } else {
        List<LearnerSyncRequest> l = pendingSyncs.get(lastProposed);
        if (l == null) {
            l = new ArrayList<LearnerSyncRequest>();
        }
        l.add(r);
        pendingSyncs.put(lastProposed, l);
    }
}
```
we can use the computeIfAbsent to make the code more clean and elegant

Author: Matteo Minardi <matteo.minardi@diennea.com>

Reviewers: maoling <maoling199210191@sina.com>, Christopher Tubbs <ctubbsii@apache.org>, Andor Molnar <anmolnar@apache.org>, Damien Diederen <ddiederen@apache.org>

Closes #1538 from mino181295/fix/ZOOKEEPER-4000/process-sync-code
Matteo Minardi 4 년 전
부모
커밋
300d7e9575
1개의 변경된 파일1개의 추가작업 그리고 6개의 파일을 삭제
  1. 1 6
      zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java

+ 1 - 6
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java

@@ -1266,12 +1266,7 @@ public class Leader extends LearnerMaster {
         if (outstandingProposals.isEmpty()) {
             sendSync(r);
         } else {
-            List<LearnerSyncRequest> l = pendingSyncs.get(lastProposed);
-            if (l == null) {
-                l = new ArrayList<LearnerSyncRequest>();
-            }
-            l.add(r);
-            pendingSyncs.put(lastProposed, l);
+            pendingSyncs.computeIfAbsent(lastProposed, k -> new ArrayList<>()).add(r);
         }
     }