Kollivakkam,

Is the value in your MOD_NUM incremented properly every time the record is updated? I am asking because I have a problem using the version field for optimistic locking.
Thanks,


Pulat

Kollivakkam R. Raghavan wrote:

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]



Reply via email to