No our application is one where client and server need to periodically
sync. Up.  Instead of using time to figure out what has changed we use a
synchronization seq. number which the client and server exchange.  So
this is not the locking col.  The locking column is the MOD_NUM column
in the table.
Thanks 
Raghavan

-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED] 
Sent: Thursday, September 16, 2004 12:34 AM
To: OJB Users List
Subject: Re: Optimistic Locking exception with 1.0 - doesn't happen with
rc4


Hi Raghavan,

do you increment the optimistic locking field by yourself with

policy.setSyncSeqNum(SynchronizationLogic.getNextSynchronizationSequence
Number().longValue());

??Armin
OJB itself does increment/reset the locking field, if you increment too,

all the time a OLException will be thrown.

regards



Kollivakkam R. Raghavan wrote:
> Yes! Happens all the time.  My repository file is attached.  I am 
> using an integer version counter and set it up to have OJB provide the

> value. It happens, when I'm trying to execute the following code.  The

> table declaration and the repository file are also attached.  As you 
> can see it's pretty vanilla OJB code - nothing fancy.
> 
> -----------------------
> private static void savePolicyRecord(AbstractConfigPolicyData policy, 
> AMCContext context) throws AMCException
>     {
>         PersistenceBroker broker = null;
>         
>         if (context != null && context.getUser() != null) {
>             policy.setModifierId(context.getUser().getId());
>         }
>         policy.setModificationTime(new Date());
>         
>  
> policy.setSyncSeqNum(SynchronizationLogic.getNextSynchronizationSequen
> ce
> Number().longValue());
>         
>         try
>         {
>             broker = 
> PersistenceBrokerFactory.defaultPersistenceBroker();
>             broker.beginTransaction();
>             broker.store(policy);
>             broker.commitTransaction();
> 
>         }
>         catch(PBFactoryException ex)
>         {
>             log.error(PB_FACTORY_EXCEPTION, ex);
>             throw new AMCException(DATABASE_ERROR_KEY, ex, 
> DATABASE_ERROR_CODE);
>         }
>         catch(PersistenceBrokerException ex)
>         {
>             log.error(PERSISTENCE_BROKER_EXCEPTION, ex);
>             throw new AMCException(DATABASE_ERROR_KEY, ex, 
> DATABASE_ERROR_CODE);
>         }
>         finally
>         {
>             if (broker != null)
>             {
>                 broker.close();
>             }
>         }
>     }
> 
> -----------------
> 
> Table definition
> CREATE TABLE AMC_NODE_PSET
>   (
>     ID                    int             not null identity primary
key,
>     MODIFICATION_TIME     timestamp       default 'now' not null,
>     MODIFIER_ID           int,
>     MOD_NUM               int             not null,
>     CREATED               timestamp       default 'now' not null,
>     NODE_ID               int,
>     DR_ID                 int,
>     GOLDEN_CONFIG_ID      int,
>     POLICY_TYPE           varchar(4)      not null,
>     BUNDLE_TYPE           int             default '1' not null,  --
'1'
> - ama, '2' - aons
>     CONFIG_STATE          char            not null,  -- 'G' - Golden
> Config, 'A' - Add, 'M' - Modified, 'D' - Delete, 'R' - Archived.
>     SYNC_SEQ_NUM          bigint          not null,
>     DATA                  image,
>     NAME                  varchar(64)     not null,
>     QNAME                 varchar(64)     not null,
>     DESCRIPTION           varchar(64),
>     EXT1                  image,
>     EXT2                  varchar(64),
>     EXT3                  varchar(64),
> 
>     foreign key(NODE_ID) references AMC_AONS_NODE(ID),
>     foreign key(DR_ID) references AMC_NODE_DR(ID),
>     foreign key(MODIFIER_ID) references AMC_USER(ID)
>   );
> 
> -----Original Message-----
> From: Brian McCallister [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, September 14, 2004 6:14 PM
> To: OJB Users List
> Subject: Re: Optimistic Locking exception with 1.0 - doesn't happen
with
> rc4
> 
> 
> I presume you can reliably replicate it, can you provide more
> information about when it is happening?
> 
> Database, mapping for the optimistic TX field etc?
> 
> There were a couple changes to optimistic tx's when using a timestamp
> instead of version counter.
> 
> Any chance you can send a unit test which causes this to happen? If
> not, enough information on exactly when it happens so that I can do so

> would be appreciated!
> 
> -Brian
> 
> On Sep 14, 2004, at 8:03 PM, Kollivakkam R. Raghavan wrote:
> 
> 
>>I am getting the following exception with an optimistic locking which
>>does not happen with rc4.  Did something change?  We are about to use 
>>OJB in production and I wanted to switch to the release version.
>>Please
>>help.
>>Thanks Raghavan
>>
>>
>>------------------
>>
>>
>>
>>        at java.lang.Thread.run(Unknown Source)
>>Caused by: org.apache.ojb.broker.OptimisticLockException: Object has
>>been modifi ed by someone else
>>        at 
>>org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeUpdate(JdbcAc
>>cessImpl.java:485)
>>        at 
>>org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Persistenc
>>eBrokerImpl.java:1641)
>>        at 
>>org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
>>kerImpl.java:1542)
>>        at 
>>org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
>>kerImpl.java:705)
>>        at 
>>org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
>>ngPersistenceBroker.java:174)
>>        at 
>>org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
>>ngPersistenceBroker.java:174)
>>a:1770)
>>        ... 40 more
>>
>>Additional exceptions :
>>
>>14-Sep-2004 16:23:42 WARN  [010-Processor25]
>>.broker.core.PersistenceBrokerImpl
>>No running tx found, please only store in context of an 
>>PB-transaction, to avoid  side-effects - e.g. when rollback of complex
> 
> 
>>objects 14-Sep-2004 16:23:42 ERROR [010-Processor25] Database error:
>>PersistenceBrokerException was caught
>>org.apache.ojb.broker.OptimisticLockException: Object has been 
>>modified by someo ne else
>>        at 
>>org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeUpdate(JdbcAc
>>cessImpl.java:485)
>>        at 
>>org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Persistenc
>>eBrokerImpl.java:1641)
>>        at 
>>org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
>>kerImpl.java:1542)
>>        at 
>>org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBro
>>kerImpl.java:705)
>>        at 
>>org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
>>ngPersistenceBroker.java:174)
>>        at 
>>org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Delegati
>>ngPersistenceBroker.java:174)
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> ----------------------------------------------------------------------
> --
> 
> <class-descriptor class="com.cisco.aons.amc.data.NodePSet" 
> table="AMC_NODE_PSET">
> 
>      <field-descriptor
>          name="id"
>          autoincrement="true"
>          primarykey="true"
>          nullable="false"
>          column="ID"
>          jdbc-type="INTEGER"/>
> 
>      <field-descriptor
>          name="modificationTime"
>          nullable="false"
>          column="MODIFICATION_TIME"
>          jdbc-type="TIMESTAMP"
>          
> conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2Sql
> TimestampFieldConversion"/>
> 
>      <field-descriptor
>          name="modifierId"
>          column="MODIFIER_ID"
>          jdbc-type="INTEGER"/>
> 
>      <field-descriptor
>          name="modNum"
>          nullable="false"
>          column="MOD_NUM"
>          jdbc-type="INTEGER"
>          locking="true"/>
>          
>      <field-descriptor 
>          name="created" 
>          nullable="false" 
>          column="CREATED" 
>          jdbc-type="TIMESTAMP" 
>
conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTi
mestampFieldConversion"/>    
>                   
>      <field-descriptor
>          name="nodeId"
>          column="NODE_ID"
>          jdbc-type="INTEGER"/>       
>           
>      <field-descriptor
>          name="drId"
>          column="DR_ID"
>          jdbc-type="INTEGER"/>
>           
>      <field-descriptor
>          name="goldenConfigId"
>          column="GOLDEN_CONFIG_ID"
>          jdbc-type="INTEGER"/>
>          
>      <field-descriptor
>          name="policyType"
>          nullable="false"
>          column="POLICY_TYPE"
>          jdbc-type="VARCHAR"
>          
> conversion="com.cisco.aons.amc.data.conversion.PolicyTypeConvertor"/>
> 
>      <field-descriptor
>          name="bundleType"
>          nullable="false"
>          column="BUNDLE_TYPE"
>          jdbc-type="INTEGER"/>
>        
>      <field-descriptor
>          name="configState"
>          nullable="false"
>          column="CONFIG_STATE"
>          jdbc-type="CHAR"/>
>          
>      <field-descriptor 
>          name="syncSeqNum"
>          nullable="false"
>          column="SYNC_SEQ_NUM" 
>          jdbc-type="BIGINT"/>   
>      
>      <field-descriptor 
>          name="data" 
>          column="DATA" 
>          jdbc-type="VARBINARY"/>          
>          
>      <field-descriptor
>          name="name"
>          nullable="false"
>          column="NAME"
>          jdbc-type="VARCHAR"/>
> 
>      <field-descriptor
>          name="qualifiedName"
>          nullable="false"
>          column="QNAME"
>          jdbc-type="VARCHAR"/>
> 
>      <field-descriptor
>          name="description"
>          column="DESCRIPTION"
>          jdbc-type="VARCHAR"/>
>                 
>      <field-descriptor
>          name="ext1"
>          column="EXT1"
>          jdbc-type="VARBINARY"/>
>          
>      <field-descriptor
>          name="ext2"
>          column="EXT2"
>          jdbc-type="VARCHAR"/>
> 
>      <field-descriptor
>          name="ext3"
>          column="EXT3"
>          jdbc-type="VARCHAR"/>         
>          
> </class-descriptor>
> 
> 
> ----------------------------------------------------------------------
> --
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to