On Wed, 2010-02-24 at 13:30 -0800, Josh Berkus wrote:

> So I'm seeing pg_abort_backup(), which also produces a
> markers which prevent the backup from loading, as an improvement on
> current UI.

Since Kevin suggested this in his first post and I agreed with that in
the first paragraph of my first post, I think you've wasted a lot of
time here going in circles. 42 posts, more than a dozen people. I think
we have better things to do than this small issue, which has nothing at
all to do with a 9.0 feature. I think you should look at prioritisation.
There are many things seriously in need of fixing and this wasn't one of
them.

Please test the following patch to see if it meets your needs and check
the wordings used in the docs.

-- 
 Simon Riggs           www.2ndQuadrant.com
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /home/sriggs/pg/REPOSITORY/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.505
diff -c -r1.505 func.sgml
*** doc/src/sgml/func.sgml	19 Feb 2010 00:15:25 -0000	1.505
--- doc/src/sgml/func.sgml	24 Feb 2010 21:45:05 -0000
***************
*** 13035,13040 ****
--- 13035,13043 ----
      <primary>pg_stop_backup</primary>
     </indexterm>
     <indexterm>
+     <primary>pg_abort_backup</primary>
+    </indexterm>
+    <indexterm>
      <primary>pg_switch_xlog</primary>
     </indexterm>
     <indexterm>
***************
*** 13081,13087 ****
          <literal><function>pg_stop_backup</function>()</literal>
          </entry>
         <entry><type>text</type></entry>
!        <entry>Finish performing on-line backup</entry>
        </row>
        <row>
         <entry>
--- 13084,13090 ----
          <literal><function>pg_stop_backup</function>()</literal>
          </entry>
         <entry><type>text</type></entry>
!        <entry>Wait for successful completion of an on-line backup</entry>
        </row>
        <row>
         <entry>
***************
*** 13155,13160 ****
--- 13158,13171 ----
      transaction log insertion
      point is automatically advanced to the next transaction log file, so that the
      ending transaction log file can be archived immediately to complete the backup.
+     <function>pg_stop_backup</> waits until all WAL files have been successfully
+     archived before completing, ensuring the backup is now fully complete.
+    </para>
+ 
+    <para>
+     <function>pg_abort_backup</> removes the label file created by
+     <function>pg_start_backup</> and invalidates any backup taken, allowing an
+     operator override in case of problems.
     </para>
  
     <para>
Index: src/backend/access/transam/xlog.c
===================================================================
RCS file: /home/sriggs/pg/REPOSITORY/pgsql/src/backend/access/transam/xlog.c,v
retrieving revision 1.377
diff -c -r1.377 xlog.c
*** src/backend/access/transam/xlog.c	19 Feb 2010 10:51:03 -0000	1.377
--- src/backend/access/transam/xlog.c	24 Feb 2010 21:45:05 -0000
***************
*** 7968,7974 ****
  }
  
  /*
!  * pg_stop_backup: finish taking an on-line backup dump
   *
   * We write an end-of-backup WAL record, and remove the backup label file
   * created by pg_start_backup, creating a backup history file in pg_xlog
--- 7968,8002 ----
  }
  
  /*
!  * pg_abort_backup: abort wait for successful completion of on-line backup
!  */
! Datum
! pg_abort_backup(PG_FUNCTION_ARGS)
! {
! 	if (!superuser())
! 		ereport(ERROR,
! 				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
! 				 (errmsg("must be superuser to run a backup"))));
! 
! 	if (RecoveryInProgress())
! 		ereport(ERROR,
! 				(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
! 				 errmsg("recovery is in progress"),
! 				 errhint("WAL control functions cannot be executed during recovery.")));
! 
! 	if (!XLogArchivingActive())
! 		ereport(ERROR,
! 				(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
! 				 errmsg("WAL archiving is not active"),
! 				 errhint("archive_mode must be enabled at server start.")));
! 
! 	CancelBackup();
! 
! 	PG_RETURN_VOID();
! }
! 
! /*
!  * pg_stop_backup: wait for successful completion of on-line backup
   *
   * We write an end-of-backup WAL record, and remove the backup label file
   * created by pg_start_backup, creating a backup history file in pg_xlog
***************
*** 7978,7984 ****
   * history file at the beginning of archive recovery, but we now use the WAL
   * record for that and the file is for informational and debug purposes only.
   *
!  * Note: different from CancelBackup which just cancels online backup mode.
   */
  Datum
  pg_stop_backup(PG_FUNCTION_ARGS)
