I like option 1, make sure it is well documented.  I actually lean
toward even stronger, have the command commit the current transaction
before and after the backup.

Suresh Thalamati (JIRA) wrote:
[ http://issues.apache.org/jira/browse/DERBY-239?page=comments#action_12356240 ]
Suresh Thalamati commented on DERBY-239:
----------------------------------------

What to do if backup is started in a transaction that  already has unlogged 
operations executed?

In previous discussions about online backup, it was concluded that existing backup procedures calls will WAIT for the transaction with unlogged operations to commit before proceeding with the backup. One issue that was missing from the discussion was, what to do if user starts a backup in the same transaction that has unlogged operations executed before the backup call. WAIT will not be an acceptable option here, because backup call will wait forever.
I can think of two ways this issue can be addressed:

1) Add a restriction that backup procedures can only be called in a brand
NEW transaction. And also implicitly commit the backup transaction at the end of the backup. Commit is not required as such to solve this problem, but it would be cleaner because backup itself is not a rollback-able operation. 2) Make backup procedures fail, if transaction that it is started in contains unlogged operations.


I am inclined towards implementing the first option. Any comments/suggestion will be appreciated.

Thanks
-suresht



Need a online backup feature  that does not block update operations   when 
online backup is in progress.
--------------------------------------------------------------------------------------------------------

        Key: DERBY-239
        URL: http://issues.apache.org/jira/browse/DERBY-239
    Project: Derby
       Type: New Feature
 Components: Store
   Versions: 10.1.1.0
   Reporter: Suresh Thalamati
   Assignee: Suresh Thalamati
Attachments: onlinebackup.html, onlinebackup_1.diff

Currently Derby allows users to perfoms  online backups using 
SYSCS_UTIL.SYSCS_BACKUP_DATABASE() procedure,  but while the backup is in 
progress, update operations are temporarily blocked, but read operations can 
still proceed.
Blocking update operations can be real issue specifically in client server environments, because user requests will be blocked for a long time if a backup is in the progress on the server.



Reply via email to