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