--- 8006,8012 ----
   * history file at the beginning of archive recovery, but we now use the WAL
   * record for that and the file is for informational and debug purposes only.
   *
!  * Note: different from pg_abort_backup() which just cancels online backup mode.
   */
  Datum
  pg_stop_backup(PG_FUNCTION_ARGS)
Index: src/include/access/xlog_internal.h
===================================================================
RCS file: /home/sriggs/pg/REPOSITORY/pgsql/src/include/access/xlog_internal.h,v
retrieving revision 1.28
diff -c -r1.28 xlog_internal.h
*** src/include/access/xlog_internal.h	15 Jan 2010 09:19:06 -0000	1.28
--- src/include/access/xlog_internal.h	24 Feb 2010 21:45:05 -0000
***************
*** 262,267 ****
--- 262,268 ----
   * These aren't in xlog.h because I'd rather not include fmgr.h there.
   */
  extern Datum pg_start_backup(PG_FUNCTION_ARGS);
+ extern Datum pg_abort_backup(PG_FUNCTION_ARGS);
  extern Datum pg_stop_backup(PG_FUNCTION_ARGS);
  extern Datum pg_switch_xlog(PG_FUNCTION_ARGS);
  extern Datum pg_current_xlog_location(PG_FUNCTION_ARGS);
Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /home/sriggs/pg/REPOSITORY/pgsql/src/include/catalog/pg_proc.h,v
retrieving revision 1.569
diff -c -r1.569 pg_proc.h
*** src/include/catalog/pg_proc.h	16 Feb 2010 22:34:56 -0000	1.569
--- src/include/catalog/pg_proc.h	24 Feb 2010 21:45:05 -0000
***************
*** 3303,3309 ****
  DATA(insert OID = 2172 ( pg_start_backup		PGNSP PGUID 12 1 0 0 f f f t f v 2 0 25 "25 16" _null_ _null_ _null_ _null_ pg_start_backup _null_ _null_ _null_ ));
  DESCR("prepare for taking an online backup");
  DATA(insert OID = 2173 ( pg_stop_backup			PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_stop_backup _null_ _null_ _null_ ));
! DESCR("finish taking an online backup");
  DATA(insert OID = 2848 ( pg_switch_xlog			PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_switch_xlog _null_ _null_ _null_ ));
  DESCR("switch to new xlog file");
  DATA(insert OID = 2849 ( pg_current_xlog_location	PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_current_xlog_location _null_ _null_ _null_ ));
--- 3303,3311 ----
  DATA(insert OID = 2172 ( pg_start_backup		PGNSP PGUID 12 1 0 0 f f f t f v 2 0 25 "25 16" _null_ _null_ _null_ _null_ pg_start_backup _null_ _null_ _null_ ));
  DESCR("prepare for taking an online backup");
  DATA(insert OID = 2173 ( pg_stop_backup			PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_stop_backup _null_ _null_ _null_ ));
! DESCR("wait for successful online backup");
! DATA(insert OID = 2614 ( pg_abort_backup			PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_abort_backup _null_ _null_ _null_ ));
! DESCR("abort an online backup");
  DATA(insert OID = 2848 ( pg_switch_xlog			PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_switch_xlog _null_ _null_ _null_ ));
  DESCR("switch to new xlog file");
  DATA(insert OID = 2849 ( pg_current_xlog_location	PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_current_xlog_location _null_ _null_ _null_ ));
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to