boolean setSafeMode(SafeModeAction action) throws IOException { String operationName = action.toString().toLowerCase(); boolean error = false; if (action != SafeModeAction.SAFEMODE_GET) { checkSuperuserPrivilege(operationName); switch(action) { case SAFEMODE_LEAVE: // leave safe mode leaveSafeMode(false); break; case SAFEMODE_ENTER: // enter safe mode enterSafeMode(false); break; case SAFEMODE_FORCE_EXIT: leaveSafeMode(true); break; default: LOG.error("Unexpected safe mode action"); error = true; } } if (!error) { logAuditEvent(true, operationName, null); } return isInSafeMode(); }
/** */ public void run() { while (fsRunning && (safeMode != null && !safeMode.canLeave())) { try { Thread.sleep(recheckInterval); } catch (InterruptedException ie) { } } // leave safe mode and stop the monitor try { leaveSafeMode(true); } catch(SafeModeException es) { // should never happen String msg = "SafeModeMonitor may not run during distributed upgrade."; assert false : msg; throw new RuntimeException(msg, es); } smmthread = null; } }
public void run() { while (namesystem.isRunning() && (safeMode != null && !safeMode.canLeave())) { try { Thread.sleep(recheckInterval); } catch (InterruptedException ie) { } } // if we stopped namenode while still in safemode, then exit here if (!namesystem.isRunning()) { LOG.info("Quitting SafeModeMonitor thread. "); return; } // leave safe mode and stop the monitor try { namesystem.leaveSafeMode(true); } catch (SafeModeException es) { // should never happen String msg = "SafeModeMonitor may not run during distributed upgrade."; assert false : msg; throw new RuntimeException(msg, es); } } }
boolean setSafeMode(SafeModeAction action) throws IOException { if (action != SafeModeAction.SAFEMODE_GET) { checkSuperuserPrivilege(); switch(action) { case SAFEMODE_LEAVE: // leave safe mode leaveSafeMode(); break; case SAFEMODE_ENTER: // enter safe mode enterSafeMode(false); break; default: LOG.error("Unexpected safe mode action"); } } return isInSafeMode(); }
boolean setSafeMode(SafeModeAction action) throws IOException { if (action != SafeModeAction.SAFEMODE_GET) { checkSuperuserPrivilege(); switch (action) { case SAFEMODE_LEAVE: // leave safe mode if (!manualOverrideSafeMode) { leaveSafeMode(false); } else { LOG.warn("Leaving safemode is not allowed. " + manualOverrideSafeMode); } break; case SAFEMODE_ENTER: // enter safe mode enterSafeMode(); break; } } return isInSafeMode(); }
public synchronized void completeUpgrade() throws IOException { // set and write new upgrade state into disk setUpgradeState(false, FSConstants.LAYOUT_VERSION); namesystem.getFSImage().writeAll(); currentUpgrades = null; broadcastCommand = null; namesystem.leaveSafeMode(false); }
boolean setSafeMode(SafeModeAction action) throws IOException { if (action != SafeModeAction.SAFEMODE_GET) { checkSuperuserPrivilege(); switch(action) { case SAFEMODE_LEAVE: // leave safe mode leaveSafeMode(false); break; case SAFEMODE_ENTER: // enter safe mode enterSafeMode(); break; } } return isInSafeMode(); }
public static void leaveSafeMode(NameNode namenode) { namenode.getNamesystem().leaveSafeMode(); }
boolean setSafeMode(SafeModeAction action) throws IOException { if (action != SafeModeAction.SAFEMODE_GET) { checkSuperuserPrivilege(); switch(action) { case SAFEMODE_LEAVE: // leave safe mode leaveSafeMode(); break; case SAFEMODE_ENTER: // enter safe mode enterSafeMode(false); break; default: LOG.error("Unexpected safe mode action"); } } return isInSafeMode(); }
public synchronized void completeUpgrade() throws IOException { // set and write new upgrade state into disk setUpgradeState(false, FSConstants.LAYOUT_VERSION); FSNamesystem.getFSNamesystem().getFSImage().writeAll(); currentUpgrades = null; broadcastCommand = null; FSNamesystem.getFSNamesystem().leaveSafeMode(false); }
namesystem.leaveSafeMode(false); LOG.info("Save " + i + ": complete");
@Test /** * Test that isInStartupSafemode returns true only during startup safemode * and not also during low-resource safemode */ public void testStartupSafemode() throws IOException { Configuration conf = new Configuration(); FSImage fsImage = Mockito.mock(FSImage.class); FSEditLog fsEditLog = Mockito.mock(FSEditLog.class); Mockito.when(fsImage.getEditLog()).thenReturn(fsEditLog); FSNamesystem fsn = new FSNamesystem(conf, fsImage); fsn.leaveSafeMode(); assertTrue("After leaving safemode FSNamesystem.isInStartupSafeMode still " + "returned true", !fsn.isInStartupSafeMode()); assertTrue("After leaving safemode FSNamesystem.isInSafeMode still returned" + " true", !fsn.isInSafeMode()); fsn.enterSafeMode(true); assertTrue("After entering safemode due to low resources FSNamesystem." + "isInStartupSafeMode still returned true", !fsn.isInStartupSafeMode()); assertTrue("After entering safemode due to low resources FSNamesystem." + "isInSafeMode still returned false", fsn.isInSafeMode()); }
@Test public void testReplQueuesActiveAfterStartupSafemode() throws IOException, InterruptedException{ Configuration conf = new Configuration(); FSEditLog fsEditLog = Mockito.mock(FSEditLog.class); FSImage fsImage = Mockito.mock(FSImage.class); Mockito.when(fsImage.getEditLog()).thenReturn(fsEditLog); FSNamesystem fsNamesystem = new FSNamesystem(conf, fsImage); FSNamesystem fsn = Mockito.spy(fsNamesystem); //Make shouldPopulaeReplQueues return true HAContext haContext = Mockito.mock(HAContext.class); HAState haState = Mockito.mock(HAState.class); Mockito.when(haContext.getState()).thenReturn(haState); Mockito.when(haState.shouldPopulateReplQueues()).thenReturn(true); Whitebox.setInternalState(fsn, "haContext", haContext); //Make NameNode.getNameNodeMetrics() not return null NameNode.initMetrics(conf, NamenodeRole.NAMENODE); fsn.enterSafeMode(false); assertTrue("FSNamesystem didn't enter safemode", fsn.isInSafeMode()); assertTrue("Replication queues were being populated during very first " + "safemode", !fsn.isPopulatingReplQueues()); fsn.leaveSafeMode(); assertTrue("FSNamesystem didn't leave safemode", !fsn.isInSafeMode()); assertTrue("Replication queues weren't being populated even after leaving " + "safemode", fsn.isPopulatingReplQueues()); fsn.enterSafeMode(false); assertTrue("FSNamesystem didn't enter safemode", fsn.isInSafeMode()); assertTrue("Replication queues weren't being populated after entering " + "safemode 2nd time", fsn.isPopulatingReplQueues()); }
fsns.enterSafeMode(false); fsns.saveNamespace(); fsns.leaveSafeMode();
editLog.getLastWrittenTxId() - 1); namesystem.leaveSafeMode(); LOG.info("Save " + i + ": complete");