I'd like to update this thread with a new set of observations.  Most
importantly, I have divorced myself from the notion that this has anythign
to do with the deferred library.

When I took the datastore puts out of the deferred function, they still
failed to complete.  When I put the puts inside a transaction, it helps a
little bit, but the puts still fail about a third of the time.  My question
is why this would be happening on the SDK.  There is nothing else running in
the background when these puts are getting issued.

Your thoughts are much appreciated!

On Sun, Jun 13, 2010 at 2:58 PM, Alon Carmel <[email protected]> wrote:

> having the same issue exactly. deferred lib runs two tasks then halts
> without uppering the counter. i thought i had some issue.
> -
> Cheers,
> public static function AlonCarmel() {
> //Contact me
> var email = '[email protected]';
> var twitter = '@aloncarmel';
> var web = 'http://aloncarmel.me';
> var phone = '+972-54-4860380';
> }
>
> * If you received an unsolicited email from by mistake that wasn't of your
> matter please delete immediately. All E-mail sent from Alon Carmel is
> copyrighted to Alon Carmel 2008. Any details revealed in e-mails sent by
> Alon Carmel are owned by the Author only. Any attempt to duplicate or
> imitate any of the Content is prohibited under copyright law 2008.
>
>
>
> On Sun, Jun 13, 2010 at 11:00 PM, Aaron Cheung 
> <[email protected]>wrote:
>
>> Hi Nick,
>>
>> Unfortunately, putting the update inside a transaction didn't solve the
>> problem.  This problem is currently occuring on the SDK, where there
>> shouldn't be any concurrency issues.  I looked into AppStats again, and I
>> can clearly seeing the datastore.v3Commit taking place.  And, I am pretty
>> sure the values are being passed in and set properly.  It just fails a large
>> portion of the time.  Any other ideas?
>>
>> Very best and thanks for your help,
>> Aaron
>>
>>
>> On Sun, Jun 13, 2010 at 4:47 AM, Nick Johnson (Google) <
>> [email protected]> wrote:
>>
>>> Hi Aaron,
>>>
>>> Since you're not doing the update inside a transaction, it's likely that
>>> what's happening is that multiple tasks are updating the entity at the same
>>> time, which results in a concurrency issue: Both tasks fetch the entity and
>>> modify it, and the one that does the put last is the one whose results are
>>> visible.
>>>
>>> Doing the update in a transaction should fix this.
>>>
>>> -Nick Johnson
>>>
>>> On Sun, Jun 13, 2010 at 8:50 AM, Aaron Cheung 
>>> <[email protected]>wrote:
>>>
>>>> Hi guys,
>>>>
>>>> I'm still having trouble debugging this error.  Would appreciate any
>>>> thoughts!
>>>>
>>>> Thanks,
>>>> Aaron
>>>>
>>>>
>>>> On Sat, Jun 12, 2010 at 3:55 AM, Aaron <[email protected]>wrote:
>>>>
>>>>> Hi!
>>>>>
>>>>> I am currently implementing the deferred library in my code, and I am
>>>>> running into a very very strange problem.  The function that I am
>>>>> deferring gets passed an entity key.  It does two tasks: 1) Gets the
>>>>> entity,  retrieves a reference property, alters it, and then puts it
>>>>> back 2)Sends out an email
>>>>>
>>>>> The email is getting sent out every time the deferred function is
>>>>> called.  BUT, the first task only completes 2/3 of the time.  I have
>>>>> been replicating this error over and over and have yet to find any
>>>>> pattern in the failures.  Here is the deferred function
>>>>>
>>>>> def complete_insert(self, data, answer_key, userkey):
>>>>>        a = db.get(answer_key)
>>>>>        q = a.question
>>>>>        q.answercount += 1
>>>>>        q.answerers += [str(userkey)]
>>>>>        q.answerers = list(set(q.answerers))
>>>>>        q.answered = True
>>>>>        q.lastanswer = str(answer_key)
>>>>>        q.lastanswerdate = datetime.now()
>>>>>        q.put()
>>>>>
>>>>>        mail = Mail()
>>>>>        followers = db.get(q.indexes.followerlist)
>>>>>        emails = []
>>>>>        for follower in followers:
>>>>>            mail.send(emails, "question-followers-email", params =
>>>>> {"question": common.strip_html(q.question),
>>>>> "details":common.strip_html(q.details), "slug":q.slug,
>>>>> "answer":common.strip_html(data["answer"])} )
>>>>>
>>>>> A couple observations that make this even more boggling.  I can tell
>>>>> when the function fails because the counter does not increment and the
>>>>> other properties do not change.  However, when it fails, I can see the
>>>>> put() being done in AppStats under /ah/deferred.  FURthermore, I have
>>>>> checked that the values being passed into the function are the ones
>>>>> that I am expecting.  (I did this by adding another put that wrote the
>>>>> arguments to a test model)
>>>>>
>>>>> I have absolutely no idea what could be going on here.  Is this a bug?
>>>>>
>>>>> Very best and thanks for your time,
>>>>> Aaron
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Google App Engine" group.
>>>>> To post to this group, send email to [email protected]
>>>>> .
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<google-appengine%[email protected]>
>>>>> .
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/google-appengine?hl=en.
>>>>>
>>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Google App Engine" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<google-appengine%[email protected]>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/google-appengine?hl=en.
>>>>
>>>
>>>
>>>
>>> --
>>> Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd.
>>> :: Registered in Dublin, Ireland, Registration Number: 368047
>>> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
>>> Number: 368047
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Google App Engine" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<google-appengine%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-appengine?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<google-appengine%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to