]> granicus.if.org Git - postgresql/commitdiff
Adjust total size in pg_basebackup progress report when reality changes
authorMagnus Hagander <magnus@hagander.net>
Tue, 16 Aug 2011 14:56:47 +0000 (16:56 +0200)
committerMagnus Hagander <magnus@hagander.net>
Tue, 16 Aug 2011 14:59:22 +0000 (16:59 +0200)
When streaming including WAL, the size estimate will always be incorrect,
since we don't know how much WAL is included. To make sure the output doesn't
look completely unreasonable, this patch increases the total size whenever we
go past the estimate, to make sure we never go above 100%.

src/bin/pg_basebackup/pg_basebackup.c

index 51b8e45698bd64cc278ce5f7d300e5f60111ad4c..4dab7ff0f2e0b8eb0278e6b4151a3c0ce0d89a65 100644 (file)
@@ -207,8 +207,17 @@ progress_report(int tablespacenum, const char *filename)
        char            totaldone_str[32];
        char            totalsize_str[32];
 
+       /*
+        * Avoid overflowing past 100% or the full size. This may make the
+        * total size number change as we approach the end of the backup
+        * (the estimate will always be wrong if WAL is included), but
+        * that's better than having the done column be bigger than the
+        * total.
+        */
        if (percent > 100)
                percent = 100;
+       if (totaldone / 1024 > totalsize)
+               totalsize = totaldone / 1024;
 
        /*
         * Separate step to keep platform-dependent format code out of translatable