Hi,
I am trying to retrieve the record CounterVar (id=4, type=1) - see
mapping file description below - in one transaction. In the same
program, with a different transaction, I am trying to retrieve the
record CounterVar (id=1, type=1) in the DbLocked mode. Note that in both
cases the type field references the same record. This results in my
second transaction getting LockNotGrantedException (writeLockTimeout).
When I rollback both transactions and retry the retrieve (in the context
of the same process), I observed that the call to QueryResults.size()
returns 1, but the call to QueryResults.hasMore() returns false. On
further investigation, I found that the call to hasMore() sees the
following exception stack trace:
org.exolab.castor.jdo.ObjectNotFoundException: The object of type
CounterVar with identity 1 was not found in persistent storage
at
org.exolab.castor.persist.LockEngine.load(LockEngine.java:385)
at
org.exolab.castor.persist.TransactionContext.load(TransactionContext.jav
a:651)
at
org.exolab.castor.persist.QueryResults.fetch(QueryResults.java:229)
at
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQuer
yImpl.java:633)
at
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQuer
yImpl.java:614)
at TestWriteLockTimeout.main(TestWriteLockTimeout.java:84)
In looking at the code, I see that LockEngine.load() is actually
converting the exception ObjectDeletedWaitingForLockException into
ObjectNotFoundException.
I am guessing that this is happening because of the previous
(unsuccessful) retrieve. Any idea how this can be fixed?
Regards, Vishal.
PS: I have test programs that simulate this problem. I can send it if
someone is interested in looking at the problem.
I have the following mapping in my test program:
<mapping>
<!-- Mapping for CounterType table -->
<class name="CounterType"
identity="id" key-generator="IDENTITY">
<cache-type type="none" />
<map-to table="COUNTER_TYPE" />
<field name="id" type="integer" >
<sql name="counter_type_id" type="integer"/>
</field>
<field name="description" type="string">
<sql name="counter_type_desc" type="varchar" />
</field>
</class>
<!-- Mapping for CounterVar table -->
<class name="CounterVar"
identity="id" key-generator="IDENTITY">
<cache-type type="none" />
<map-to table="COUNTER_VAR" />
<field name="id" type="integer" >
<sql name="counter_var_id" type="integer"/>
</field>
<field name="number" type="integer" >
<sql name="counter_var_number" type="integer"/>
</field>
<field name="type" type="CounterType">
<sql name="counter_var_type" />
</field>
</class>
</mapping>
Confidentiality Notice
The information contained in this electronic message and any attachments to
this message are intended
for the exclusive use of the addressee(s) and may contain confidential or
privileged information. If
you are not the intended recipient, please notify the sender at Wipro or [EMAIL
PROTECTED] immediately
and destroy all copies of this message and any attachments.
-------------------------------------------------
If you wish to unsubscribe from this list, please
send an empty message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------