[ 
https://forge.continuent.org/jira/browse/SEQUOIA-1033?page=comments#action_14266
 ] 

Robert Hodges commented on SEQUOIA-1033:
----------------------------------------

This problem has been solved by the  expedient of allowing backups to proceed 
if there are pending reads.   This fix is based on the assumption that backups 
perform read-only operations and therefore do not cause changes that would 
alter a read or take locks in such a way that there would be a conflict that 
would result in failures either of the backup or of the read operation.   The 
assumption seems safe given that all currently implemented backup mechanisms 
for Sequoia read data from the database.   

> backup system throws exception because pending read request has not been 
> processed 
> -----------------------------------------------------------------------------------
>
>          Key: SEQUOIA-1033
>          URL: https://forge.continuent.org/jira/browse/SEQUOIA-1033
>      Project: Sequoia
>         Type: Bug

>   Components: Backup System
>     Versions: Sequoia 2.10.9
>  Environment: RHEL4/Ubuntu 7.04 with MySQL 5.0.38
>     Reporter: Robert Hodges
>      Fix For: sequoia 2.10.10

>
>
> Backup process throws an exception if there is a pending request 
> (DatabaseBackend.getPendingReequests()). The process to disable before taking 
> a backup does not wait for pending read requests in active transactions or 
> persistentConnections in 
> DatabaseBackend.waitForAllTransactionsAndPersistentConnectionsToComplete().
> The correct fix may be to wait for all pending requests in 
> waitForAllTransactionsAndPersistentConnectionsToComplete() as well.
> Here is a typical stack trace. 
> 2008-02-07 08:50:04,110 WARN sequoia.controller.connection Some connections 
> are still active, destroying them.
> 2008-02-07 08:50:04,238 INFO controller.virtualdatabase.primUser Backend 
> c1_db is now disabled
> 2008-02-07 08:50:04,238 INFO controller.virtualdatabase.primUser Backend 
> c1_db disabled on controller Member(address=c1host/10.237.152.24:6523, 
> uid=vdb1)
> 2008-02-07 08:50:04,246 INFO controller.RequestManager.vdb1 Resuming activity 
> for primUser
> 2008-02-07 08:50:04,255 INFO controller.RequestManager.vdb1 All activity is 
> now resumed for primUser
> 2008-02-07 08:50:04,255 INFO controller.RequestManager.vdb1 Backend c1_db is 
> now disabled
> 2008-02-07 08:50:04,255 INFO controller.RequestManager.vdb1 Starting backup 
> of backend c1_db
> 2008-02-07 08:50:04,255 WARN controller.RequestManager.vdb1 Pending:SELECT 
> sleep(10)
> 2008-02-07 08:50:04,255 WARN controller.RequestManager.vdb1 Pending Requests:1
> 2008-02-07 08:50:04,255 WARN controller.RequestManager.vdb1 Read enabled:false
> 2008-02-07 08:50:04,255 WARN controller.RequestManager.vdb1 Write 
> enabled:false
> 2008-02-07 08:50:04,256 ERROR controller.RequestManager.vdb1 Backup command 
> failed
> org.continuent.sequoia.common.exceptions.BackupException: Backend is not 
> ready for backup: 1 remaining pending requests
>        at 
> org.continuent.sequoia.common.exceptions.SequoiaException.fillInStackTrace(SequoiaException.java:103)
>        at java.lang.Throwable.<init>(Throwable.java:196)
>        at java.lang.Exception.<init>(Exception.java:41)
>        at 
> org.continuent.sequoia.common.exceptions.SequoiaException.<init>(SequoiaException.java:57)
>        at 
> org.continuent.sequoia.common.exceptions.BackupException.<init>(BackupException.java:50)
>        at 
> org.continuent.sequoia.controller.requestmanager.RequestManager.backupBackend(RequestManager.java:2887)
>        at 
> org.continuent.sequoia.controller.virtualdatabase.VirtualDatabase.backupBackend(VirtualDatabase.java:2366)
>        at 
> org.continuent.sequoia.controller.virtualdatabase.management.VirtualDatabase.backupBackend(VirtualDatabase.java:403)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at 
> com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.java:414)
>        at javax.management.StandardMBean.invoke(StandardMBean.java:323)
>        at 
> com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
>        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
>        at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
>        at 
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
>        at 
> org.continuent.sequoia.controller.jmx.ChainedMBeanServer.invoke(ChainedMBeanServer.java:318)
>        at 
> org.continuent.sequoia.controller.jmx.AuthenticatingMBeanServer.invoke(AuthenticatingMBeanServer.java:127)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1410)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1247)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1350)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:784)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>        at sun.rmi.transport.Transport$1.run(Transport.java:153)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>        at 
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
>        at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
>        at java.lang.Thread.run(Thread.java:595) 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   https://forge.continuent.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to