Merge -r 1342074:1342075 from trunk to branch. FIXES: MAPREDUCE-4276
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1342076 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e4b5b99e8e
commit
897314775b
|
@ -27,6 +27,8 @@ Release 2.0.1-alpha - UNRELEASED
|
||||||
MAPREDUCE-4262. NM gives wrong log message saying "Connected to
|
MAPREDUCE-4262. NM gives wrong log message saying "Connected to
|
||||||
ResourceManager" before trying to connect. (Devaraj K via tgraves)
|
ResourceManager" before trying to connect. (Devaraj K via tgraves)
|
||||||
|
|
||||||
|
MAPREDUCE-4276. Allow setting yarn.nodemanager.delete.debug-delay-sec property to "-1" for easier container debugging. (ahmed via tucu)
|
||||||
|
|
||||||
Release 2.0.0-alpha - UNRELEASED
|
Release 2.0.0-alpha - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -68,8 +68,10 @@ public class DeletionService extends AbstractService {
|
||||||
*/
|
*/
|
||||||
public void delete(String user, Path subDir, Path... baseDirs) {
|
public void delete(String user, Path subDir, Path... baseDirs) {
|
||||||
// TODO if parent owned by NM, rename within parent inline
|
// TODO if parent owned by NM, rename within parent inline
|
||||||
sched.schedule(new FileDeletion(user, subDir, baseDirs),
|
if (debugDelay != -1) {
|
||||||
debugDelay, TimeUnit.SECONDS);
|
sched.schedule(new FileDeletion(user, subDir, baseDirs), debugDelay,
|
||||||
|
TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -163,6 +163,39 @@ public class TestDeletionService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoDelete() throws Exception {
|
||||||
|
Random r = new Random();
|
||||||
|
long seed = r.nextLong();
|
||||||
|
r.setSeed(seed);
|
||||||
|
System.out.println("SEED: " + seed);
|
||||||
|
List<Path> dirs = buildDirs(r, base, 20);
|
||||||
|
createDirs(new Path("."), dirs);
|
||||||
|
FakeDefaultContainerExecutor exec = new FakeDefaultContainerExecutor();
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
conf.setInt(YarnConfiguration.DEBUG_NM_DELETE_DELAY_SEC, -1);
|
||||||
|
exec.setConf(conf);
|
||||||
|
DeletionService del = new DeletionService(exec);
|
||||||
|
del.init(conf);
|
||||||
|
del.start();
|
||||||
|
try {
|
||||||
|
for (Path p : dirs) {
|
||||||
|
del.delete((Long.parseLong(p.getName()) % 2) == 0 ? null : "dingo", p,
|
||||||
|
null);
|
||||||
|
}
|
||||||
|
int msecToWait = 20 * 1000;
|
||||||
|
for (Path p : dirs) {
|
||||||
|
while (msecToWait > 0 && lfs.util().exists(p)) {
|
||||||
|
Thread.sleep(100);
|
||||||
|
msecToWait -= 100;
|
||||||
|
}
|
||||||
|
assertTrue(lfs.util().exists(p));
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
del.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStopWithDelayedTasks() throws Exception {
|
public void testStopWithDelayedTasks() throws Exception {
|
||||||
DeletionService del = new DeletionService(Mockito.mock(ContainerExecutor.class));
|
DeletionService del = new DeletionService(Mockito.mock(ContainerExecutor.class));
|
||||||
|
|
Loading…
Reference in New Issue