/// <exception cref="System.IO.IOException"/> public void Apply(JournalSet.JournalAndStream jas) { if (jas.IsActive()) { jas.GetCurrentStream().Flush(); } }
/// <exception cref="System.IO.IOException"/> public void Apply(JournalSet.JournalAndStream jas) { if (jas.IsActive()) { jas.GetCurrentStream().Create(layoutVersion); } }
/// <exception cref="System.IO.IOException"/> public void Apply(JournalSet.JournalAndStream jas) { if (jas.IsActive()) { jas.GetCurrentStream().WriteRaw(data, offset, length); } }
/// <exception cref="System.IO.IOException"/> public void Apply(JournalSet.JournalAndStream jas) { if (jas.IsActive()) { jas.CloseStream(); jas.GetManager().FinalizeLogSegment(firstTxId, lastTxId); } }
public virtual void TestSingleRequiredFailedEditsDirOnSetReadyToFlush() { // Set one of the edits dirs to be required. string[] editsDirs = cluster.GetConfiguration(0).GetTrimmedStrings(DFSConfigKeys. DfsNamenodeNameDirKey); ShutDownMiniCluster(); Configuration conf = new HdfsConfiguration(); conf.Set(DFSConfigKeys.DfsNamenodeEditsDirRequiredKey, editsDirs[0]); conf.SetInt(DFSConfigKeys.DfsNamenodeEditsDirMinimumKey, 0); conf.SetInt(DFSConfigKeys.DfsNamenodeCheckedVolumesMinimumKey, 0); SetUpMiniCluster(conf, true); NUnit.Framework.Assert.IsTrue(DoAnEdit()); // Invalidated the one required edits journal. InvalidateEditsDirAtIndex(0, false, false); JournalSet.JournalAndStream nonRequiredJas = GetJournalAndStream(1); EditLogFileOutputStream nonRequiredSpy = SpyOnStream(nonRequiredJas); // The NN has not terminated (no ExitException thrown) // ..and that the other stream is active. NUnit.Framework.Assert.IsTrue(nonRequiredJas.IsActive()); try { DoAnEdit(); NUnit.Framework.Assert.Fail("A single failure of a required journal should have halted the NN" ); } catch (RemoteException re) { NUnit.Framework.Assert.IsTrue(re.GetClassName().Contains("ExitException")); GenericTestUtils.AssertExceptionContains("setReadyToFlush failed for required journal" , re); } // Since the required directory failed setReadyToFlush, and that // directory was listed prior to the non-required directory, // we should not call setReadyToFlush on the non-required // directory. Regression test for HDFS-2874. Org.Mockito.Mockito.Verify(nonRequiredSpy, Org.Mockito.Mockito.Never()).SetReadyToFlush (); NUnit.Framework.Assert.IsFalse(nonRequiredJas.IsActive()); }