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


Reply via email to