/// <exception cref="System.IO.IOException"/> public override void Close() { if (state == EditLogFileInputStream.State.Open) { dataIn.Close(); } state = EditLogFileInputStream.State.Closed; }
/// <exception cref="Org.Apache.Hadoop.Hdfs.Server.Namenode.EditLogFileInputStream.LogHeaderCorruptException /// "/> /// <exception cref="System.IO.IOException"/> private void Init(bool verifyLayoutVersion) { Preconditions.CheckState(state == EditLogFileInputStream.State.Uninit); BufferedInputStream bin = null; try { fStream = log.GetInputStream(); bin = new BufferedInputStream(fStream); tracker = new FSEditLogLoader.PositionTrackingInputStream(bin); dataIn = new DataInputStream(tracker); try { logVersion = ReadLogVersion(dataIn, verifyLayoutVersion); } catch (EOFException) { throw new EditLogFileInputStream.LogHeaderCorruptException("No header found in log" ); } // We assume future layout will also support ADD_LAYOUT_FLAGS if (NameNodeLayoutVersion.Supports(LayoutVersion.Feature.AddLayoutFlags, logVersion ) || logVersion < NameNodeLayoutVersion.CurrentLayoutVersion) { try { LayoutFlags.Read(dataIn); } catch (EOFException) { throw new EditLogFileInputStream.LogHeaderCorruptException("EOF while reading layout " + "flags from log"); } } reader = new FSEditLogOp.Reader(dataIn, tracker, logVersion); reader.SetMaxOpSize(maxOpSize); state = EditLogFileInputStream.State.Open; } finally { if (reader == null) { IOUtils.Cleanup(Log, dataIn, tracker, bin, fStream); state = EditLogFileInputStream.State.Closed; } } }