[Pgpool-general] Problems with Pgpool-II replication mode

Maria Antonia Lajus Marrero malajusster at gmail.com
Thu Sep 29 15:45:22 UTC 2011


Hello,
Thanks for all your help!!!

I' ve two new problems with the same environment. I 've two balancers
nodes with Pgpool-II 3.0.3 instance and two SQL nodes with PostgreSQL
8.3.9 instance. I'm using Pgpool-II replication mode.
Alfresco is one of the applications witch send requests to the cluster
and return the follow error:

Cause: org.postgresql.util.PSQLException: ERROR: pgpool detected
difference of the number of inserted, updated or deleted tuples.
Possible last query was: "update             alf_lock         set
       version = $1,             lock_token = $2,
start_time = $3,             expiry_time
 at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)
 at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:457)
 at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
 at org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(SqlMapClientTemplate.java:380)
 at org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(SqlMapClientTemplate.java:1)
 at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
 ... 15 more
Caused by: org.postgresql.util.PSQLException: ERROR: pgpool detected
difference of the number of inserted, updated or deleted tuples.
Possible last query was: "update             alf_lock         set
       version = $1,             lock_token = $2,
start_time = $3,             expiry_time
 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
 at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
 at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
 at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
 at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:381)
 at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
 at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
 at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
 at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:100)
 at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216)
 at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94)

The Alfresco send a requests group(INSERT, DELETE, UPDATE, SELECT) on
the same connection but also on different transactions, I mean INSERT
goes in one transaction, DELETE in the other, on the other the UPDATE,
and so on. So, then returns that error for the application and the SQL
node on witch Pgpool-II found the different information is detached.
So I've many questions here:

How can I solve this problem?
How works pgpool-II replication mode internally?
How pgPool-II does load balancing?
How PGPool-ll difference INSERT, DELETE,  SELECT and UPDATE queries?

Please help me, I need some answer !!!
Thanks

Maria


More information about the Pgpool-general mailing list