示例#1
0
 /// <summary>Process an edit log using the chosen processor or visitor.</summary>
 /// <param name="inputFilename">The file to process</param>
 /// <param name="outputFilename">The output file name</param>
 /// <param name="processor">If visitor is null, the processor to use</param>
 /// <param name="visitor">If non-null, the visitor to use.</param>
 /// <returns>0 on success; error code otherwise</returns>
 public virtual int Go(string inputFileName, string outputFileName, string processor
                       , OfflineEditsViewer.Flags flags, OfflineEditsVisitor visitor)
 {
     if (flags.GetPrintToScreen())
     {
         System.Console.Out.WriteLine("input  [" + inputFileName + "]");
         System.Console.Out.WriteLine("output [" + outputFileName + "]");
     }
     try
     {
         if (visitor == null)
         {
             visitor = OfflineEditsVisitorFactory.GetEditsVisitor(outputFileName, processor, flags
                                                                  .GetPrintToScreen());
         }
         bool xmlInput             = inputFileName.EndsWith(".xml");
         OfflineEditsLoader loader = OfflineEditsLoader.OfflineEditsLoaderFactory.CreateLoader
                                         (visitor, inputFileName, xmlInput, flags);
         loader.LoadEdits();
     }
     catch (Exception e)
     {
         System.Console.Error.WriteLine("Encountered exception. Exiting: " + e.Message);
         Sharpen.Runtime.PrintStackTrace(e, System.Console.Error);
         return(-1);
     }
     return(0);
 }
 /// <summary>Constructor</summary>
 public OfflineEditsBinaryLoader(OfflineEditsVisitor visitor, EditLogInputStream inputStream
                                 , OfflineEditsViewer.Flags flags)
 {
     this.visitor      = visitor;
     this.inputStream  = inputStream;
     this.fixTxIds     = flags.GetFixTxIds();
     this.recoveryMode = flags.GetRecoveryMode();
     this.nextTxId     = -1;
 }
示例#3
0
        /// <summary>Main entry point for ToolRunner (see ToolRunner docs)</summary>
        /// <param name="argv">The parameters passed to this program.</param>
        /// <returns>0 on success, non zero on error.</returns>
        /// <exception cref="System.Exception"/>
        public virtual int Run(string[] argv)
        {
            Options options = BuildOptions();

            if (argv.Length == 0)
            {
                PrintHelp();
                return(-1);
            }
            CommandLineParser parser = new PosixParser();
            CommandLine       cmd;

            try
            {
                cmd = parser.Parse(options, argv);
            }
            catch (ParseException e)
            {
                System.Console.Out.WriteLine("Error parsing command-line options: " + e.Message);
                PrintHelp();
                return(-1);
            }
            if (cmd.HasOption("h"))
            {
                // print help and exit
                PrintHelp();
                return(-1);
            }
            string inputFileName  = cmd.GetOptionValue("i");
            string outputFileName = cmd.GetOptionValue("o");
            string processor      = cmd.GetOptionValue("p");

            if (processor == null)
            {
                processor = defaultProcessor;
            }
            OfflineEditsViewer.Flags flags = new OfflineEditsViewer.Flags();
            if (cmd.HasOption("r"))
            {
                flags.SetRecoveryMode();
            }
            if (cmd.HasOption("f"))
            {
                flags.SetFixTxIds();
            }
            if (cmd.HasOption("v"))
            {
                flags.SetPrintToScreen();
            }
            return(Go(inputFileName, outputFileName, processor, flags, null));
        }
示例#4
0
 /// <summary>Run OfflineEditsViewer</summary>
 /// <param name="inFilename">input edits filename</param>
 /// <param name="outFilename">oputput edits filename</param>
 /// <exception cref="System.IO.IOException"/>
 private int RunOev(string inFilename, string outFilename, string processor, bool
                    recovery)
 {
     Log.Info("Running oev [" + inFilename + "] [" + outFilename + "]");
     Org.Apache.Hadoop.Hdfs.Tools.OfflineEditsViewer.OfflineEditsViewer oev = new Org.Apache.Hadoop.Hdfs.Tools.OfflineEditsViewer.OfflineEditsViewer
                                                                                  ();
     OfflineEditsViewer.Flags flags = new OfflineEditsViewer.Flags();
     flags.SetPrintToScreen();
     if (recovery)
     {
         flags.SetRecoveryMode();
     }
     return(oev.Go(inFilename, outFilename, processor, flags, null));
 }
示例#5
0
 /// <exception cref="System.IO.IOException"/>
 internal static OfflineEditsLoader CreateLoader(OfflineEditsVisitor visitor, string
                                                 inputFileName, bool xmlInput, OfflineEditsViewer.Flags flags)
 {
     if (xmlInput)
     {
         return(new OfflineEditsXmlLoader(visitor, new FilePath(inputFileName), flags));
     }
     else
     {
         FilePath           file   = null;
         EditLogInputStream elis   = null;
         OfflineEditsLoader loader = null;
         try
         {
             file = new FilePath(inputFileName);
             elis = new EditLogFileInputStream(file, HdfsConstants.InvalidTxid, HdfsConstants.
                                               InvalidTxid, false);
             loader = new OfflineEditsBinaryLoader(visitor, elis, flags);
         }
         finally
         {
             if ((loader == null) && (elis != null))
             {
                 elis.Close();
             }
         }
         return(loader);
     }
 }
 /// <exception cref="System.IO.FileNotFoundException"/>
 public OfflineEditsXmlLoader(OfflineEditsVisitor visitor, FilePath inputFile, OfflineEditsViewer.Flags
                              flags)
 {
     this.visitor    = visitor;
     this.fileReader = new InputStreamReader(new FileInputStream(inputFile), Charsets.
                                             Utf8);
     this.fixTxIds = flags.GetFixTxIds();
 }