Hi,
I am doing some tests on Sequoia in order to see if it is feasible for my 
company's needs. 

Currently, I have two controllers running on 2 different machines such that 
each controller has a different backend and no backend is shared between 
controllers. The schedulers and load balancers implement the RAIDb-1 
configuration. Thus, a virtual database is being replicated in two controllers. 
For Horizontal Scalability purposes, I am currently using Appia.

There is one particular test that is giving me some problems at the moment. 

This is the test scenario:

1. Start both controllers and enable both backends
2. Insert some data and check that the data inserted is consistent in both 
databases.
3. Run a multithreaded test in order to insert and update data by sending 
requests to both controllers
4. While the test in 3. is running, pull the plug to one of the backends 
“Backend1” by stopping the MySQL Service.

The outcome of this test was:

-- The multithreaded application hanged without throwing an Exception

-- Got an  java.io.EOFException on both controller's console:
         at  com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
          at  com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
 at  com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
          at  com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
          at  com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
          at  com.mysql.jdbc.Connection.execSQL(Connection.java:3118)
          at  com.mysql.jdbc.Statement.executeUpdate(Statement.java:1313)
          at  com.mysql.jdbc.Statement.executeUpdate(Statement.java:1232)
          at  
org.continuent.sequoia.controller.loadbalancer.AbstractLoadBalancer.e
 xecuteStatementExecuteUpdateOnBackend(AbstractLoadBalancer.java:895)
          at  
org.continuent.sequoia.controller.loadbalancer.tasks.StatementExecute
 UpdateTask.executeInAutoCommit(StatementExecuteUpdateTask.java:224)
          at  
org.continuent.sequoia.controller.loadbalancer.tasks.StatementExecute
 UpdateTask.executeTask(StatementExecuteUpdateTask.java:116)
          at  
org.continuent.sequoia.controller.loadbalancer.tasks.AbstractTask.exe
 cute(AbstractTask.java:140)
          at  
org.continuent.sequoia.controller.loadbalancer.BackendWorkerThread.ru
 n(BackendWorkerThread.java:197)
 12:43:55,851  INFO  controller.virtualdatabase.CaryDB Backend Backend1 
disabled  on controller  Member(address=/10.239.0.73:2784,  
uid=10.239.0.73:2784)

-- Though having followed the steps on recovery as described in Section 8.2 of 
the admin guide, I found it particularly difficult to restore the backend and 
enabling it back without using a 'force enable backend *'.  In fact when I 
tried to re-enable backend without the “force” I was given the following 
warning several times Warning -- WARN  sequoia.controller.scheduler Waiting for 
1 pending writes.

My question is whether if a backend  fails, why should the client application 
making requests hang without even being  given an exception ?  Moreover, in 
this case is there something which I can do  so that all requests are passed 
back to the other controller that has an enabled  backend ?
   Basically, I would like to know if I  am doing something wrong or if this 
functionality is simply not supported by  Sequoia 2.10.9.

   
Regards,
 Caroline


       
---------------------------------
 For ideas on reducing your carbon footprint visit Yahoo! For Good this month.
       
---------------------------------
 For ideas on reducing your carbon footprint visit Yahoo! For Good this month.
_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to