/** @return the datanode descriptor for the host. */ public DatanodeDescriptor getDatanodeByHost(final String host) { return host2DatanodeMap.getDatanodeByHost(host); }
/** get a data node by its hostname. This should be used if only one * datanode service is running on a hostname. If multiple datanodes * are running on a hostname then use methods getDataNodeByXferAddr and * getDataNodeByHostNameAndPort. * @return DatanodeDescriptor if found; otherwise null. */ DatanodeDescriptor getDataNodeByHostName(String hostname) { if(hostname == null) { return null; } hostmapLock.readLock().lock(); try { String ipAddr = mapHost.get(hostname); if(ipAddr == null) { return null; } else { return getDatanodeByHost(ipAddr); } } finally { hostmapLock.readLock().unlock(); } }
/** @return the datanode descriptor for the host. */ public DatanodeDescriptor getDatanodeByHost(final String host) { return host2DatanodeMap.getDatanodeByHost(host); }
/** @return the datanode descriptor for the host. */ public DatanodeDescriptor getDatanodeByHost(final String host) { return host2DatanodeMap.getDatanodeByHost(host); }
/** get a data node by its hostname. This should be used if only one * datanode service is running on a hostname. If multiple datanodes * are running on a hostname then use methods getDataNodeByXferAddr and * getDataNodeByHostNameAndPort. * @return DatanodeDescriptor if found; otherwise null. */ DatanodeDescriptor getDataNodeByHostName(String hostname) { if(hostname == null) { return null; } hostmapLock.readLock().lock(); try { String ipAddr = mapHost.get(hostname); if(ipAddr == null) { return null; } else { return getDatanodeByHost(ipAddr); } } finally { hostmapLock.readLock().unlock(); } }
/** get a data node by its hostname. This should be used if only one * datanode service is running on a hostname. If multiple datanodes * are running on a hostname then use methods getDataNodeByXferAddr and * getDataNodeByHostNameAndPort. * @return DatanodeDescriptor if found; otherwise null. */ DatanodeDescriptor getDataNodeByHostName(String hostname) { if(hostname == null) { return null; } hostmapLock.readLock().lock(); try { String ipAddr = mapHost.get(hostname); if(ipAddr == null) { return null; } else { return getDatanodeByHost(ipAddr); } } finally { hostmapLock.readLock().unlock(); } }
@Test public void testGetDatanodeByHost() throws Exception { assertEquals(map.getDatanodeByHost("1.1.1.1"), dataNodes[0]); assertEquals(map.getDatanodeByHost("2.2.2.2"), dataNodes[1]); DatanodeDescriptor node = map.getDatanodeByHost("3.3.3.3"); assertTrue(node == dataNodes[2] || node == dataNodes[3]); assertNull(map.getDatanodeByHost("4.4.4.4")); }
@Test public void testRemove() throws Exception { DatanodeDescriptor nodeNotInMap = DFSTestUtil.getDatanodeDescriptor("3.3.3.3", "/d1/r4"); assertFalse(map.remove(nodeNotInMap)); assertTrue(map.remove(dataNodes[0])); assertTrue(map.getDatanodeByHost("1.1.1.1.")==null); assertTrue(map.getDatanodeByHost("2.2.2.2")==dataNodes[1]); DatanodeDescriptor node = map.getDatanodeByHost("3.3.3.3"); assertTrue(node==dataNodes[2] || node==dataNodes[3]); assertNull(map.getDatanodeByHost("4.4.4.4")); assertTrue(map.remove(dataNodes[2])); assertNull(map.getDatanodeByHost("1.1.1.1")); assertEquals(map.getDatanodeByHost("2.2.2.2"), dataNodes[1]); assertEquals(map.getDatanodeByHost("3.3.3.3"), dataNodes[3]); assertTrue(map.remove(dataNodes[3])); assertNull(map.getDatanodeByHost("1.1.1.1")); assertEquals(map.getDatanodeByHost("2.2.2.2"), dataNodes[1]); assertNull(map.getDatanodeByHost("3.3.3.3")); assertFalse(map.remove(null)); assertTrue(map.remove(dataNodes[1])); assertFalse(map.remove(dataNodes[1])); }