On 11/13/06, Emmanuel Cecchet <[EMAIL PROTECTED]> wrote:
Hi Alfonso,

It helps a lot. Find my comments below.
> 10:49:42,270 DEBUG controller.RequestManager.ITECBAN_DB Begin
> transaction 10
> 10:49:42,279 DEBUG
> virtualdatabase.VirtualDatabaseWorkerThread.ITECBAN_DB
> StatementExecuteQuery command
> 10:49:42,282 DEBUG controller.RequestManager.ITECBAN_DB Scheduling
> read Request (22): select people_seq.nextval from dual/
> 10:49:42,282 DEBUG controller.RequestManager.ITECBAN_DB Getting from
> cache read request (22): select people_seq.nextval from dual/
> 10:49:42,283 DEBUG controller.RequestManager.ITECBAN_DB Load balancing
> read request (22): select people_seq.nextval from dual/
First issue is that Sequoia does not broadcast this select statement
which means that the sequence will not get updated on all nodes. This
will lead to a cluster inconsistency and needs some alteration of the
regular expressions to make sure that these statements are broadcast and
logged into the recovery log. Note that there is a similar issue with
PostgreSQL that can be circumvented by  altering the Hibernate dialect
to transform  select into a stored procedure call (see Sequoia doc and
recent thread on the mailing list).

Ok I see what you mean with altering the Hibernate dialect, but I do
not like the call procedure solution, I prefer the second one, is a
more clean sloution.
Is this fix included in the sequoia 3.1 beta?

If you are using Sequoia 3.0, you can also enter a custom semantic
information to force any 'select ... from dual' to be broadcast. Just
set the readonly field to false (note that this is only available with
https://forge.continuent.org/jira/browse/SEQUOIA-849 fix).


If we have several oracle db replicated by sequoia cluster. How can we
know that different inserts over the same table from different
computers and managed by different sequoia controller will not get the
same primary key ID and multicast this value to the others?

Both queries are sent at the same time form different clients
insert into tableT rowA
    managed by sequoiaA
         requests OracleA
               gets ID 5 on Oracle A ? then multicast?
insert into tableT rowB
    managed by sequoiaB
         requests OrableB
              gets ID 5 on Oracle B?  then multicast?

Are you using any totally ordered multicast algorithm? that prevents
this scenario?

> 10:49:42,419 DEBUG
> virtualdatabase.VirtualDatabaseWorkerThread.ITECBAN_DB
> StatementExecuteUpdate command
> 10:49:42,423 DEBUG controller.RequestManager.ITECBAN_DB Aborting
> transaction 10
> 10:49:42,425 DEBUG controller.RequestManager.ITECBAN_DB Transaction 10
> aborted
It is not clear here what triggered the transaction abort. Having DEBUG
information from the DatabaseBackend might help here.

Ok I will run the same scenario with DEBUG info at the DatabaseBackend
and posted.

> ...
> 10:51:35,177 DEBUG controller.RequestManager.ITECBAN_DB Getting from
> cache read request (23): select people_seq.nextval from dual/
As nextval is not properly detected, it is also cached  which means that
you will get duplicate ids ! An option would be to remove the request
cache but that will not solve the missing broadcast issue anyway that
should be fixed using one of the options described above.

Ok how can I do this? Once I have solved the previous problem?  ---
remove the request cache?



Thanks for your feedback,
Emmanuel

--
Emmanuel Cecchet
Chief Scientific Officer, Continuent

Blog: http://emanux.blogspot.com/
Open source: http://www.continuent.org
Corporate: http://www.continuent.com
Skype: emmanuel_cecchet
Cell: +33 687 342 685


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


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

Reply via email to