• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Trying to clear a dead-lock of some type
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Trying to clear a dead-lock of some type


  • Subject: Re: Trying to clear a dead-lock of some type
  • From: Sacha Mallais <email@hidden>
  • Date: Thu, 19 May 2005 12:58:36 -0700

On May 19, 2005, at 12:22 pm, WebObjects wrote:

The following function works consistently, unless there is some contention
(I'm sharing a datasource with other applications). There is the expected
issue of saving to a locked row - but even if I trap the exception, then
repeat this function some time later (after I'm certain the other apps are
not locking the same rows) I still get the same contention.


What exception are you seeing?  Can you post it?


First, do you see anything in this method that is out of place or sequence?
(it occurs in a TimerTask within Application)


One thing I noticed is that you should wrap ec.unlock() in a finally clause.

Also, this is inefficient:
NSMutableArray foundTasks = new NSMutableArray(array);
Use array.mutableClone() instead.


I'm not 100% certain that my ec.refreshAllObjects is place in the proper place.

If you're trying to make sure that you have fresh data from the databse, this will not work -- it will only refresh from the local cache. This link may help
http://developer.apple.com/documentation/WebObjects/Reference/API5.2.3/ com/webobjects/eocontrol/concepts/ EOEditingContextConcepts.html#MANAGINGOBJECTGRAPH


HTH,


sacha


Advice is greatly appreciated!

-Bill


public void SearchForSixAMTasks() {

        try{

TimeZone tz = TimeZone.getTimeZone("Etc/GMT");
NSTimestamp SixAM = new NSTimestamp(1899, 12, 30, 14, 2, 0, tz);
NSMutableArray args = new NSMutableArray();
args.addObject(SixAM);
args.addObject("0");
EOQualifier qualifier =
EOQualifier.qualifierWithQualifierFormat("starttime = %@ AND
taskcompletedindicator = %@", args);



EOFetchSpecification spec = new EOFetchSpecification("Tbltasks",
qualifier, null);



EOEditingContext ec = new EOEditingContext(); ec.refreshAllObjects();

        //lock EC
        ec.lock();

        //Fetch
        NSArray array = ec.objectsWithFetchSpecification(spec);
        NSMutableArray foundTasks = new NSMutableArray(array);


Enumeration e = foundTasks.objectEnumerator();

            while(e.hasMoreElements()) {

                Tbltasks currentTask = (Tbltasks)e.nextElement();
                TaskReview review = new TaskReview();

System.out.println(currentTask.taskcomment() + " - before
change.");


                review.GetRepsData(currentTask); //data is
read,modified,etc. in this method

System.out.println(currentTask.taskcompletedindicator());

                System.out.println(currentTask.alarmindicator());

                }

            ec.saveChanges();

            //-- unlock EC
            ec.unlock();
            ec.refreshAllObjects();


} catch (Exception e) {

// - Definite potential for locking issues with TPE, but
only when intentionally trying to break it
System.out.println("RepeatingTask: exception in
SearchForSixAMTasks()");


                }

            }


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
village.net


This email sent to email@hidden

--
Sacha Michel Mallais - 400 lb. chimp
Global Village Consulting Inc.:   http://www.global-village.net/
            1. Never tell everything at once.
            -- Ken Venturi, Ken Venturi's Two Great Rules of Life

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Trying to clear a dead-lock of some type
      • From: WebObjects <email@hidden>
    • Re: Trying to clear a dead-lock of some type
      • From: WebObjects <email@hidden>
References: 
 >Trying to clear a dead-lock of some type (From: WebObjects <email@hidden>)

  • Prev by Date: Re: Trying to clear a dead-lock of some type
  • Next by Date: Re: Trying to clear a dead-lock of some type
  • Previous by thread: Re: Trying to clear a dead-lock of some type
  • Next by thread: Re: Trying to clear a dead-lock of some type
  • Index(es):
    • Date
    • Thread