浏览代码

AMBARI-18900 : Zookeeper service check fails after deployment. (avijayan)

Aravindan Vijayan 8 年之前
父节点
当前提交
0e4bf17bf6

+ 3 - 2
ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/AbstractTimelineMetricsSink.java

@@ -341,8 +341,9 @@ public abstract class AbstractTimelineMetricsSink {
 
 
     // Lookup Zookeeper for live hosts - max 10 seconds wait time
     // Lookup Zookeeper for live hosts - max 10 seconds wait time
     if (allKnownLiveCollectors.size() == 0 && getZookeeperQuorum() != null) {
     if (allKnownLiveCollectors.size() == 0 && getZookeeperQuorum() != null) {
-      LOG.info("No live collectors from configuration. Requesting zookeeper...");
-      allKnownLiveCollectors.addAll(collectorHAHelper.findLiveCollectorHostsFromZNode());
+      //TODO : Bring back Zk fallback after proper curation.
+      LOG.info("No live collectors from configuration. Not requesting zookeeper...");
+      //allKnownLiveCollectors.addAll(collectorHAHelper.findLiveCollectorHostsFromZNode());
     }
     }
 
 
     if (allKnownLiveCollectors.size() != 0) {
     if (allKnownLiveCollectors.size() != 0) {

+ 6 - 0
ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHAHelper.java

@@ -90,6 +90,12 @@ public class MetricCollectorHAHelper {
     } catch (Exception e) {
     } catch (Exception e) {
       LOG.warn("Unable to connect to zookeeper.", e);
       LOG.warn("Unable to connect to zookeeper.", e);
       LOG.debug(e);
       LOG.debug(e);
+    } finally {
+      try {
+        client.close();
+      } catch (Exception e) {
+        LOG.error("Caught exception while trying to close Zk connection.",e);
+      }
     }
     }
 
 
     // [ambari-sid-3.c.pramod-thangali.internal_12001]
     // [ambari-sid-3.c.pramod-thangali.internal_12001]

+ 9 - 1
ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHATest.java

@@ -24,6 +24,7 @@ import org.apache.curator.CuratorZookeeperClient;
 import org.apache.curator.retry.BoundedExponentialBackoffRetry;
 import org.apache.curator.retry.BoundedExponentialBackoffRetry;
 import org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink;
 import org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink;
 import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.ZooKeeper;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
 import org.powermock.api.easymock.PowerMock;
 import org.powermock.api.easymock.PowerMock;
@@ -48,6 +49,7 @@ import static org.powermock.api.easymock.PowerMock.verifyAll;
 @PrepareForTest({AbstractTimelineMetricsSink.class, URL.class, HttpURLConnection.class, MetricCollectorHAHelper.class})
 @PrepareForTest({AbstractTimelineMetricsSink.class, URL.class, HttpURLConnection.class, MetricCollectorHAHelper.class})
 public class MetricCollectorHATest {
 public class MetricCollectorHATest {
 
 
+  @Ignore
   @Test
   @Test
   public void findCollectorUsingZKTest() throws Exception {
   public void findCollectorUsingZKTest() throws Exception {
     InputStream is = createNiceMock(InputStream.class);
     InputStream is = createNiceMock(InputStream.class);
@@ -61,7 +63,10 @@ public class MetricCollectorHATest {
     expect(connection.getInputStream()).andReturn(is).anyTimes();
     expect(connection.getInputStream()).andReturn(is).anyTimes();
     expect(connection.getResponseCode()).andThrow(new IOException()).anyTimes();
     expect(connection.getResponseCode()).andThrow(new IOException()).anyTimes();
     expect(haHelper.findLiveCollectorHostsFromZNode()).andReturn(
     expect(haHelper.findLiveCollectorHostsFromZNode()).andReturn(
-      new ArrayList<String>() {{ add("h2"); add("h3"); }});
+      new ArrayList<String>() {{
+        add("h2");
+        add("h3");
+      }});
 
 
     replayAll();
     replayAll();
     TestTimelineMetricsSink sink = new TestTimelineMetricsSink(haHelper);
     TestTimelineMetricsSink sink = new TestTimelineMetricsSink(haHelper);
@@ -91,6 +96,9 @@ public class MetricCollectorHATest {
     clientMock.start();
     clientMock.start();
     expectLastCall().once();
     expectLastCall().once();
 
 
+    clientMock.close();
+    expectLastCall().once();
+
     ZooKeeper zkMock = PowerMock.createMock(ZooKeeper.class);
     ZooKeeper zkMock = PowerMock.createMock(ZooKeeper.class);
     expect(clientMock.getZooKeeper()).andReturn(zkMock).once();
     expect(clientMock.getZooKeeper()).andReturn(zkMock).once();