Hello,

I'm currently working on a problem we have with Sequoia and I cannot
find a solution for it.

Context :
- Red Hat WAF - a web application framework in Java,
- Sequoia 2.10 branch,
- PostgreSQL 8.1.4,
- Distributed configuration but only one controller and one backend
atm to have the most simple case possible,
- VariablePoolConnectionManager,
- Round robin load balancer.

The problem doesn't occur when using directly PostgreSQL instead of Sequoia.

The problem is that when the application using Sequoia starts a
transaction, sometimes, the connection is reused before the
transaction is closed and we also have the case when the begin is
executed on one transaction and the commit on another one. We often
have the following case:
[pid:523] : BEGIN; first query of the transaction;
[pid:523] : other queries which have nothing to do in this transaction
[pid:534] : second query of the transaction;
[pid:534] : COMMIT;
for example.

I can't reproduce it when using the step by step debugger of Eclipse
(I have spent three days trying to find the problem) but when using
the application in a real environment, it happens and it's very
annoying (one of the biggest problem, apart from the possible data
loss and inconsistency, is that we cannot do any manipulation on the
backend with opened transactions - we have a few idle in transaction
PostgreSQL connections).

I dug a lot into the code for a while but I didn't find any problem
yet. Well, in fact, while digging for my problem, I found something
weird in the load balancer code but it doesn't apply to my case
because I have only one backend for my tests:
- in RAIDb1_RR.executeRoundRobinRequest, sequoia chooses a backend
without looking for the transaction id and runs
executeRequestOnBackend on this particular backend;
- then in RAIDb1 executeRequestOnBackend takes care of the transaction
id to choose the right connection and guarantee the consistency of the
transaction, which is not possible if it chooses the wrong backend.
Is this the wanted behaviour? Anyway, it's not the problem I have
currently because I enabled only one backend.

Does anyone have an idea of what can happen in my case and how I can
see what is the problem? A solution is also very welcome :).

Thanks for any help.

--
Guillaume

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

Reply via email to