[mapguide-commits] r10150 - branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Jun 12 05:58:59 PDT 2025


Author: jng
Date: 2025-06-12 05:58:58 -0700 (Thu, 12 Jun 2025)
New Revision: 10150

Modified:
   branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs
   branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/RestoreCommand.cs
Log:
#2879: Initial implementation of hot backup and restore

Modified: branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs
===================================================================
--- branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs	2025-06-12 12:00:32 UTC (rev 10149)
+++ branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs	2025-06-12 12:58:58 UTC (rev 10150)
@@ -14,6 +14,42 @@
 
     public void Stderr(string msg) => stderr.WriteLine(msg);
 
+    private void PerformRecovery(string homeDir)
+    {
+        var proc = new Process
+        {
+            StartInfo = new ProcessStartInfo
+            {
+                FileName = dbRecover.FullName,
+                Arguments = $"-cv -h \"{homeDir}\"",
+                UseShellExecute = false,
+                RedirectStandardOutput = true,
+                CreateNoWindow = true,
+                WorkingDirectory = dbRecover.DirectoryName
+            }
+        };
+        proc.Start();
+        proc.WaitForExit();
+    }
+
+    private void CleanUpLogFiles(string homeDir)
+    {
+        var proc = new Process
+        {
+            StartInfo = new ProcessStartInfo
+            {
+                FileName = dbArchive.FullName,
+                Arguments = $"-dv -h \"{homeDir}\"",
+                UseShellExecute = false,
+                RedirectStandardOutput = true,
+                CreateNoWindow = true,
+                WorkingDirectory = dbArchive.DirectoryName
+            }
+        };
+        proc.Start();
+        proc.WaitForExit();
+    }
+
     private IEnumerable<string> GetDatabaseFiles(string homeDir)
     {
         var proc = new Process
@@ -116,17 +152,6 @@
         }
     }
 
-    internal int BackupOfflineRepositories()
-    {
-        stdout.WriteLine(Strings.IDS_PROGRESS_BACKING_UP_OFFLINE_REPOSITORY);
-
-        var outDir = cmd.OutputPath.CreateSubdirectory("LastColdBackup");
-        TransferDatabaseFiles(outDir);
-        TransferLogFiles(outDir);
-
-        return 0;
-    }
-
     private void TransferFile(DirectoryInfo outDir, FileInfo file, bool move = false, bool overwrite = true)
     {
         var dest = Path.Combine(outDir.FullName, file.Name);
@@ -151,8 +176,46 @@
     
     }
 
+    internal int BackupOfflineRepositories()
+    {
+        stdout.WriteLine(Strings.IDS_PROGRESS_BACKING_UP_OFFLINE_REPOSITORY);
+
+        // TODO: timestamp subdirectory computation
+        var outDir = cmd.OutputPath.CreateSubdirectory("LastColdBackup");
+        TransferDatabaseFiles(outDir);
+        TransferLogFiles(outDir);
+
+        return 0;
+    }
+
     internal int BackupOnlineRepositories()
     {
+        stdout.WriteLine(Strings.IDS_PROGRESS_BACKING_UP_ONLINE_REPOSITORY);
+
+        bool fullSnapshot = true;
+        // TODO: fullSnapshot flag determination logic 
+
+        var outDir = cmd.OutputPath.CreateSubdirectory("LastHotBackup");
+        if (fullSnapshot)
+        {
+            TransferDatabaseFiles(outDir);
+        }
+        TransferLogFiles(outDir);
+
         return 0;
     }
+
+    internal int RestoreRepositories()
+    {
+        stdout.WriteLine(Strings.IDS_PROGRESS_RESTORING_BACKUP_REPOSITORY);
+
+        // TODO: tempBackupDir determination
+
+        TransferDatabaseFiles(cmd.OutputPath);
+        TransferLogFiles(cmd.OutputPath);
+        PerformRecovery(cmd.OutputPath.FullName);
+        CleanUpLogFiles(cmd.OutputPath.FullName);
+
+        return 0;
+    }
 }

Modified: branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/RestoreCommand.cs
===================================================================
--- branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/RestoreCommand.cs	2025-06-12 12:00:32 UTC (rev 10149)
+++ branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/RestoreCommand.cs	2025-06-12 12:58:58 UTC (rev 10150)
@@ -24,9 +24,9 @@
             return 1;
         }
 
-        app.Stdout($"Input path: {InputPath}");
-        app.Stdout($"Output path: {OutputPath}");
+        //app.Stdout($"Input path: {InputPath}");
+        //app.Stdout($"Output path: {OutputPath}");
 
-        return 0;
+        return app.RestoreRepositories();
     }
 }



More information about the mapguide-commits mailing list