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
