Sure.----- Original Message ----- From: "Werner Guttmann" <[EMAIL PROTECTED]>
To: <[email protected]> Cc: <[EMAIL PROTECTED]> Sent: Tuesday, May 13, 2008 4:04 AMSubject: Re: [castor-user] read-only connection for generating keys for postgres.
Stephen, can you please file individual bugs/Jira issues and we'll address each of them one by one. I think it's worthwhile to have a few round trips to gather a more complete understanding of the issues. Werner Stephen Ince wrote:FYI. I was able to get my app working with castor/postgres and derby. I am using castor 1.01. It seems to be a lot faster than the current release. FIXES and work arounds. 1) Changed to using IDENTITY key generator from HIGH/LOW. Over a period of time (week) the high/low seems to get out of sync. 2) ReadOnly transaction issue. This is not really a castor issue but apache/db connection pooling issue. It is not resetting the connections. Work around. reset jdbc connection in org.castor.persist.LocalTransactionContext.createConnection() conn.setReadOnly(false) 3) Derby identity generator bug. In org.exolab.castor.jdo.keygen.IdentityKeyGenerator public void supportsSqlType( int sqlType ) throws MappingException { if (sqlType != Types.INTEGER && sqlType != Types.NUMERIC && sqlType != Types.DECIMAL && sqlType != Types.BIGINT) { throw new MappingException( Messages.format("mapping.keyGenSQLType", getClass().getName(), new Integer(sqlType))); } if (sqlType != Types.INTEGER && fName.equals("hsql")) { throw new MappingException( Messages.format("mapping.keyGenSQLType", getClass().getName(), new Integer(sqlType))); } // ODS: fix if (sqlType == Types.NUMERIC && fName.equals("derby")) { throw new MappingException( Messages.format("mapping.keyGenSQLType", getClass().getName(), new Integer(sqlType))); } } Steve ----- Original Message ----- From: "Stephen Ince" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Wednesday, January 30, 2008 1:19 PM Subject: Re: [castor-user] read-only connection for generating keys for postgres.Werner, I am having a hard time reproducing "read-only transaction" case outside of my webapp. I am also getting the read-only error for MAX-KEY key generation. Any suggestions on how I can reproduce it. I am thinking about spawning a few threads and do not close the jdo sessions. Sofar the single threaded case is not reproducible. Here is a the stack trace for the webapp. a.. This Database operation failed: : SQL exception in the key generator org.exolab.castor.jdo.keygen.MaxKeyGenerator: org.postgresql.util.PSQLException: ERROR: transaction is read-only.: ERROR: transaction is read-only Caused by: org.postgresql.util.PSQLException: ERROR: transaction is read-only at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryEx ecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutor Impl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.ja va:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Stat ement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(Abstract Jdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc 2Statement.java:255) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele gatingPreparedStatement.java:92) at org.exolab.castor.jdo.keygen.MaxKeyGenerator.generateKey(MaxKeyGenera tor.java:162) at org.exolab.castor.jdo.engine.SQLStatementCreate.generateKey(SQLStatem entCreate.java:384) at org.exolab.castor.jdo.engine.SQLStatementCreate.executeStatement(SQLS tatementCreate.java:189) at org.exolab.castor.jdo.engine.SQLEngine.create(SQLEngine.java:313) at org.exolab.castor.persist.ClassMolder.create(ClassMolder.java:694) at org.exolab.castor.persist.LockEngine.create(LockEngine.java:532) at org.castor.persist.AbstractTransactionContext.walkObjectsToBeCreated( AbstractTransactionContext.java:817) at org.castor.persist.AbstractTransactionContext.create(AbstractTransact ionContext.java:777) at org.exolab.castor.jdo.engine.AbstractDatabaseImpl.create(AbstractData baseImpl.java:302) Steve ----- Original Message ----- From: "Werner Guttmann" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Friday, January 25, 2008 6:22 PM Subject: Re: [castor-user] read-only connection for generating keys for postgres.I think I'll need a full test case so that I am able to run it against e.g. Derby. Can you please supply us with one ? Werner Stephen Ince wrote:Werner, The read-only connection error showed up again on postgres. So "<param name="same-connection" value="false"/>" didn't resolve the problem. This problem only occurs with postgresql and derby. Hsqldb, db2, oracle and sqlserver all work fine. I think it has something to do with getting a connection from a pool that was previously set to read-only. Steve A fatal error occurred while creating/updating com.opendemand.security.UserProfi le using SQL: UPDATE "users" SET "user_name"=?,"title"=?,"fname"=?,"minitial"=?, "lname"=?,"passwd"=?,"role"=?,"status"=?,"license"=?,"total_test_ran"=?,"test_ti me"=?,"last_login_time"=?,"test_time_elapsed"=?,"group_id"=?,"company"=?,"accept _license"=?,"email"=?,"url"=?,"referred_by"=?,"telephone"=?,"fax"=?,"address"=?, "city"=?,"state"=?,"zipcode"=?,"country"=? WHERE "user_id"=? org.postgresql.util.PSQLException: ERROR: transaction is read-only at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryEx ecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutor Impl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.ja Steve ----- Original Message ----- From: "Werner Guttmann" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Friday, January 25, 2008 4:30 PM Subject: Re: [castor-user] read-only connection for generating keys for postgres.Interesting, indeed. How did you come about this solution for postgreSQL, if I may ask ? Werner Stephen Ince wrote:Werner, I think I solved the problem for postgres but not derby. <mapping> <key-generator name="HIGH-LOW" alias="keygen"> : <param name="same-connection" value="false"/> </key-generator> </mapping> This seemed to worked for postgres. With derby I get a similiar error. Nested error: java.sql.SQLException: An SQL data change is not permitted for a read-only connection, user or database.: An SQL data change is not permitted for a read-only connection, user or database. Steve ----- Original Message ----- From: "Werner Guttmann" <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> To: <[email protected] <mailto:[email protected]>> Sent: Friday, January 25, 2008 3:48 PM Subject: Re: [castor-user] read-only connection for generating keys for postgres. > Stephen, > > can you supply me with a test case (packaged as part of a Jira issue) so > that I could easily replay this problem ? > > Regards > Werner > > Stephen Ince wrote: >> I am getting the following error when I try to save an object using a >> key sequence. >> This works fine for oracle, sqlserver, hsqldb and db2. >> >> Here is my database.xml. Is there something I can do it to force castor >> to use a different connection to get the keys or change connection from >> read-only to non read-only? >> >> org.exolab.castor.jdo.keygen.MaxKeyGenerator: >> org.postgresql.util.PSQLException: ERROR: transaction is read-only.: >> ERROR: transaction is read-only >> >> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" >> "http://castor.exolab.org/mapping.dtd"> >> <mapping> >> <key-generator name="HIGH-LOW" alias="keygen"> >> <param name="table" value="seq"/> >> <param name="key-column" value="seq_table_name"/> >> <param name="value-column" value="max_pk_value"/> >> <param name="grab-size" value="50"/> >> <param name="same-connection" value="true"/> >> </key-generator> >> </mapping> >> >> Steve >> >> --------------------------------------------------------------------- >> To unsubscribe from this list please visit: >> >> http://xircles.codehaus.org/manage_email >> >> > > > --------------------------------------------------------------------- > To unsubscribe from this list please visit: > > http://xircles.codehaus.org/manage_email > >--------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email--------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email--------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email--------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email--------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email--------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
--------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

