Hi Werner,
        Transaction.DbLocked relates to access mode 3 in Castor, and
this how we have mapped our access modes.

        public final static short ReadOnly = 0;
        public final static short Shared = 1;
        public final static short Exclusive = 2;
        public final static short DbLocked = 3;

Thanks & regards,
Jimmy

-----Original Message-----
From: Werner Guttmann [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 03, 2004 1:43 AM
To: [EMAIL PROTECTED]
Subject: Re: [castor-user] Dblocked mode & Mysql DB


And one more question: how is Transaction.DbLocked defined ?

Werner

On Thu, 3 Jun 2004 01:18:40 +0530, [EMAIL PROTECTED] wrote:

>
>Werner,
>
>       Below the code you asked for.
>
>I'm still very concerned about this:
>Q. Transaction1 in thread1 has DBLocked a row in a table. Now will
>Transaction2 in thread2 be able to read the same row while transaction1
>is not commited ?
>
>=============================
>
>public Rocket retrieveByName(
>        String name, Transaction tran, short accessMode)
>        throws DbPersistenceException
>    {
>        Rocket rocket = null;
>        OQLQuery aQuery = null;
>        CastorTransaction cTran = null;
>        Database db = null;
>
>        try
>        {
>            cTran = (CastorTransaction) tran;
>            db = cTran.getDatabase();
>            aQuery =
>                db.getOQLQuery(
>                    " SELECT rocket FROM rnd.domain.Rocket rocket "
>                    + " WHERE rocket.rocketName = $1");
>            aQuery.bind(name);
>
>            ArrayList list = retrieve(aQuery, accessMode);
>
>            if ((list != null) && (list.size() > 0))
>            {
>                rocket = (Rocket) list.get(0);
>            }
>        }
>        catch (PersistenceException ex)
>        {
>            daoErrorHandler(ex);
>        }
>
>        return rocket;
>    }
>
>Jimmy
>
>-----Original Message-----
>From: Werner Guttmann [mailto:[EMAIL PROTECTED]
>Sent: Thursday, June 03, 2004 12:12 AM
>To: [EMAIL PROTECTED]
>Subject: Re: [castor-user] Dblocked mode & Mysql DB
>
>
>Jimmy,
>
>just browsing through your code, and the following code snipped caught
>my attention:
>
>Rocket rocket =  rocket_DAO.retrieveByName (PRITHVI, transaction,
>Transaction.DbLocked);
>
>Can you please provide me with the details of what code is being
>executed as a result of the call to retrieveByName() ?
>
>Werner
>
>--Original Message Text---
>From: [EMAIL PROTECTED]
>Date: Wed, 2 Jun 2004 19:05:10 +0530
>
>
>
>Werner,
>
> 
>
>            Before we indulge into the time out issues, I would like
>your confirmation whether this is an expected behavior, wherein an
>object being
>dbLocked also gets the read lock on it.
>
> 
>
>If the output of the sample code below is as the expected behavior, I
>wouldnt like to have read locks when I DbLock my object, since the
>performance
>of my application is degrading a lot.
>
> 
>
>            Regarding the table type, Im using innodb tables of mysql.
>
>
> 
>
>Heres the Log of my test case:
>
>Setting data in DB
>
>Setting data in DB -- Done
>
>Starting Writer thread.....
>
>WriterThread -- Before db locking
>
>WriterThread -- After db locking
>
>WriterThread -- Before updating name
>
>ReaderThread -- Starting reader thread.....
>
>ReaderThread -- Trying to read.....
>
>WriterThread -- After updating name
>
>WriterThread -- Commiting & Closing transaction
>
>ReaderThread -- Read: [Rocket(WriterThread changed Name), with
>Fuel(Solid Ammonia)]
>
>ReaderThread -- Trying to read.....
>
>ReaderThread -- Read: [Rocket(WriterThread changed Name), with
>Fuel(Solid Ammonia)]
>
>ReaderThread -- Trying to read.....
>
>ReaderThread -- Read: [Rocket(WriterThread changed Name), with
>Fuel(Solid Ammonia)]
>
>ReaderThread -- Trying to read.....
>
>ReaderThread -- Read: [Rocket(WriterThread changed Name), with
>Fuel(Solid Ammonia)]
>
>ReaderThread -- Trying to read.....
>
>ReaderThread -- Read: [Rocket(WriterThread changed Name), with
>Fuel(Solid Ammonia)]
>
>WriterThread -- Clearing the DB
>
>ReaderThread -- Trying to read.....
>
>ReaderThread -- Read: [Rocket(WriterThread changed Name), with
>Fuel(Solid Ammonia)]
>
>WriterThread -- Clearing the DB... finished
>
>ReaderThread -- Stopped reading.
>
>
>
>The run method of Writer thread:
>
> 
>
>public void run()
>
>    {
>
>        try
>
>        {
>
>            System.out.println("Starting Writer thread.....");
>
> 
>
>            System.out.println("WriterThread -- Before db locking");
>
> 
>
>            Rocket rocket =
>
>                rocket_DAO.retrieveByName(
>
>                    PRITHVI, transaction, Transaction.DbLocked);
>
>            System.out.println("WriterThread -- After db locking");
>
>            System.out.println("WriterThread -- Before updating name");
>
>
>            sleep(3000);
>
>            rocket.setRocketName("WriterThread changed Name");
>
>            System.out.println("WriterThread -- After updating name");
>
>            sleep(10000);
>
>            transaction.commitAndClose();
>
>            System.out.println(
>
>                "WriterThread -- Commiting & Closing transaction");
>
>            sleep(5000);
>
>            System.out.println("WriterThread -- Clearing the DB");
>
>            deleteDB();
>
>            System.out.println("WriterThread -- Clearing the DB...
>finished");
>
>        }
>
>        catch (Exception e)
>
>        {
>
>            e.printStackTrace();
>
>        }
>
>    }
>
> 
>
>The run method of the Writer Thread:
>
> 
>
>    public void run()
>
>    {
>
>        try
>
>        {
>
>            System.out.println("ReaderThread -- Starting reader
>thread.....");
>
> 
>
>            while (read)
>
>            {
>
>                System.out.println("ReaderThread -- Trying to
>read.....");
>
> 
>
>                ArrayList rockets =
>
>                    rocket_DAO.retrieveAllRockets(txn,
>Transaction.ReadOnly);
>
>                System.out.println("ReaderThread -- Read: " + rockets);
>
>
>                sleep(1000);
>
>            }
>
> 
>
>            System.out.println("ReaderThread -- Stopped reading.");
>
>        }
>
>        catch (Exception e)
>
>        {
>
>            e.printStackTrace();
>
>        }
>
>    }
>
> 
>
> 
>
>Thanks & Regards,
>
>Jimmy
>
>-----Original Message-----
>From: Werner Guttmann [mailto:[EMAIL PROTECTED]
>Sent: Wednesday, June 02, 2004 6:08 PM
>To: [EMAIL PROTECTED]
>Subject: Re: [castor-user] Dblocked mode & Mysql DB
>
> 
>
>Jimmy,
>
>you could try increasing the lock timeout to a value that suits your
>needs via JDO.setLockTimeout (int) rather than messing around with read
>and write
>locks. Btw, what table type are you using with mySQL ?
>
>In addition, can you please provide us with a complete stack tarce of
>the exception being thrown when a read operation's lock expires ?
>
>Thanks
>Werner
>
>PleaseJDO.java--Original Message Text---
>From: [EMAIL PROTECTED]
>Date: Wed, 2 Jun 2004 17:02:33 +0530
>
>
>
>Hi,
>
>
>
>I working with Castor 0.9.5.3 (Cache type = NONE) & mySQL 4 and I am
>facing problems wherein castor says Read lock timeout, this usually
>occurs
>when I try to read an object in one thread, but at the same time some
>other thread has dblocked that object. I also happen to notice that,
>when I do a
>Dblock on an object, Castor applies both a read & write lock on the
>record, but mysql allows read on those records mapped to the object, at
>its prompt.
>
>
>
>I guess the read lock timeouts are happening because the object thats
>been dbLocked, is been held in the lock state for more than the timeout
>period
>and the reading thread is not allowed access to this object. But this
>could be serious limitation, since in my application there many threads
>working on
>the same object/table and if a thread happen to dblocked that object
for
>some period of time, then the remaining threads who just want to read
>has to
>wait, till the read lock is released.
>
>
>
>So I would like to know is there any way that I could just do a write
>lock and not read lock on the object that I would like to update. Also
>does Castor
>have any specific way of retrieving objects referenced in an object;
say
>in the order its been mapped in the mapping file or does Castor loads
>the object
>in an arbitrary fashion.
>
>
>
>
>
>Thanks & Regards,
>
>Jimmy Thomas
>
>
>
>
>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.
>
>
>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 mailing, send mail to
>[EMAIL PROTECTED] with a subject of:
>        unsubscribe castor-user
>
>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 mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

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 mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

Reply via email to