dineshchitlangia commented on a change in pull request #51: HDDS-2311. Fix 
logic of RetryPolicy in OzoneClientSideTranslatorPB.
URL: https://github.com/apache/hadoop-ozone/pull/51#discussion_r340954497
 
 

 ##########
 File path: 
hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/ha/OMFailoverProxyProvider.java
 ##########
 @@ -243,14 +245,36 @@ public void performFailoverIfRequired(String 
newLeaderOMNodeId) {
     if (newLeaderOMNodeId == null) {
       LOG.debug("No suggested leader nodeId. Performing failover to next peer" 
+
           " node");
-      performFailover(null);
+      performFailoverToNextProxy();
     } else {
       if (updateLeaderOMNodeId(newLeaderOMNodeId)) {
         LOG.debug("Failing over OM proxy to nodeId: {}", newLeaderOMNodeId);
       }
     }
   }
 
+  /**
+   * Performs failover if the leaderOMNodeId returned through OMReponse does
+   * not match the current leaderOMNodeId cached by the proxy provider.
+   */
+  public void performFailoverToNextProxy() {
+    int newProxyIndex = incrementProxyIndex();
+    if (LOG.isDebugEnabled()) {
+      LOG.debug("Incrementing OM proxy index to {}, nodeId: {}",
+          newProxyIndex, omNodeIDList.get(newProxyIndex));
+    }
+  }
+
+  /**
+   * Update the proxy index to the next proxy in the list.
+   * @return the new proxy index
+   */
+  private synchronized int incrementProxyIndex() {
+    currentProxyIndex = (currentProxyIndex + 1) % omProxies.size();
+    currentProxyOMNodeId = omNodeIDList.get(currentProxyIndex);
+    return currentProxyIndex;
+  }
+
   /**
 
 Review comment:
   Findbugs Issue:
   
   In class org.apache.hadoop.ozone.om.ha.OMFailoverProxyProvider
   Field org.apache.hadoop.ozone.om.ha.OMFailoverProxyProvider.currentProxyIndex
   Synchronized 71% of the time
   Unsynchronized access at OMFailoverProxyProvider.java:[line 235]
   Unsynchronized access at OMFailoverProxyProvider.java:[line 236]
   Synchronized access at OMFailoverProxyProvider.java:[line 273]
   Synchronized access at OMFailoverProxyProvider.java:[line 273]
   Synchronized access at OMFailoverProxyProvider.java:[line 274]
   Synchronized access at OMFailoverProxyProvider.java:[line 275]
   Synchronized access at OMFailoverProxyProvider.java:[line 287]
   Inconsistent synchronization of 
org.apache.hadoop.ozone.om.ha.OMFailoverProxyProvider.currentProxyIndex; locked 
71% of time
   The fields of this class appear to be accessed inconsistently with respect 
to synchronization.  This bug report indicates that the bug pattern detector 
judged that
   
   The class contains a mix of locked and unlocked accesses,
   The class is not annotated as javax.annotation.concurrent.NotThreadSafe,
   At least one locked access was performed by one of the class's own methods, 
and
   The number of unsynchronized field accesses (reads and writes) was no more 
than one third of all accesses, with writes being weighed twice as high as reads
   A typical bug matching this bug pattern is forgetting to synchronize one of 
the methods in a class that is intended to be thread-safe.
   
   You can select the nodes labeled "Unsynchronized access" to show the code 
locations where the detector believed that a field was accessed without 
synchronization.
   
   Note that there are various sources of inaccuracy in this detector; for 
example, the detector cannot statically detect all situations in which a lock 
is held.  Also, even when the detector is accurate in distinguishing locked vs. 
unlocked accesses, the code in question may still be correct.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to