Exemplo n.º 1
0
        /// <exception cref="System.IO.IOException"/>
        internal static void RollForwardByApplyingLogs(RemoteEditLogManifest manifest, FSImage
                                                       dstImage, FSNamesystem dstNamesystem)
        {
            NNStorage dstStorage = dstImage.GetStorage();
            IList <EditLogInputStream> editsStreams = Lists.NewArrayList();

            foreach (RemoteEditLog log in manifest.GetLogs())
            {
                if (log.GetEndTxId() > dstImage.GetLastAppliedTxId())
                {
                    FilePath f = dstStorage.FindFinalizedEditsFile(log.GetStartTxId(), log.GetEndTxId
                                                                       ());
                    editsStreams.AddItem(new EditLogFileInputStream(f, log.GetStartTxId(), log.GetEndTxId
                                                                        (), true));
                }
            }
            Log.Info("Checkpointer about to load edits from " + editsStreams.Count + " stream(s)."
                     );
            dstImage.LoadEdits(editsStreams, dstNamesystem);
        }