Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

SDK 1.1.6 Released

12 views
Skip to first unread message

Marzia Niccolai

unread,
Nov 20, 2008, 9:07:07 PM11/20/08
to Google App Engine
Hi,

Today we released the 1.1.6 SDK.  You can download it on our Google hosting project (http://code.google.com/p/googleappengine/downloads/list), and peruse the release notes (http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes) for more details on the release.

This release contains some notable new features, including several additions to the datastore:

* You can now sort and filter on an entity's key: http://code.google.com/appengine/docs/datastore/queriesandindexes.html#Queries_on_Keys
* You can now delete an entity directly using its key, without instantiating/fetching the Model object
* If you specify a key_name when creating a Model, its key will now be available before you call put()
* URLFetch calls made in the SDK now have a 5 second timeout, matching production

Also, it contains a number of issue fixes, including the following:

* The SDK now only supports the same headers as production: http://code.google.com/p/googleappengine/issues/detail?id=53
* In production, fixed an erroneous NeedIndexError when two ancestor queries were specified: http://code.google.com/p/googleappengine/issues/detail?id=423
* Calling to_xml on a model instance containing a BlobProperty returns that BlobProperty base64 encoded: http://code.google.com/p/googleappengine/issues/detail?id=430
* URLFetch now uses the original HTTP method (e.g. POST) when following a redirect: http://code.google.com/p/googleappengine/issues/detail?id=363

-Marzia

Adam Fisk

unread,
Nov 20, 2008, 11:08:37 PM11/20/08
to Google App Engine
Exciting, Marzia. So sorting on a key would be much faster way of
doing a bulk update of existing data of the kind described at:

http://code.google.com/appengine/articles/update_schema.html

in the "Updating Existing Entities" section, is that correct? Any
idea how much faster sorting by the key is? Seems like these bulk
updates must be a major bottleneck for quite a few people -- they
certainly are for me!

Thanks.

-Adam


On Nov 20, 6:07 pm, Marzia Niccolai <ma...@google.com> wrote:
> Hi,
>
> Today we released the 1.1.6 SDK.  You can download it on our Google hosting
> project (http://code.google.com/p/googleappengine/downloads/list), and
> peruse the release notes (http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes) for more
> details on the release.
>
> This release contains some notable new features, including several additions
> to the datastore:
>
> * You can now sort and filter on an entity's key:http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...

Sachin

unread,
Nov 21, 2008, 1:38:54 AM11/21/08
to Google App Engine
I just upgraded to the latest 1.1.6 SDK using the Mac installer. Since
upgrading though the launcher has been hanging repeatedly. I've had to
force quit the launcher 3 times in the past hour. This occurs randomly
when I load a page.

Sachin

On Nov 20, 6:07 pm, Marzia Niccolai <ma...@google.com> wrote:
> Hi,
>
> Today we released the 1.1.6 SDK.  You can download it on our Google hosting
> project (http://code.google.com/p/googleappengine/downloads/list), and
> peruse the release notes (http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes) for more
> details on the release.
>
> This release contains some notable new features, including several additions
> to the datastore:
>
> * You can now sort and filter on an entity's key:http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...

Paul Kinlan

unread,
Nov 21, 2008, 3:28:36 AM11/21/08
to google-a...@googlegroups.com

Andy Freeman

unread,
Nov 21, 2008, 9:40:55 AM11/21/08
to Google App Engine
ARGH - the windows installer for 1.1.6 broke my 1.1.5 version.

Nothing in the release notes suggested such behavior.

It looks like the 1.1.6 installer moves things from 1.1.5. This makes
it impossible to run 1.1.5 after installing 1.1.6. Since the moved
things overwrote the 1.1.6 versions, it's impossible to see how those
things changed in 1.1.6.

So far, I've found that it moved dev_appserver.py, demos, templates,
tools, new_project_template, appcfg.py.


On Nov 20, 6:07 pm, Marzia Niccolai <ma...@google.com> wrote:
> Hi,
>
> Today we released the 1.1.6 SDK.  You can download it on our Google hosting
> project (http://code.google.com/p/googleappengine/downloads/list), and
> peruse the release notes (http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes) for more
> details on the release.
>
> This release contains some notable new features, including several additions
> to the datastore:
>
> * You can now sort and filter on an entity's key:http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...

Marce (Google)

unread,
Nov 21, 2008, 1:27:59 PM11/21/08
to Google App Engine
Today we released the 1.1.7 SDK in order to fix the following issue
that occurred in 1.1.6:
http://code.google.com/p/googleappengine/issues/detail?id=877

-Marzia

On Nov 20, 6:07 pm, Marzia Niccolai <ma...@google.com> wrote:
> Hi,
>
> Today we released the 1.1.6 SDK.  You can download it on our Google hosting
> project (http://code.google.com/p/googleappengine/downloads/list), and
> peruse the release notes (http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes) for more
> details on the release.
>
> This release contains some notable new features, including several additions
> to the datastore:
>
> * You can now sort and filter on an entity's key:http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...

Joel Odom

unread,
Nov 21, 2008, 2:07:08 PM11/21/08
to google-a...@googlegroups.com
When will it appear on the download page?  Thanks.

Marzia Niccolai

unread,
Nov 21, 2008, 2:13:05 PM11/21/08
to google-a...@googlegroups.com
It will appear soon.  But it's already available here:
http://code.google.com/p/googleappengine/

-Marzia

Anthony

unread,
Nov 21, 2008, 8:14:36 PM11/21/08
to Google App Engine
"URLFetch calls made in the SDK now have a 5 second timeout, matching
production"

Is it possible to turn the timeout off in the SDK?

We have some scripts that run locally to do batch updates & fixes that
hit external API's, they take longer than 5 seconds which is why we
run them locally through the SDK.



On Nov 21, 2:07 am, Marzia Niccolai <ma...@google.com> wrote:
> Hi,
>
> Today we released the 1.1.6 SDK.  You can download it on our Google hosting
> project (http://code.google.com/p/googleappengine/downloads/list), and
> peruse the release notes (http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes) for more
> details on the release.
>
> This release contains some notable new features, including several additions
> to the datastore:
>
> * You can now sort and filter on an entity's key:http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...

Marzia Niccolai

unread,
Nov 21, 2008, 8:29:15 PM11/21/08
to google-a...@googlegroups.com
Hi Sachin,

If you could grab the Monitor out put when the hangs happen, that would really help us troubleshoot why this could be happening:

Open /Applications/Utilities/Activity Monitor.app
Cmd-1 for "Activity Monitor" window
When Launcher hangs, select it in Activity Monitor, then click "Sample Process".
And email us the results.

Thanks,
Marzia

David Symonds

unread,
Nov 21, 2008, 8:29:55 PM11/21/08
to google-a...@googlegroups.com
On Sat, Nov 22, 2008 at 12:14 PM, Anthony <acor...@gmail.com> wrote:

> "URLFetch calls made in the SDK now have a 5 second timeout, matching
> production"
>
> Is it possible to turn the timeout off in the SDK?
>
> We have some scripts that run locally to do batch updates & fixes that
> hit external API's, they take longer than 5 seconds which is why we
> run them locally through the SDK.

Won't they be just as slow in production? The SDK is there to be a
development model of the production infrastructure.


Dave.

Marzia Niccolai

unread,
Nov 21, 2008, 8:30:50 PM11/21/08
to google-a...@googlegroups.com
Hi Anthony,

If you want to turn off the timeout of the SDK, you just need to comment out the following line in urlfetch_stub.py:

socket.setdefaulttimeout(_API_CALL_DEADLINE)

-Marzia

Denis

unread,
Nov 22, 2008, 3:54:42 PM11/22/08
to Google App Engine
Hi Marzia,

>You can now delete an entity directly using its key, without
>instantiating/fetching the Model object

Good. Will this be documented?

What happens is I pass non-existing key? On SDK the non-existing
keys seem to be simply ignored. However the documentation suggest an
exception will be raised (it also says an exception will be raised if
the call span multiple entity groups!).

I'm also concerned about the performance of this deletion. I have a
list of keys to delete. Only about 25% of those keys really exist in
the datastore. Right now I delete them with the following code:
--------
deleteModels = db.get( deleteKeys )
deleteModels = [k for k in deleteModels if k]
db.delete( deleteModels )
--------

Now with version 1.1.7, I want to replace this with the following:
--------
db.delete( deleteKeys )
--------
This code works, but works significantly slower (4 times) that the
previous code with preliminary db.get(). It looks like deleting non-
existing records take the same amount of time as deleting an existing
record.

Is this the SDK issue, or the production will also have such an
issue?

Denis

ryan

unread,
Nov 23, 2008, 1:53:45 PM11/23/08
to Google App Engine
hi denis!

On Nov 22, 12:54 pm, Denis <pr...@brushgroup.com> wrote:
> >You can now delete an entity directly using its key, without
> >instantiating/fetching the Model object
>
> Good. Will this be documented?

yup, it already is:

http://code.google.com/appengine/docs/datastore/functions.html#delete

> What happens is I pass non-existing key? On SDK the non-existing
> keys seem to be simply ignored. However the documentation suggest an
> exception will be raised (it also says an exception will be raised if
> the call span multiple entity groups!).

hmm, sorry if the documentation is unclear. you're right, deleting a
non-existent key is a noop. the docs say "An exception will always be
raised *if any error occurs*," and deleting a non-existent key isn't
considered an error.

also, deleting entities from multiple entity groups is allowed, and
even encouraged for efficiency. the "This may happen if the keys in
the call span multiple entity groups." sentence refers to the "even if
some of the entities actually were deleted" phrase, since deleting
entities across entity groups is not atomic.


> I'm also concerned about the performance of this deletion. I have a
...
> This code works, but works significantly slower (4 times) that the
> previous code with preliminary db.get(). It looks like deleting non-
> existing records take the same amount of time as deleting an existing
> record.
>
> Is this the SDK issue, or the production will also have such an
> issue?

as has been discussed before:

http://groups.google.com/group/google-appengine/browse_thread/thread/6a712cb3eddb152d
http://groups.google.com/group/google-appengine/browse_thread/thread/ba8d4ff7d825214/a5fc345c86a5abf2#a5fc345c86a5abf2

the SDK's performance is not representative of performance in
production. also, deleting non-existent keys in production will
usually be faster than deleting existing entities.
Reply all
Reply to author
Forward
0 new messages