[appengine-java] Slim3 1.0.0 Released

2010-03-18 Thread Yasuo Higa
Hi all,

We are pleased to announce the release of Slim3 1.0.0.

Slim3 is a full-stack MVC framework optimized for Google App Engine/Java.

The main features of Slim3 are as follows:
* Global Transactions
* Faster than JDO/JPA
* Fast spin-up
* HOT reloading
* Type safe query

You can find more information about Slim3 here:
http://slim3.org

Release Notes:
http://sites.google.com/site/slim3appengine/release-notes

Download:
http://slim3.googlecode.com/files/slim3-blank-1.0.0.zip

Thanks,

Yasuo Higa

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: elegant way of implementing sequence generator

2010-03-18 Thread legendlink
thanks for the link.

have tried the @version with shards. the output counter seems not to
be unique... i think there is no other way to mimic the sequence
generator like other rdbms without using normal transactions with
optimistic locking of the entity.

On Mar 12, 1:49 am, datanucleus andy_jeffer...@yahoo.com wrote:
  could you give me simple example on how to use the @version,

 The DataNucleus docs define that, and much 
 morehttp://www.datanucleus.org/products/accessplatform/jdo/orm/versioning...

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: GAE Java + Authsub + GData

2010-03-18 Thread s8
Thanks for your response. I did look at that documentation. It is more
apt for applications that are not on the App Engine. If the same logic
is used on the App Engine, the user will be redirected to a login page
again even though he is already logged into the App Engine application
using the very same Google Apps credentials.

If any of the following is supported, it would be helpful:

1. When the user is redirected to a login page from my GAEJ
application, I use the UserService for redirection. Can we log the
user into the App Engine domain and GData Services in one shot using
something like this:

String authSubUrl = AuthSubUtil.getRequestUrl(url, scope, secure,
session);
userService.createLoginURL(authSubUrl);

Someone tried it and ran into issues in production:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/6db6eea6ab183cfe/299810d80d921be7?lnk=gstq=gdata+login#299810d80d921be7

2. Once the user logs in, fetch the session information from the App
Engine session and create an AuthSub session token for the GData
Services using this session. This does not seem possible based on
this:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/3f3066dd0bd3bdeb/0260a196d798d757?lnk=gstq=gdata+authsub#0260a196d798d757

I am trying to avoid asking the user to login twice. It seems
unavoidable. An integrated login would make perfect sense. Adding this
feature would be very helpful for many.

Thanks,
s8


On Mar 17, 12:09 am, seleronm seler...@gmail.com wrote:
 Hi,
 Though it is likely already to have tried
 This link might be useful.

 http://code.google.com/intl/us/apis/gdata/docs/auth/authsub.html

 Please Try.
 thanks.



  Hi -

  My App Engine Java application is restricted to a Google Apps domain.
  Users are authenticated in my application using the App Engine
  UserService. How do I obtain a AuthSub session token for the user that
  is already logged into my application to push data into a spreadsheet
  in his Google Apps account?

  The following URL talks about GData access from GAE Python. How can
  this be achieved in the Java version?

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

  Thanks,
  s8

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] How to query for parent key property of an entity's key?

2010-03-18 Thread tempy
I want to retrieve all entities that are children of one other
particular entity, by checking if the parent-key property of the
child's key matches the parent key.  I have a reference to the parent
entity but I want to avoid loading all of its children (as there may
be many children, but I only need a few).  Thus I want a query that
looks something like this:

query = pm.newQuery(select from  + ChildClass.class.getName() +
 where :parentID.contains(ChildIDProperty.ParentID) 
SomeOtherProperty+ filterString);

But I'm not sure how to exactly address the parent key property of a
key in a query.

Thanks,
Mike

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: How to query for parent key property of an entity's key?

2010-03-18 Thread Tristan
Something you may want to consider is that you are placing yourself
within the limitations of entity groups by sticking children under
parent keys. You may want to consider a model where the parent key is
simply a field in the child and then run a simple query testing that
the parentKey field is equal to the one you're looking for. This
makes queries easier and prevents entity group lock-in.

Cheers!

On Mar 18, 8:55 am, tempy fay...@gmail.com wrote:
 I want to retrieve all entities that are children of one other
 particular entity, by checking if the parent-key property of the
 child's key matches the parent key.  I have a reference to the parent
 entity but I want to avoid loading all of its children (as there may
 be many children, but I only need a few).  Thus I want a query that
 looks something like this:

         query = pm.newQuery(select from  + ChildClass.class.getName() +
  where :parentID.contains(ChildIDProperty.ParentID) 
 SomeOtherProperty    + filterString);

 But I'm not sure how to exactly address the parent key property of a
 key in a query.

 Thanks,
 Mike

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Tristan
Not official but been doing this for a while.

Your custom index is most likely build from the query. So, when you
do

Query query = new Query(Thing);
query.addFilter(foo, FilterOperator.EQUAL, fooValue);
query.addSort(bar, SortDirection.DESCENDING);

That is what builds your custom index.

However, when you setUnindexedProperty here

Entity ent = new Entity(Thing);
ent.setUnindexedProperty(foo, fooValue);
ent.setUnindexedProperty(bar, 123L);

You are not generating any index entries.

So the issue isn't that adding custom indexes after-the-fact [is]
really, really painful but that you are not generating any indexes
for the datastore to run the queries against when you use
setUnindexedProperty(). In other words, when you execute a query, it
checks the index to give you results. But you marked your data as
don't index me, so there is nothing for query to work with, as far
as it is concerned, there's nothing in the datastore.

Cheers!


On Mar 16, 4:07 pm, Jeff Schnitzer j...@infohazard.org wrote:
 On Mon, Mar 15, 2010 at 11:04 PM, John Patterson jdpatter...@gmail.com 
 wrote:

  On 16 Mar 2010, at 12:25, Jeff Schnitzer wrote:

  I'm puzzled by the behavior of custom indexes.  I have a simple test
  case below, a simple equality filter on one property combined with a
  descending sort on another property.  If I set the properties with
  setUnindexedProperty(), the query fails to find the result.  If I set
  the properties with setProperty(), it does.

  I also wondered why - I assume that the custom index build reads the single
  property indexes directly which must be more efficient than reading the
  Entities table.

 I guess that is possible, but seems like a poor design decision.  It
 makes adding custom indexes after-the-fact really, really painful.

 Can someone official chime in on this?  Is it intended behavior, or
 should we file an issue against it?  The documentation doesn't say
 much on the subject, and all the conceptual explanation of queries
 suggests that these extra single-property indexes will be unused.

 Jeff

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: How to query for parent key property of an entity's key?

2010-03-18 Thread Ugorji
Use an ancestor-is query. This will find all entities which have a
given ancestor as parent. It even works in a kind-less query,
returning different kinds of entities under that parent. It's also
quite efficient (especially from a pricing/CPU cost perspective) since
theoretically, all this can be done on a single database node.

I'm not sure how to do ancestor-is query with JDO (I use my own type-
safe wrapper over low-level API), but you could try something like:

select from ... where ANCESTOR=... (like __key__, ANCESTOR seems to be
a reserved name in app engine)

On Mar 18, 7:56 am, tempy fay...@gmail.com wrote:
 That's a good point, but in this case the resulting entity group
 arrangement is intentional.  Lock-in isn't a worry, I can confidently
 say that these entity-group arrangements will last as long as the
 application does.

 Though, as you point out, I can make a parentKey field on the child,
 but since this parent key will also have to appear within the child's
 key, having such a field is redundant and I would rather avoid it.

 On Mar 18, 3:51 pm, Tristan tristan.slomin...@gmail.com wrote:



  Something you may want to consider is that you are placing yourself
  within the limitations of entity groups by sticking children under
  parent keys. You may want to consider a model where the parent key is
  simply a field in the child and then run a simple query testing that
  the parentKey field is equal to the one you're looking for. This
  makes queries easier and prevents entity group lock-in.

  Cheers!

  On Mar 18, 8:55 am, tempy fay...@gmail.com wrote:

   I want to retrieve all entities that are children of one other
   particular entity, by checking if the parent-key property of the
   child's key matches the parent key.  I have a reference to the parent
   entity but I want to avoid loading all of its children (as there may
   be many children, but I only need a few).  Thus I want a query that
   looks something like this:

           query = pm.newQuery(select from  + ChildClass.class.getName() +
where :parentID.contains(ChildIDProperty.ParentID) 
   SomeOtherProperty    + filterString);

   But I'm not sure how to exactly address the parent key property of a
   key in a query.

   Thanks,
   Mike

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Tristan
Ugorji,

I don't know if they will support re-indexing things based on new
index definition, however, I did put in an issue back in August 2009
to be able to create a custom index term on the fly. See if this would
partially solve the issue (again, it doesn't address reindexing
already put entities).

http://code.google.com/p/googleappengine/issues/detail?id=1935

Cheers!

On Mar 18, 10:37 am, Ugorji ugo...@gmail.com wrote:
 +1 big-time on this. With the restriction that every index'able
 property must be indexed at put-time when put into the datastore
 (using setProperty as opposed to setUnindexedProperty), it has 2 MAJOR
 disadvantages with far-reaching repercussions:

 - you cannot index entities after they have been put (even with a
 custom index). You will have to re-write the entity to index it.
 - Each put is 4X more expensive in latency/clock-time (potentially),
 CPU-cost and storage. This seems un-necessary, especially if a single
 custom index will suffice all your querying needs.

 I was really hoping to use custom indexes to buy major performance
 savings (in latency, CPU-cost and storage), and also be able to re-
 index every entity after the fact. But this restriction is heavy
 (preventing direct solution to a problem everyone may end up facing),
 and very expensive (costing us big-time). Can one of the google guys
 respond to this, before we file a bug?

 Thanks.

 On Mar 16, 2:07 pm, Jeff Schnitzer j...@infohazard.org wrote:



  On Mon, Mar 15, 2010 at 11:04 PM, John Patterson jdpatter...@gmail.com 
  wrote:

   On 16 Mar 2010, at 12:25, Jeff Schnitzer wrote:

   I'm puzzled by the behavior of custom indexes.  I have a simple test
   case below, a simple equality filter on one property combined with a
   descending sort on another property.  If I set the properties with
   setUnindexedProperty(), the query fails to find the result.  If I set
   the properties with setProperty(), it does.

   I also wondered why - I assume that the custom index build reads the 
   single
   property indexes directly which must be more efficient than reading the
   Entities table.

  I guess that is possible, but seems like a poor design decision.  It
  makes adding custom indexes after-the-fact really, really painful.

  Can someone official chime in on this?  Is it intended behavior, or
  should we file an issue against it?  The documentation doesn't say
  much on the subject, and all the conceptual explanation of queries
  suggests that these extra single-property indexes will be unused.

  Jeff

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Tristan
Jeff,

Sounds to me like you're correct in the not only don't set single-
property indexes, but also don't include the property in any custom
indexes interpretation of setUnindexedProperty. Can you post the link
to the continuation post? I'm curious what Googlers have to say about
it.

Tristan



On Mar 18, 11:13 am, Jeff Schnitzer j...@infohazard.org wrote:
 This doesn't make sense to me.

 Every scrap of documentation I've found says that GAE queries only
 follow a single index (the one exception being zigzag merges, which
 don't apply here).  This means that to answer my query.filter(foo,
 fooValue1).sort(-bar), there must be an index that contains the
 foo and bar data sorted appropriately, no?  Ie:

 /Thing/foo:fooValue1/bar:bar9/[thekeyvalue]
 /Thing/foo:fooValue1/bar:bar8/[thekeyvalue]
 /Thing/foo:fooValue1/bar:bar7/[thekeyvalue]
 /Thing/foo:fooValue2/bar:bar8/[thekeyvalue]
 /Thing/foo:fooValue2/bar:bar7/[thekeyvalue]

 To satisfy this query, GAE should start following this custom index
 and that's pretty much it.  There's no reason for it to touch the
 single-property indexes (foo ASC, foo DESC, bar ASC, and bar DESC).

 ...and in my test, if I remove the custom index from
 datastore-indexes.xml, it doesn't work.  But also if I use
 setUnindexedProperty, it doesn't work.

 It's like setUnindexedProperty is being interpreted as not only don't
 set single-property indexes, but also don't include the property in
 any custom indexes.  This is counterintuitive - if I wanted the index
 not to be built, I can just remove the index.

 I realize now that perhaps I posted this to the wrong mailing list.
 The guys who created the I/O videos about the datastore seem to be
 python fans, so I'll retry my original post on the google-appengine
 list.

 Jeff



 On Thu, Mar 18, 2010 at 8:00 AM, Tristan tristan.slomin...@gmail.com wrote:
  Not official but been doing this for a while.

  Your custom index is most likely build from the query. So, when you
  do

         Query query = new Query(Thing);
         query.addFilter(foo, FilterOperator.EQUAL, fooValue);
         query.addSort(bar, SortDirection.DESCENDING);

  That is what builds your custom index.

  However, when you setUnindexedProperty here

         Entity ent = new Entity(Thing);
         ent.setUnindexedProperty(foo, fooValue);
         ent.setUnindexedProperty(bar, 123L);

  You are not generating any index entries.

  So the issue isn't that adding custom indexes after-the-fact [is]
  really, really painful but that you are not generating any indexes
  for the datastore to run the queries against when you use
  setUnindexedProperty(). In other words, when you execute a query, it
  checks the index to give you results. But you marked your data as
  don't index me, so there is nothing for query to work with, as far
  as it is concerned, there's nothing in the datastore.

  Cheers!

  On Mar 16, 4:07 pm, Jeff Schnitzer j...@infohazard.org wrote:
  On Mon, Mar 15, 2010 at 11:04 PM, John Patterson jdpatter...@gmail.com 
  wrote:

   On 16 Mar 2010, at 12:25, Jeff Schnitzer wrote:

   I'm puzzled by the behavior of custom indexes.  I have a simple test
   case below, a simple equality filter on one property combined with a
   descending sort on another property.  If I set the properties with
   setUnindexedProperty(), the query fails to find the result.  If I set
   the properties with setProperty(), it does.

   I also wondered why - I assume that the custom index build reads the 
   single
   property indexes directly which must be more efficient than reading the
   Entities table.

  I guess that is possible, but seems like a poor design decision.  It
  makes adding custom indexes after-the-fact really, really painful.

  Can someone official chime in on this?  Is it intended behavior, or
  should we file an issue against it?  The documentation doesn't say
  much on the subject, and all the conceptual explanation of queries
  suggests that these extra single-property indexes will be unused.

  Jeff

  --
  You received this message because you are subscribed to the Google Groups 
  Google App Engine for Java group.
  To post to this group, send email to google-appengine-j...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine-java+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://groups.google.com/group/google-appengine-java?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Jeff Schnitzer
Here's a link:
http://groups.google.com/group/google-appengine/browse_thread/thread/2f6aa695a80fd5de

Jeff

On Thu, Mar 18, 2010 at 9:22 AM, Tristan tristan.slomin...@gmail.com wrote:
 Jeff,

 Sounds to me like you're correct in the not only don't set single-
 property indexes, but also don't include the property in any custom
 indexes interpretation of setUnindexedProperty. Can you post the link
 to the continuation post? I'm curious what Googlers have to say about
 it.

 Tristan



 On Mar 18, 11:13 am, Jeff Schnitzer j...@infohazard.org wrote:
 This doesn't make sense to me.

 Every scrap of documentation I've found says that GAE queries only
 follow a single index (the one exception being zigzag merges, which
 don't apply here).  This means that to answer my query.filter(foo,
 fooValue1).sort(-bar), there must be an index that contains the
 foo and bar data sorted appropriately, no?  Ie:

 /Thing/foo:fooValue1/bar:bar9/[thekeyvalue]
 /Thing/foo:fooValue1/bar:bar8/[thekeyvalue]
 /Thing/foo:fooValue1/bar:bar7/[thekeyvalue]
 /Thing/foo:fooValue2/bar:bar8/[thekeyvalue]
 /Thing/foo:fooValue2/bar:bar7/[thekeyvalue]

 To satisfy this query, GAE should start following this custom index
 and that's pretty much it.  There's no reason for it to touch the
 single-property indexes (foo ASC, foo DESC, bar ASC, and bar DESC).

 ...and in my test, if I remove the custom index from
 datastore-indexes.xml, it doesn't work.  But also if I use
 setUnindexedProperty, it doesn't work.

 It's like setUnindexedProperty is being interpreted as not only don't
 set single-property indexes, but also don't include the property in
 any custom indexes.  This is counterintuitive - if I wanted the index
 not to be built, I can just remove the index.

 I realize now that perhaps I posted this to the wrong mailing list.
 The guys who created the I/O videos about the datastore seem to be
 python fans, so I'll retry my original post on the google-appengine
 list.

 Jeff



 On Thu, Mar 18, 2010 at 8:00 AM, Tristan tristan.slomin...@gmail.com wrote:
  Not official but been doing this for a while.

  Your custom index is most likely build from the query. So, when you
  do

         Query query = new Query(Thing);
         query.addFilter(foo, FilterOperator.EQUAL, fooValue);
         query.addSort(bar, SortDirection.DESCENDING);

  That is what builds your custom index.

  However, when you setUnindexedProperty here

         Entity ent = new Entity(Thing);
         ent.setUnindexedProperty(foo, fooValue);
         ent.setUnindexedProperty(bar, 123L);

  You are not generating any index entries.

  So the issue isn't that adding custom indexes after-the-fact [is]
  really, really painful but that you are not generating any indexes
  for the datastore to run the queries against when you use
  setUnindexedProperty(). In other words, when you execute a query, it
  checks the index to give you results. But you marked your data as
  don't index me, so there is nothing for query to work with, as far
  as it is concerned, there's nothing in the datastore.

  Cheers!

  On Mar 16, 4:07 pm, Jeff Schnitzer j...@infohazard.org wrote:
  On Mon, Mar 15, 2010 at 11:04 PM, John Patterson jdpatter...@gmail.com 
  wrote:

   On 16 Mar 2010, at 12:25, Jeff Schnitzer wrote:

   I'm puzzled by the behavior of custom indexes.  I have a simple test
   case below, a simple equality filter on one property combined with a
   descending sort on another property.  If I set the properties with
   setUnindexedProperty(), the query fails to find the result.  If I set
   the properties with setProperty(), it does.

   I also wondered why - I assume that the custom index build reads the 
   single
   property indexes directly which must be more efficient than reading the
   Entities table.

  I guess that is possible, but seems like a poor design decision.  It
  makes adding custom indexes after-the-fact really, really painful.

  Can someone official chime in on this?  Is it intended behavior, or
  should we file an issue against it?  The documentation doesn't say
  much on the subject, and all the conceptual explanation of queries
  suggests that these extra single-property indexes will be unused.

  Jeff

  --
  You received this message because you are subscribed to the Google Groups 
  Google App Engine for Java group.
  To post to this group, send email to 
  google-appengine-j...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine-java+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://groups.google.com/group/google-appengine-java?hl=en.

 --
 You received this message because you are subscribed to the Google Groups 
 Google App Engine for Java group.
 To post to this group, send email to google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to 
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at 
 

Re: [appengine-java] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Tristan Slominski
Thanks :)

On Thu, Mar 18, 2010 at 11:55 AM, Jeff Schnitzer j...@infohazard.orgwrote:

 Here's a link:

 http://groups.google.com/group/google-appengine/browse_thread/thread/2f6aa695a80fd5de

 Jeff

 On Thu, Mar 18, 2010 at 9:22 AM, Tristan tristan.slomin...@gmail.com
 wrote:
  Jeff,
 
  Sounds to me like you're correct in the not only don't set single-
  property indexes, but also don't include the property in any custom
  indexes interpretation of setUnindexedProperty. Can you post the link
  to the continuation post? I'm curious what Googlers have to say about
  it.
 
  Tristan
 
 
 
  On Mar 18, 11:13 am, Jeff Schnitzer j...@infohazard.org wrote:
  This doesn't make sense to me.
 
  Every scrap of documentation I've found says that GAE queries only
  follow a single index (the one exception being zigzag merges, which
  don't apply here).  This means that to answer my query.filter(foo,
  fooValue1).sort(-bar), there must be an index that contains the
  foo and bar data sorted appropriately, no?  Ie:
 
  /Thing/foo:fooValue1/bar:bar9/[thekeyvalue]
  /Thing/foo:fooValue1/bar:bar8/[thekeyvalue]
  /Thing/foo:fooValue1/bar:bar7/[thekeyvalue]
  /Thing/foo:fooValue2/bar:bar8/[thekeyvalue]
  /Thing/foo:fooValue2/bar:bar7/[thekeyvalue]
 
  To satisfy this query, GAE should start following this custom index
  and that's pretty much it.  There's no reason for it to touch the
  single-property indexes (foo ASC, foo DESC, bar ASC, and bar DESC).
 
  ...and in my test, if I remove the custom index from
  datastore-indexes.xml, it doesn't work.  But also if I use
  setUnindexedProperty, it doesn't work.
 
  It's like setUnindexedProperty is being interpreted as not only don't
  set single-property indexes, but also don't include the property in
  any custom indexes.  This is counterintuitive - if I wanted the index
  not to be built, I can just remove the index.
 
  I realize now that perhaps I posted this to the wrong mailing list.
  The guys who created the I/O videos about the datastore seem to be
  python fans, so I'll retry my original post on the google-appengine
  list.
 
  Jeff
 
 
 
  On Thu, Mar 18, 2010 at 8:00 AM, Tristan tristan.slomin...@gmail.com
 wrote:
   Not official but been doing this for a while.
 
   Your custom index is most likely build from the query. So, when you
   do
 
  Query query = new Query(Thing);
  query.addFilter(foo, FilterOperator.EQUAL, fooValue);
  query.addSort(bar, SortDirection.DESCENDING);
 
   That is what builds your custom index.
 
   However, when you setUnindexedProperty here
 
  Entity ent = new Entity(Thing);
  ent.setUnindexedProperty(foo, fooValue);
  ent.setUnindexedProperty(bar, 123L);
 
   You are not generating any index entries.
 
   So the issue isn't that adding custom indexes after-the-fact [is]
   really, really painful but that you are not generating any indexes
   for the datastore to run the queries against when you use
   setUnindexedProperty(). In other words, when you execute a query, it
   checks the index to give you results. But you marked your data as
   don't index me, so there is nothing for query to work with, as far
   as it is concerned, there's nothing in the datastore.
 
   Cheers!
 
   On Mar 16, 4:07 pm, Jeff Schnitzer j...@infohazard.org wrote:
   On Mon, Mar 15, 2010 at 11:04 PM, John Patterson 
 jdpatter...@gmail.com wrote:
 
On 16 Mar 2010, at 12:25, Jeff Schnitzer wrote:
 
I'm puzzled by the behavior of custom indexes.  I have a simple
 test
case below, a simple equality filter on one property combined with
 a
descending sort on another property.  If I set the properties with
setUnindexedProperty(), the query fails to find the result.  If I
 set
the properties with setProperty(), it does.
 
I also wondered why - I assume that the custom index build reads
 the single
property indexes directly which must be more efficient than reading
 the
Entities table.
 
   I guess that is possible, but seems like a poor design decision.  It
   makes adding custom indexes after-the-fact really, really painful.
 
   Can someone official chime in on this?  Is it intended behavior, or
   should we file an issue against it?  The documentation doesn't say
   much on the subject, and all the conceptual explanation of queries
   suggests that these extra single-property indexes will be unused.
 
   Jeff
 
   --
   You received this message because you are subscribed to the Google
 Groups Google App Engine for Java group.
   To post to this group, send email to
 google-appengine-j...@googlegroups.com.
   To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
   For more options, visit this group athttp://
 groups.google.com/group/google-appengine-java?hl=en.
 
  --
  You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
  To 

[appengine-java] Re: java.io.IOException: Could not fetch URL problem and google spreadsheet api

2010-03-18 Thread Rahul
Any body got any clues on this ?



On Mar 17, 12:44 pm, Rahul rahul.jun...@gmail.com wrote:
 I am trying to open a connection to the following service 
 :http://translate.thoughtclicks.com/translateService/german/good
 morning which is definitely taking less then 5 seconds but i am still
 getting this exception any clue on this folks.

 My code to open the url connection is as follows.

             URL url = new URL(THIS_IS_THE_URL_MENTIONED_ABOVE);
             //make connection, use post mode, and send query
             URLConnection urlc = url.openConnection();
             urlc.setDoOutput(true);
             //retrieve result
             BufferedReader br = new BufferedReader(new
 InputStreamReader(urlc.getInputStream()));

 Any Clues on this folks ?

 Thanks,
 Rahul

 On Mar 17, 12:27 pm, Rahul rahul.jun...@gmail.com wrote:



  Did you find the solution for this as i am having the problem ?
  Any help appreciated.

  Thanks,
  Rahul

  On Mar 16, 10:31 am, dominity domin...@gmail.com wrote:

   Hi, guys.

   When my application trying to put user credentials into spreadsheet
   service, I've got this exception:

   com.google.gdata.util.AuthenticationException: Error connecting with
   login URI
           at
   com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthToken
Factory.java:
   479)
           at
   com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAut
hTokenFactory.java:
   336)
           at
   com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java
:
   362)
           at
   com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java
:
   317)
           at
   com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java
:
   301)
   Caused by: java.io.IOException: Could not fetch 
   URL:https://www.google.com/accounts/ClientLogin
           at
   com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationExc
eption(URLFetchServiceImpl.java:
   106)
           at
   com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchService
Impl.java:
   39)
           at
   com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler
   $Connection.fetchResponse(URLFetchServiceStreamHandler.java:404)
           at
   com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler
   $Connection.getInputStream(URLFetchServiceStreamHandler.java:283)
           at
   com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler
   $Connection.getResponseCode(URLFetchServiceStreamHandler.java:136)
           at
   com.google.gdata.client.GoogleAuthTokenFactory.makePostRequest(GoogleAuthTo
kenFactory.java:
   550)
           at
   com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthToken
Factory.java:
   477)

   I'm using Eclipse Plug-In and GAE SDK v1.3.1. Also, I was trying my
   code with version 1.3.0 and 1.2.9. And I can tell you that this
   happens only with development server, error disappears on production
   server. That's point - I can't even do any debugging stuff. So, could
   you give me any feedback on this issue?

   Best regards, Alexander.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Is XMPPServiceFactory service down ?

2010-03-18 Thread Don Schwarz
Can you respond privately with your app id?

On Thu, Mar 18, 2010 at 3:12 PM, Rahul rahul.jun...@gmail.com wrote:

 I am getting the following message again and again.

 Error for /_ah/xmpp/message/chat/
 java.lang.NoClassDefFoundError: com/google/appengine/api/xmpp/
 XMPPServiceFactory
 Caused by: java.lang.ClassNotFoundException:
 com.google.appengine.api.xmpp.XMPPServiceFactory
at
 com.google.appengine.runtime.Request.process-82178f5b5feb9148(Request.java)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

 Thanks,
 Rahul

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To post to this group, send email to
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Google App Engine error

2010-03-18 Thread Olifant
Ik heb een probleem met de Google App Engine.
Lokaal draait het prima, maar als ik mijn project naar de Google App
Engine server heb gedeployed en het daar wil bekijken, gaat het
verkeerd.

Het gaat om de volgende foutmelding:

/index.jsp
java.lang.ClassCastException: java.lang.String cannot be cast to
java.lang.Boolean
at
com.google.appengine.runtime.Request.process-45e9281fdbb0acf1(Request.java)
at
org.datanucleus.store.appengine.DatastoreFieldManager.fetchBooleanField(DatastoreFieldManager.java:
453)
at
org.datanucleus.state.AbstractStateManager.replacingBooleanField(AbstractStateManager.java:
1052)
at project.Project.jdoReplaceField(Project.java)
at project.Project.jdoReplaceFields(Project.java)
at
org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:
2772)
at
org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:
2791)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject(DatastorePersistenceHandler.java:
461)
at
org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo(DatastoreQuery.java:
545)
at
org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo(DatastoreQuery.java:
500)
at org.datanucleus.store.appengine.query.DatastoreQuery.access
$300(DatastoreQuery.java:108)
at org.datanucleus.store.appengine.query.DatastoreQuery
$6.apply(DatastoreQuery.java:618)
at org.datanucleus.store.appengine.query.DatastoreQuery
$6.apply(DatastoreQuery.java:610)
at
org.datanucleus.store.appengine.query.LazyResult.resolveNext(LazyResult.java:
94)
at org.datanucleus.store.appengine.query.LazyResult
$LazyAbstractListIterator.computeNext(LazyResult.java:215)
at
org.datanucleus.store.appengine.query.AbstractIterator.tryToComputeNext(AbstractIterator.java:
132)
at
org.datanucleus.store.appengine.query.AbstractIterator.hasNext(AbstractIterator.java:
127)
at org.datanucleus.store.appengine.query.LazyResult
$AbstractListIterator.hasNext(LazyResult.java:169)
at project.GetProject.getProjectsDashboard(GetProject.java:33)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:52)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1093)
at
cwipstoremoteuserfilter.filter.CwipsToRemoteUserFilter.doFilter(CwipsToRemoteUserFilter.java:
78)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at cwipsclient.cas.client.filter.CASFilter.doFilter(CASFilter.java:
79)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
360)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
238)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:830)
at
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
135)
at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5485)
at 

[appengine-java] Suddenly getting Unknown attribute type (com.google.appengine.api.datastore.Key) for attribute key.

2010-03-18 Thread Steve
Hi,
I've been successfully building my project each day.  Today I come to
it and attempt to start it in the debugger when I get the above
error.  Here is some of the stack trace:

org.apache.jasper.JasperException: /kickboxking.jsp(23,28) Unknown
attribute type (com.google.appengine.api.datastore.Key) for attribute
key.
at
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:
39)
at
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:
409)
at
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:
238)
at org.apache.jasper.compiler.Validator
$ValidateVisitor.checkXmlAttributes(Validator.java:932)
at org.apache.jasper.compiler.Validator
$ValidateVisitor.visit(Validator.java:696)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Validator.validate(Validator.java:1475)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:
214)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:
511)
...


So, it's when compiling the JSP.  I don't know if it's when resolving
the tag or the jsp that it encounters this unknown, but no matter -
neither has been changed(!) since it was compiling just fine.  Also, I
can see the appengine-api jar on the build path (as it was from when
the project was setup under Eclipse).

Here's an extract from the JSP:

%@ page contentType=text/html;charset=UTF-8 language=java %
%@ page import=java.util.List %
%@ page import=com.google.appengine.api.users.User %
%@ page import=com.google.appengine.api.users.UserService %
%@ page import=com.google.appengine.api.users.UserServiceFactory %
%@ page import=com.google.appengine.api.datastore.Key %

%@ taglib uri=/WEB-INF/kickboxking.tld prefix=kbk %

html
  body
div id=header
%
UserService userService = UserServiceFactory.getUserService();
if (session.getAttribute(activePlayerId) != null) {
%
kbk:playerName key=%=
(Key)session.getAttribute(activePlayerId) %/! (You can
a href=signOut.jspsign out/a.)/p
/div
...

It's falling over on that kbk:playerName tag   Pure bit-rot
as it was fine when I was running it yesterday :-(

Steve

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Geospatial data management with GAE Java

2010-03-18 Thread Rahul Ravikumar
There is a java port of the Geomodel project in java which you can try
out.

On Mar 17, 1:39 am, fvisticot fvisti...@gmail.com wrote:
 I know that Geomodel is a solution for python users to manage
 geospatial information.
 What is available for GAE Java users in term of Geospatial data
 management ?

 What is the best solution ?
 Is there a native approach provided by GAE Java ?

 In case no solution is available, what are the workarrounds ? Is
 Google Maps Data Api the solution ?

 Fred.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Any way to call Java Compiler directly on GAE ?

2010-03-18 Thread Didier Durand
Hi there,

Is there any way to call the java compiler itself in a GAE
application ?
I would like to port some Java code generator / compiler from regular
servers to GAE but the prereq is to be able to compile directly on
GAE.

I don't  find appropriate call in the JRE white list (http://
code.google.com/appengine/docs/java/jrewhitelist.html)

thanks
didier

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Re: Unable to upload application

2010-03-18 Thread Jon McAlister
Yep, we had a bad admin console push and deploys were affected
from 3:10pm PST until 4:30pm PST. All better now. Apologies.

On Thu, Mar 18, 2010 at 3:50 PM, Huebi konrad.hueb...@googlemail.com wrote:
 here as well :(

 On 18 Mrz., 23:42, François Masurel fm2...@mably.com wrote:
 Same problem here too :-(

 On 18 mar, 23:30, Sandeep Sathaye sandeep.sath...@gmail.com wrote:



  I am having the same problem.

  On Thu, Mar 18, 2010 at 6:26 PM, Peter Ondruska 
  peter.ondru...@gmail.comwrote:

   I am trying to upload my application but it fails everytime:

   com.google.appengine.tools.admin.AdminException: Unable to update app:
   Error posting to URL:
  https://appengine.google.com/api/appversion/create?app_id=f72dzzn5q5q...
   500 Internal Server Error

   Server Error (500)
   A server error has occurred.

   at
   com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:
   62)
   at

   com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngin
eBridgeImpl.java:
   271)
   at

   com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(De
ployProjectJob.java:
   145)
   at

   org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorksp
aceJob.java:
   38)
   at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
   Caused by: java.io.IOException: Error posting to URL:

  https://appengine.google.com/api/appversion/create?app_id=f72dzzn5q5q...
   500 Internal Server Error

   Server Error (500)
   A server error has occurred.

   at

   com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.jav
a:
   149)
   at

   com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.jav
a:
   82)
   at

   com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.jav
a:
   532)
   at

   com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersi
onUpload.java:
   349)
   at

   com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload
.java:
   111)
   at
   com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:
   56)
   ... 4 more

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine for Java group.
   To post to this group, send email to
   google-appengine-j...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2B
unsubscr...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine-java?hl=en.

 --
 You received this message because you are subscribed to the Google Groups 
 Google App Engine for Java group.
 To post to this group, send email to google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to 
 google-appengine-java+unsubscr...@googlegroups.com.
 For more options, visit this group at 
 http://groups.google.com/group/google-appengine-java?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Does memcache get clean when new version deployed and made to be the default one?

2010-03-18 Thread opok
Hi all, does memcache get clean when new version deployed and made to
be the default one?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[google-appengine] Re: GAE getting CAPTCHA-locked by Google Apps?

2010-03-18 Thread Jan Z
Hi Tim - no, we're not.  A session might be created for a user based
on their activity, so maybe a few times a day.

We're definitely not hammering the system...

J

On Mar 18, 2:14 am, Tim Hoffman zutes...@gmail.com wrote:
 I have had problems in the past where I was using a lot of remote_api
 calls into appengine.

 What I found was, on each call I wasn't reusing an already
 authenticated session, which meant after a number of calls
 I would be hit with acaptchalock.  (it seems higher up google
 infrastructure didn't like me creating new authenticated session for
 each call - aside from the fact it isn't very efficient ;-)

 Maybe thats whats happening in your case, it might be worthing
 checking to see if you are creating a new authenticated session
 frequently.

 Rgds

 T

 On Mar 16, 4:15 am, Jan Z jan.zawad...@gmail.com wrote:



  gdata ClientLogin calls from GAE (and from GAE only) appear to get
  frequent spuriousCAPTCHAlocks.

  By spurious I mean that another ClientLogin attempt a couple of
  seconds later succeeds (with same credentials), so there is no need
  for users to actually go through the unlockcaptcha step.

  We can reproduce this on GAE reliably (as in acaptchaoccurring one
  or more times for every five attempts) using gdata (python) or
  straight protocol access with urlfetch.    Same code runs on local SDK
  without encountering a singlecaptcha.

  So it looks like the API iscaptcha-locking the GAE.

  We have an existing support case #00618963 for this, would be great to
  get someone from the GAE team to have a look please?

  Jan

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



[google-appengine] Re: Increasing Task Queue Quota Limit

2010-03-18 Thread Wesley C (Google)
generally nothing you can do about those... i would say you can try
your code in the development server where they all queue up and you
have to execute manually (or flush them as desired). at least this
way, you can catch runaway situation before it hits you in production.
more info about this here:
http://code.google.com/appengine/docs/python/taskqueue/overview.html#Task_Queues_and_the_Development_Server

right now, you're good to go and only at 6% of your quota 55096 of 1M.

best regards,
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core Python Programming, Prentice Hall, (c)2007,2001
Python Fundamentals, Prentice Hall, (c)2009
   http://corepython.com

wesley.j.chun :: wesc+...@google.com
developer relations :: google app engine

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



[google-appengine] Re: Access group info?

2010-03-18 Thread Wesley C (Google)
victor,

at this point, i don't believe there is a way to do this as our (App
Engine) interaction with Google Apps doesn't really go much beyond
making your app be restricted to your Google Apps domain and users:
http://code.google.com/appengine/articles/domains.html

this would be different, if Google Apps had an API that let you make
such a query. if anyone has been able to do what the OP requested, let
me know. in general, there isn't much interaction between the Apps and
App Engine except for what's described above.

best regards,
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core Python Programming, Prentice Hall, (c)2007,2001
Python Fundamentals, Prentice Hall, (c)2009
   http://corepython.com

wesley.j.chun :: wesc+...@google.com
developer relations :: google app engine

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



[google-appengine] Re: Password For Loading Data Into My Local GAE Instance

2010-03-18 Thread Wesley C (Google)
greetings jorge,

i'm not sure why you're being prompted for the login when trying to
upload to the dev server. unfortunately, i'm not in the office this
week, but my guess is because you have login: admin in your app.yaml
file for remote_api which will require an admin login.

this is there for obvious reasons on production but perhaps you can
remove that line when trying to upload to your dev server and maybe it
won't prompt for the admin login info. let me know if this works!

thanks,
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core Python Programming, Prentice Hall, (c)2007,2001
Python Fundamentals, Prentice Hall, (c)2009
   http://corepython.com

wesley.j.chun :: wesc+...@google.com
developer relations :: google app engine

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



[google-appengine] Re: App Engine account activation

2010-03-18 Thread Wesley C (Google)
greetings and welcome to Google App Engine!

the email message you're referring to should be sent fairly quickly.
pls doublecheck your spam/bulk mail folder to see if it was
accidentally delivered there. if you cannot find it, can you cut-n-
paste us the error you get when you try to upload your app?

thanks,
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core Python Programming, Prentice Hall, (c)2007,2001
Python Fundamentals, Prentice Hall, (c)2009
   http://corepython.com

wesley.j.chun :: wesc+...@google.com
developer relations :: google app engine

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



[google-appengine] Re: Storage for geo-points

2010-03-18 Thread Wesley C (Google)
generally we cannot change the maximum number of applications you can
unless you can demonstrate and justify a legitimate reasons why you
need more applications. in other words, it's not impossible but just
not likely. if you still want to try this, go fill out the form you
can access from: http://code.google.com/appengine/kb/billing.html#cpu

-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core Python Programming, Prentice Hall, (c)2007,2001
Python Fundamentals, Prentice Hall, (c)2009
   http://corepython.com

wesley.j.chun :: wesc+...@google.com
developer relations :: google app engine

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



[google-appengine] interval intersection - datastore modeling

2010-03-18 Thread jeremy
i have objects which store a 'start' and 'end' position.

given an arbitrary interval, i'd like to return all objects with which
it intersects.

can anyone think of an approach to modeling this on datastore?

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



Re: [google-appengine] interval intersection - datastore modeling

2010-03-18 Thread Scott Ellis
are they dates? floating point values? values on a scale from 1 to 5? all of
the above?

On 18 March 2010 19:28, jeremy jeremy.a...@gmail.com wrote:

 i have objects which store a 'start' and 'end' position.

 given an arbitrary interval, i'd like to return all objects with which
 it intersects.

 can anyone think of an approach to modeling this on datastore?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Post-mortem for February 24th, 2010 outage

2010-03-18 Thread Jan Z
Thanks for posting this.  The transparency helps greatly.

I would like to add my vote to Chris's though regarding splitting
bigtable operations.
It's a mistake.

The enormous appeal of the App Engine today is that you've done an
amazing job shielding us from needing to make these sorts of
decisions.

*THAT* is the hard problem that GAE is addressing.

By making distinctions such as this one, you're fundamentally shifting
your direction away from what ought to be (and has been?) a key design
principle.

In short - please don't make us choose.  Just make it work.

Jan / Cloudbreak

On Mar 5, 12:22 pm, App Engine Team appengine.nore...@gmail.com
wrote:
 Post-Mortem Summary

 This document details the cause and events occurring immediately after
 App Engine's outage on February 24th, 2010, as well as the steps we
 are taking to mitigate the impact of future outages like this one in
 the future.

 On February 24th, 2010, all Googe App Engine applications were in
 varying degraded states of operation for a period of two hours and
 twenty minutes from 7:48 AM to 10:09 AM PT | 15:48 to 18:09 GMT.  The
 underlying cause of the outage was a power failure in our primary
 datacenter. While the Google App Engine infrastructure is designed to
 quickly recover from these sort of failures, this type of rare
 problem, combined with internal procedural issues  extended the time
 required to restore the service.

 Link to full timeline here, which is attached below.

 What did we do wrong?

 Though the team had planned for this sort of failure, our response had
 a few important issues:

 - Although we had procedures ready for this sort of outage, the oncall
 staff was unfamiliar with them and had not trained sufficiently with
 the specific recovery procedure for this type of failure.

 - Recent work to migrate the datastore for better multihoming changed
 and improved the procedure for handling these failures significantly.
 However, some documentation detailing the procedure to support the
 datastore during failover incorrectly referred to the old
 configuration. This led to confusion during the event.

 - The production team had not agreed on a policy that clearly
 indicates when, and in what situations, our oncall staff should take
 aggressive user-facing actions, such as an unscheduled failover.  This
 led to a bad call of returning to a partially working datacenter.

 - We failed to plan for the case of a power outage that might affect
 some, but not all, of our machines in a datacenter (in this case,
 about 25%). In particular, this led to incorrect analysis of the
 serving state of the failed datacenter and when it might recover.

 - Though we were able to eventually migrate traffic to the backup
 datacenter, a small number of Datastore entity groups, belonging to
 approximately 25 applications in total,  became stuck in an
 inconsistent state as a result of the failover procedure. This
 represented considerably less than 0.2% of data stored in the
 Datastore.

 Ultimately, although significant work had been done over the past year
 to improve our handling of these types of outages, issues with
 procedures reduced their impact.

 What are we doing to fix it?

 As a result, we have instituted the following procedures going
 forward:

 - Introduce regular drills by all oncall staff of all of our
 production procedures. This will include the rare and complicated
 procedures, and all members of the team will be required to complete
 the drills before joining the oncall rotation.

 - Implement a regular bi-monthly audit of our operations docs to
 ensure that all needed procedures are properly findable, and all out-
 of-date docs are properly marked Deprecated.

 - Establish a clear policy framework to assist oncall staff to quickly
 and decisively make decisions about taking intrusive, user-facing
 actions during failures. This will allow them to act confidently and
 without delay in emergency situations.

 We believe that with these new procedures in place, last week's outage
 would have been reduced in impact from about 2 hours of total
 unavailability to about 10 to 20 minutes of partial unavailability.

 In response to this outage, we have also decided to make a major
 infrastructural change in App Engine. Currently, App Engine provides a
 one-size-fits-all Datastore, that provides low write latency combined
 with strong consistency, in exchange for lower availability in
 situations of unexpected failure in one of our serving datacenters. In
 response to this outage, and feedback from our users, we have begun
 work on providing two different Datastore configurations:

 - The current option of low-latency, strong consistency, and lower
 availability during unexpected failures (like a power outage)

 - A new option for higher availability using synchronous replication
 for reads and writes, at the cost of significantly higher latency

 We believe that providing both of these options to you, our users,
 will allow 

[google-appengine] anybody success with blobstore upload via JS / iframe

2010-03-18 Thread Roberto Saccon
I am experimenting with large blob uploads. Everything works fine as
long as I submit a form to do the upload. But I would prefer to use a
page-refresh-less solution. So I tried no noswfupload.js and  iframe
approach ajaxupload.js, but none of them seem to work out of the box,
and I get the following error message.

SEVERE: Must only return a redirect from a Blobstore upload callback.

if I look at the development server admin panel, the __BlobInfo__
table entry actually gets created, but not the entry containing the
actual file

Anybody got ajax blob upload working ? Or has suggestion why it fails
in my case ?

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



Re: [google-appengine] Password For Loading Data Into My Local GAE Instance

2010-03-18 Thread Eli Jones
Appcfg and bulkloader seem to always prompt for credentials.. But you
can type anything in when uploading to dev_appserver.

Copy paste the exact command you're using and the full error you are getting.

Are you sending the --app_id flag to the command?

On 3/13/10, Jorge Lugo jlug...@gmail.com wrote:
 I tried the following command to upload files to my local GAE. I get
 prompted for an email address and password. What do I use for this
 since it is local? My Google email and password don't work.

 appcfg.py upload_data --config_file=upload.py --filename=cards.csv --
 kind=Card --url=http://localhost:8080/remote_api ..

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



-- 
Sent from my mobile device

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



[google-appengine] Re: Email Idempotence

2010-03-18 Thread Tim Hoffman
I would pass of the email sending to a task queue, and wrap the
success of the send in a transaction
and only update to yes if the email send call returns ok.

At least you off load your work from the primary transaction.

Remember email isn't really a reliable service, and even if you do
mark it as sent it may never reach the recipient.

Pushing the send email workload and recording if you sent it into a
task should not really cost you to much
in end user response times/latency.

 As someone else put it email is not transactional in any sense.  Its
very much a
throw it over the fence and hope it gets there in the next few days

T

On Mar 18, 11:47 am, prgmratlarge yossiele...@gmail.com wrote:
 I guess all of you are technically correct. However, the solutions
 given were either: a) introduce a tremendous amount of latency/CPU
 usage in terms of putting/checking/deleting things from the datastore
 b) live with it. I think it's kind of weird for them to use this
 specific case as an example, when it clearly isn't the best example.

 I guess I'll just have to hope that everything goes okay, and write
 lots of try/except clauses in my code to make sure the little things
 don't mess stuff up.

 Thanks anyways,

 On Mar 17, 9:46 pm, Eli Jones eli.jo...@gmail.com wrote:



  Like Tim says... if you're really worried about sending out a duplicate
  e-mail from time to time... then you'll need to design your mailer task to
  do something like this:

  1.  Mailer task starts.. gets a batch of work from some datastore Model that
  serves as your queue.
  2.  Process a row of work, and after you successfully send out an e-mail for
  that row delete the row from your queue.

  Then just do step 2 over and over until you finish all of your work.. or if
  some error forces the task to retry.. then it should get a new batch of work
  from your queue.. which should now contain only entities that have not been
  processed.

  The only case where you'd get a duplicate email sent for a row of work would
  be if the email successfully was sent out.. but an error occurred when
  trying to remove the row from your queue.

  And, even in that case, you could add try: except: blocks to do everything
  possible to avoid that (just retry the db.delete() from your queue, etc).
  (Then, only the 30 second limit would be a concern.. but you can handle that
  as well).

  Then again, you really have to be adamant about avoiding the potential
  duplicate e-mail issue to do this sort of thing.

  On Wed, Mar 17, 2010 at 8:53 PM, Tim Hoffman zutes...@gmail.com wrote:
   Well could yo record if you sent any particular email, and
   not resend it ?

   On Mar 18, 6:05 am, prgmratlarge yossiele...@gmail.com wrote:
When implementing the code for Tasks (as worker URLs within your
app), it is important that you consider whether the task is
idempotent. App Engine's Task Queue API is designed to only invoke a
given task once, however it is possible in exceptional circumstances
that a Task may execute multiple times (e.g. in the unlikely case of
major system failure). Thus, your code must ensure that there are no
harmful side-effects of repeated execution. -http://code.google.com/
appengine/docs/python/taskqueue/overview.html

According to this part of the documentation, it would seem that
setting up an email-sending task-queue is impossible. After all,
sending someone the same email thousands of times would be disastrous.
Yet the documentation also gives email sending as an example use of
the Task Queue.

This seems to be contradictory. How can I create a Task Queue for
sending email without running into problems of idempotence?

Thanks for your help.

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
e...@googlegroups.com
   .
   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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: interval intersection - datastore modeling

2010-03-18 Thread Tristan
sounds like the 3D graphics guys solved this problem... if you post
the solution perhaps i'll be able to suggest on how to do it in a
datastore

On Mar 18, 4:16 am, Scott Ellis sje...@gmail.com wrote:
 are they dates? floating point values? values on a scale from 1 to 5? all of
 the above?

 On 18 March 2010 19:28, jeremy jeremy.a...@gmail.com wrote:



  i have objects which store a 'start' and 'end' position.

  given an arbitrary interval, i'd like to return all objects with which
  it intersects.

  can anyone think of an approach to modeling this on datastore?

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib 
  e...@googlegroups.com
  .
  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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Rollback Transaction not working?!?!?

2010-03-18 Thread Nick Johnson (Google)
Hi Blake,

Can you please include the code in which you enqueue the task?

-Nick Johnson

On Thu, Mar 18, 2010 at 4:00 AM, Blake blakecaldw...@gmail.com wrote:

 A bug in my code sent my tasks out of control, so I'm temporarily at
 my limit for the day.  One of my database inserts is in a transaction
 that kicks off a task, per instructions here:


 http://code.google.com/appengine/docs/java/taskqueue/overview.html#Task_Within_Transactions

 As expected, the task queuing failed because of my quota issues, but
 my database insert succeeded.  This isn't good.

 I verified that I'm calling rollback on my transaction, but my record
 it still making it to the database.  What am I doing wrong!?!?

 here's the basic logic:

 Transaction tx = pm.currentTransaction();
 try{
tx.begin()

Foo foo = pm.getObjectById(...)
foo.setBar(1);
pm.makePersistent(foo);

// queue up task (throws an exception)

tx.commit();
 }
 finally
 {
if(tx.isActive())
{
 // i verified that this is happening with a log statement
 tx.rollback();
}
 }


 I verified that rollback is happening with a lot statement in that
 last block, but like I said, the database gets the record.  My
 temporary fix will be to try to queue up the task before committing
 the record to the database, but then I'm relying on the task killing
 itself later on when a database exception occurs.

 Am I using transactions wrong?

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



[google-appengine] Re: Using String as primary key and loading large objects?

2010-03-18 Thread Tristan
I just want to suggest that you should probably use Long as a primary
key. Initially there won't be any issues using String, but then
eventually you'll run into something where you have the same titles
and it will be a legitimate case, and you'll end up doing all sorts of
gymnastics in order to allow them to coexist but still have unique
primary keys. I haven't ran into any issues with Long primary keys
yet.

On Mar 16, 11:45 am, Mark mar...@gmail.com wrote:
 Hi,

 Kind of new to this, two questions if anyone can help:

 1) I want to make some class that is persistent on the data store. I
 can use a primary key of either Long or String. It would be more
 convenient for me to use String as the primary key. Is this going to
 really hurt performance-wise when doing lookups for objects vs a Long?

 2) I have some objects which are somewhat large, like:

   public class Story {
      private String mId;
      private String mTitle;
      private String mFullText; -- large
   }

 if I want to get a list of Story items, I don't want to spend time
 loading the mFullText parameter on each one. I can hold off on loading
 that until a user wants to see the full story. Is there a way to
 implement two different load methods for Story to control this? Or do
 we simply break a class like this up into two separate classes:

   public class StoryDescription {
      private String mId;
      private String mTitle;
   }

   public class StoryText {
      private String mId;
      private String mFullText;
   }

 and load as needed?

 Thanks

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



[google-appengine] Re: Using String as primary key and loading large objects?

2010-03-18 Thread Tristan
As to question 2. It depends what you use to interface with the
datastore. I can only speak for low-level datastore api, and in that
case, the whole thing gets loaded at once. So splitting your objects
into two entities would make sense.

On the other hand, remember that there is 1MB limit in the datastore,
so you may want to explore Blobstore API, so that your object now
looks like:

public class Story {
  private String mId;
  private String mTitle;
  private something BlobstoreApiKey; - not large anymore
}

Cheers!

On Mar 18, 9:42 am, Tristan tristan.slomin...@gmail.com wrote:
 I just want to suggest that you should probably use Long as a primary
 key. Initially there won't be any issues using String, but then
 eventually you'll run into something where you have the same titles
 and it will be a legitimate case, and you'll end up doing all sorts of
 gymnastics in order to allow them to coexist but still have unique
 primary keys. I haven't ran into any issues with Long primary keys
 yet.

 On Mar 16, 11:45 am, Mark mar...@gmail.com wrote:



  Hi,

  Kind of new to this, two questions if anyone can help:

  1) I want to make some class that is persistent on the data store. I
  can use a primary key of either Long or String. It would be more
  convenient for me to use String as the primary key. Is this going to
  really hurt performance-wise when doing lookups for objects vs a Long?

  2) I have some objects which are somewhat large, like:

    public class Story {
       private String mId;
       private String mTitle;
       private String mFullText; -- large
    }

  if I want to get a list of Story items, I don't want to spend time
  loading the mFullText parameter on each one. I can hold off on loading
  that until a user wants to see the full story. Is there a way to
  implement two different load methods for Story to control this? Or do
  we simply break a class like this up into two separate classes:

    public class StoryDescription {
       private String mId;
       private String mTitle;
    }

    public class StoryText {
       private String mId;
       private String mFullText;
    }

  and load as needed?

  Thanks

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



[google-appengine] Why do custom indexes require single-property indexes?

2010-03-18 Thread Jeff Schnitzer
For those of you reading this thread on appengine-java, I apologize.
However, I realized that this is really a general appengine question
and might get a better response from someone in the know here.
Here's the appengine-java thread:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/efed35cabf60f6ee

--

I'm puzzled by the behavior of custom indexes.  I have a simple test
case below, a simple equality filter on one property combined with a
descending sort on another property.  If I set the properties with
setUnindexedProperty(), the query fails to find the result.  If I set
the properties with setProperty(), it does.

Why?  I have a custom index, therefore the query should not need or
touch the single-property indexes on these fields, right?

With this requirement, adding a single custom index means the
datastore must now update (at least) five indexes on every put() - the
single-value ASC and DESC indexes of both properties as well as my
custom index.  That's gotta hurt.

Here's a test case using the low-level API:

/** */
@Test
public void lowLevelTest() throws Exception
{
   DatastoreService service = DatastoreServiceFactory.getDatastoreService();

   Entity ent = new Entity(Thing);
   ent.setUnindexedProperty(foo, fooValue);
   ent.setUnindexedProperty(bar, 123L);
   // switching to this works
   //ent.setProperty(foo, fooValue);
   //ent.setProperty(bar, 123L);
   service.put(ent);

   Query query = new Query(Thing);
   query.addFilter(foo, FilterOperator.EQUAL, fooValue);
   query.addSort(bar, SortDirection.DESCENDING);

   PreparedQuery pq = service.prepare(query);
   int count = 0;
   for (Entity fetched: pq.asIterable())
   {
   count++;
   }

   assert count == 1;
}

The last assertion fails.  The query doesn't find any results.  The
automatic datastore index seems to be fine:

!-- Indices written at Mon, 15 Mar 2010 21:49:01 PDT --
datastore-indexes
   !-- Used 1 time in query history --
   datastore-index kind=Thing ancestor=false source=auto
   property name=foo direction=asc/
   property name=bar direction=desc/
   /datastore-index
/datastore-indexes

What's up?  Is this just a bug in the dev mode, or is there a real
requirement that all properties must have single-value indexes in
order to be part of a custom index?

Thanks,
Jeff

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



Re: [google-appengine] Does datastore cache for ReferenceProperty?

2010-03-18 Thread Nick Johnson (Google)
Hi Shinichi,

Referenced entities are cached against the entity that's doing the
referencing - so if you have multiple entities referencing the same entity,
it'll be fetched multiple times. You can work around this by passing it in,
as you suggest, or by using a prefetch recipe such as this one:
http://blog.notdot.net/2010/01/ReferenceProperty-prefetching-in-App-Engine

In general, Guido's appstats is an excellent tool for diagnosing these sort
of things: https://sites.google.com/site/appengineappstats/

-Nick Johnson

On Tue, Mar 16, 2010 at 7:39 AM, Shinichi Nakanishi stouton...@gmail.comwrote:

 Does datastore run query for Instructor each time?  Or does it some
 sort of cache thing?

 If I have these models:

 class Instructor(db.Model)
firstName = db.StringProperty()
lastName = db.StringProperty()

 class Participant(db.Model)
firstName = db.StringProperty()
lastName = db.StringProperty()
workshop = db.ReferenceProperty(Workshop, collection_name =
 participants)

 class Workshop(db.Model)
instructor = db.ReferenceProperty(Instructor)

 Then if I do the following,

 workshop = Workshop.all().get()
 for participant in workshop.participants:
someMethod(workshop, participant)

 def someMethod(self, workshop, participant)
if (workshop.instructor...  # does it run query every time or does it
 cache?

 If datastore queries Instructor every time when I do
 workshop.instructor, I thought I should pass instructor as an
 argument.

 Shinichi

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



Re: [google-appengine] Why do custom indexes require single-property indexes?

2010-03-18 Thread Nick Johnson (Google)
Hi Jeff,

Unindexed properties are excluded from all indexing, not just from indexing
by the built-in indexes.

-Nick Johnson

On Thu, Mar 18, 2010 at 4:27 PM, Jeff Schnitzer j...@infohazard.org wrote:

 For those of you reading this thread on appengine-java, I apologize.
 However, I realized that this is really a general appengine question
 and might get a better response from someone in the know here.
 Here's the appengine-java thread:

 http://groups.google.com/group/google-appengine-java/browse_thread/thread/efed35cabf60f6ee

 --

 I'm puzzled by the behavior of custom indexes.  I have a simple test
 case below, a simple equality filter on one property combined with a
 descending sort on another property.  If I set the properties with
 setUnindexedProperty(), the query fails to find the result.  If I set
 the properties with setProperty(), it does.

 Why?  I have a custom index, therefore the query should not need or
 touch the single-property indexes on these fields, right?

 With this requirement, adding a single custom index means the
 datastore must now update (at least) five indexes on every put() - the
 single-value ASC and DESC indexes of both properties as well as my
 custom index.  That's gotta hurt.

 Here's a test case using the low-level API:

 /** */
 @Test
 public void lowLevelTest() throws Exception
 {
   DatastoreService service =
 DatastoreServiceFactory.getDatastoreService();

   Entity ent = new Entity(Thing);
   ent.setUnindexedProperty(foo, fooValue);
   ent.setUnindexedProperty(bar, 123L);
   // switching to this works
   //ent.setProperty(foo, fooValue);
   //ent.setProperty(bar, 123L);
   service.put(ent);

   Query query = new Query(Thing);
   query.addFilter(foo, FilterOperator.EQUAL, fooValue);
   query.addSort(bar, SortDirection.DESCENDING);

   PreparedQuery pq = service.prepare(query);
   int count = 0;
   for (Entity fetched: pq.asIterable())
   {
   count++;
   }

   assert count == 1;
 }

 The last assertion fails.  The query doesn't find any results.  The
 automatic datastore index seems to be fine:

 !-- Indices written at Mon, 15 Mar 2010 21:49:01 PDT --
 datastore-indexes
   !-- Used 1 time in query history --
   datastore-index kind=Thing ancestor=false source=auto
   property name=foo direction=asc/
   property name=bar direction=desc/
   /datastore-index
 /datastore-indexes

 What's up?  Is this just a bug in the dev mode, or is there a real
 requirement that all properties must have single-value indexes in
 order to be part of a custom index?

 Thanks,
 Jeff

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



[google-appengine] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Jeff Schnitzer
From one of my followup posts:

Every scrap of documentation I've found says that GAE queries only
follow a single index (the one exception being zigzag merges, which
don't apply here).  This means that to answer my query.filter(foo,
fooValue1).sort(-bar), there must be an index that contains the
foo and bar data sorted appropriately, no?  Ie:

/Thing/foo:fooValue1/bar:bar9/[thekeyvalue]
/Thing/foo:fooValue1/bar:bar8/[thekeyvalue]
/Thing/foo:fooValue1/bar:bar7/[thekeyvalue]
/Thing/foo:fooValue2/bar:bar8/[thekeyvalue]
/Thing/foo:fooValue2/bar:bar7/[thekeyvalue]

To satisfy this query, GAE should start following this custom index
and that's pretty much it.  There's no reason for it to touch the
single-property indexes (foo ASC, foo DESC, bar ASC, and bar DESC).

...and in my test, if I remove the custom index from
datastore-indexes.xml, it doesn't work.  But also if I use
setUnindexedProperty, it doesn't work.

It's like setUnindexedProperty is being interpreted as not only don't
set single-property indexes, but also don't include the property in
any custom indexes.  This is counterintuitive - if I wanted the index
not to be built, I can just remove the index.

Jeff

On Thu, Mar 18, 2010 at 9:27 AM, Jeff Schnitzer j...@infohazard.org wrote:
 For those of you reading this thread on appengine-java, I apologize.
 However, I realized that this is really a general appengine question
 and might get a better response from someone in the know here.
 Here's the appengine-java thread:
    
 http://groups.google.com/group/google-appengine-java/browse_thread/thread/efed35cabf60f6ee

 --

 I'm puzzled by the behavior of custom indexes.  I have a simple test
 case below, a simple equality filter on one property combined with a
 descending sort on another property.  If I set the properties with
 setUnindexedProperty(), the query fails to find the result.  If I set
 the properties with setProperty(), it does.

 Why?  I have a custom index, therefore the query should not need or
 touch the single-property indexes on these fields, right?

 With this requirement, adding a single custom index means the
 datastore must now update (at least) five indexes on every put() - the
 single-value ASC and DESC indexes of both properties as well as my
 custom index.  That's gotta hurt.

 Here's a test case using the low-level API:

 /** */
 @Test
 public void lowLevelTest() throws Exception
 {
       DatastoreService service = 
 DatastoreServiceFactory.getDatastoreService();

       Entity ent = new Entity(Thing);
       ent.setUnindexedProperty(foo, fooValue);
       ent.setUnindexedProperty(bar, 123L);
       // switching to this works
       //ent.setProperty(foo, fooValue);
       //ent.setProperty(bar, 123L);
       service.put(ent);

       Query query = new Query(Thing);
       query.addFilter(foo, FilterOperator.EQUAL, fooValue);
       query.addSort(bar, SortDirection.DESCENDING);

       PreparedQuery pq = service.prepare(query);
       int count = 0;
       for (Entity fetched: pq.asIterable())
       {
               count++;
       }

       assert count == 1;
 }

 The last assertion fails.  The query doesn't find any results.  The
 automatic datastore index seems to be fine:

 !-- Indices written at Mon, 15 Mar 2010 21:49:01 PDT --
 datastore-indexes
   !-- Used 1 time in query history --
   datastore-index kind=Thing ancestor=false source=auto
       property name=foo direction=asc/
       property name=bar direction=desc/
   /datastore-index
 /datastore-indexes

 What's up?  Is this just a bug in the dev mode, or is there a real
 requirement that all properties must have single-value indexes in
 order to be part of a custom index?

 Thanks,
 Jeff


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



Re: [google-appengine] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Nick Johnson (Google)
On Thu, Mar 18, 2010 at 4:32 PM, Jeff Schnitzer j...@infohazard.org wrote:

 From one of my followup posts:

 Every scrap of documentation I've found says that GAE queries only
 follow a single index (the one exception being zigzag merges, which
 don't apply here).  This means that to answer my query.filter(foo,
 fooValue1).sort(-bar), there must be an index that contains the
 foo and bar data sorted appropriately, no?  Ie:

 /Thing/foo:fooValue1/bar:bar9/[thekeyvalue]
 /Thing/foo:fooValue1/bar:bar8/[thekeyvalue]
 /Thing/foo:fooValue1/bar:bar7/[thekeyvalue]
 /Thing/foo:fooValue2/bar:bar8/[thekeyvalue]
 /Thing/foo:fooValue2/bar:bar7/[thekeyvalue]

 To satisfy this query, GAE should start following this custom index
 and that's pretty much it.  There's no reason for it to touch the
 single-property indexes (foo ASC, foo DESC, bar ASC, and bar DESC).

 ...and in my test, if I remove the custom index from
 datastore-indexes.xml, it doesn't work.  But also if I use
 setUnindexedProperty, it doesn't work.

 It's like setUnindexedProperty is being interpreted as not only don't
 set single-property indexes, but also don't include the property in
 any custom indexes.  This is counterintuitive - if I wanted the index
 not to be built, I can just remove the index.


That's correct. Entities are evaluated individually, not as a group, and any
unindexed properties are ignored for the purposes of all indexing, not just
for built-in indexes.

-Nick Johnson



 Jeff

 On Thu, Mar 18, 2010 at 9:27 AM, Jeff Schnitzer j...@infohazard.org
 wrote:
  For those of you reading this thread on appengine-java, I apologize.
  However, I realized that this is really a general appengine question
  and might get a better response from someone in the know here.
  Here's the appengine-java thread:
 
 http://groups.google.com/group/google-appengine-java/browse_thread/thread/efed35cabf60f6ee
 
  --
 
  I'm puzzled by the behavior of custom indexes.  I have a simple test
  case below, a simple equality filter on one property combined with a
  descending sort on another property.  If I set the properties with
  setUnindexedProperty(), the query fails to find the result.  If I set
  the properties with setProperty(), it does.
 
  Why?  I have a custom index, therefore the query should not need or
  touch the single-property indexes on these fields, right?
 
  With this requirement, adding a single custom index means the
  datastore must now update (at least) five indexes on every put() - the
  single-value ASC and DESC indexes of both properties as well as my
  custom index.  That's gotta hurt.
 
  Here's a test case using the low-level API:
 
  /** */
  @Test
  public void lowLevelTest() throws Exception
  {
DatastoreService service =
 DatastoreServiceFactory.getDatastoreService();
 
Entity ent = new Entity(Thing);
ent.setUnindexedProperty(foo, fooValue);
ent.setUnindexedProperty(bar, 123L);
// switching to this works
//ent.setProperty(foo, fooValue);
//ent.setProperty(bar, 123L);
service.put(ent);
 
Query query = new Query(Thing);
query.addFilter(foo, FilterOperator.EQUAL, fooValue);
query.addSort(bar, SortDirection.DESCENDING);
 
PreparedQuery pq = service.prepare(query);
int count = 0;
for (Entity fetched: pq.asIterable())
{
count++;
}
 
assert count == 1;
  }
 
  The last assertion fails.  The query doesn't find any results.  The
  automatic datastore index seems to be fine:
 
  !-- Indices written at Mon, 15 Mar 2010 21:49:01 PDT --
  datastore-indexes
!-- Used 1 time in query history --
datastore-index kind=Thing ancestor=false source=auto
property name=foo direction=asc/
property name=bar direction=desc/
/datastore-index
  /datastore-indexes
 
  What's up?  Is this just a bug in the dev mode, or is there a real
  requirement that all properties must have single-value indexes in
  order to be part of a custom index?
 
  Thanks,
  Jeff
 

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



Re: [google-appengine] Re: Auth with google apps acc ounts — depends on billing status?

2010-03-18 Thread Nick Johnson (Google)
Hi Denis,

Auth via appspot.com will only work if you've added that app to your Google
Apps control panel. The error you're seeing is because you haven't added
this second app to your Apps control panel.

-Nick Johnson

On Mon, Mar 15, 2010 at 10:48 PM, Denis Moskalets denya@gmail.comwrote:

 Both apps have auth through the same google apps domain.

 Copy-paste from from both apps - appspot.com - Application Settings:

 Authentication Options:
 When this application was created it was configured to allow anyone
 with a valid xxx.xx Google Apps domain to sign in if the Google
 Accounts API is used for authentication. Learn more

 Only difference between two apps: one have billing enabled, another
 — doesn't have.

 On Mar 15, 4:57 pm, Wooble geoffsp...@gmail.com wrote:
  On Mar 15, 3:06 am, Denis Moskalets denya@gmail.com wrote:
 
 
 
 
 
   I have two appspot applications.
   One — fot tests, second — production.
   Not important, why it is so.
 
   Two apps have same source code.
   Auth throw Google Apps Accounts enabled on both.
   Billing enabled only for one app.
 
   Apps are closed for public, so only registred and authorized users can
   access it. When u try to open page, you will get redirect to default
   google apps login page.
 
   So.
   When i try to open production app — all right, i've got redirect to
   login page:http://ctms-release.appspot.com/
 
   The second app generate 500 eror.http://ctms-medms-test.appspot.com/
 
   In logs:
 File /base/data/home/apps/ctms-medms-test/.../googletags.py, line
   11, in google_login_url
   return escape(users.create_login_url(redirect))
 File /base/python_lib/versions/1/google/appengine/api/users.py,
   line 179, in create_login_url
   raise NotAllowedError
 
   Billing is turned off for this non-workin' app.
 
   I've looked up manual, docs and FAQs, but there is nothing about
   difference in login procedure between free/billed apps.
 
  If an application has login restricted to a Google Apps domain, you
  cannot create login URLs when the page is being visited through
  appspot; it's only possible on the actual domain to which login is
  restricted.  I'd guess you only actually restricted logins on the test
  application and not the real application; you can check this (but,
  alas, not change it) under Application Settings in the appengine
  dashboard.
 
  Billing should not have any effect on the login process, as far as I
  know.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



Re: [google-appengine] Does datastore cache for ReferenceProperty?

2010-03-18 Thread Shinichi Nakanishi
Hi Nick,

Thank you for your response.  That was exactly what I wanted to know.
AppStats looks pretty neat and I will try to use that.

Shinichi

On Thu, Mar 18, 2010 at 09:29, Nick Johnson (Google)
nick.john...@google.com wrote:
 Hi Shinichi,
 Referenced entities are cached against the entity that's doing the
 referencing - so if you have multiple entities referencing the same entity,
 it'll be fetched multiple times. You can work around this by passing it in,
 as you suggest, or by using a prefetch recipe such as this
 one: http://blog.notdot.net/2010/01/ReferenceProperty-prefetching-in-App-Engine
 In general, Guido's appstats is an excellent tool for diagnosing these sort
 of things: https://sites.google.com/site/appengineappstats/
 -Nick Johnson

 On Tue, Mar 16, 2010 at 7:39 AM, Shinichi Nakanishi stouton...@gmail.com
 wrote:

 Does datastore run query for Instructor each time?  Or does it some
 sort of cache thing?

 If I have these models:

 class Instructor(db.Model)
    firstName = db.StringProperty()
    lastName = db.StringProperty()

 class Participant(db.Model)
    firstName = db.StringProperty()
    lastName = db.StringProperty()
    workshop = db.ReferenceProperty(Workshop, collection_name =
 participants)

 class Workshop(db.Model)
    instructor = db.ReferenceProperty(Instructor)

 Then if I do the following,

 workshop = Workshop.all().get()
 for participant in workshop.participants:
    someMethod(workshop, participant)

 def someMethod(self, workshop, participant)
    if (workshop.instructor...  # does it run query every time or does it
 cache?

 If datastore queries Instructor every time when I do
 workshop.instructor, I thought I should pass instructor as an
 argument.

 Shinichi

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.com.
 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

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.com.
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Why do custom indexes require single-property indexes?

2010-03-18 Thread Jeff Schnitzer
On Thu, Mar 18, 2010 at 9:32 AM, Nick Johnson (Google)
nick.john...@google.com wrote:
 Hi Jeff,
 Unindexed properties are excluded from all indexing, not just from indexing
 by the built-in indexes.
 -Nick Johnson

Ah ha.  The next question then is - why?

This current arrangement has some particularly nasty consequences:

1) If you want a custom index across 3 properties, you are now forced
to maintain seven indexes total - the three single-property ASC
indexes, the three single-property DESC indexes, and the actual custom
index.

2) If you want to create a custom index across a property that does
not currently have a single-property index, you must manually go
through and reprocess you entire dataset.  The automatic index
building isn't automatic.

On the other hand, there doesn't seem to be much benefit to the
current approach.  It does provide the ability to make rdbms-like
partial indexes in custom indexes as well as single-property indexes,
but it seems like any minor gain is going to be overshadowed by the
fact that you're now maintaining quite a large number of additional
indexes.

Furthermore, the only way to access this partial index functionality
is with the low-level API.  At the higher level APIs, you can only
flag a property as unindexed or not.  If the user wants a property to
be excluded from a custom index... they can easily remove it from the
datastore-indexes.xml/yaml.  So this default doesn't buy you anything
and actually costs you a lot of flexibility and extra index overhead.

Unless I'm missing something?

Jeff

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



Re: [google-appengine] Why do custom indexes require single-property indexes?

2010-03-18 Thread Nick Johnson (Google)
Hi Jeff,

On Thu, Mar 18, 2010 at 4:49 PM, Jeff Schnitzer j...@infohazard.org wrote:

 On Thu, Mar 18, 2010 at 9:32 AM, Nick Johnson (Google)
 nick.john...@google.com wrote:
  Hi Jeff,
  Unindexed properties are excluded from all indexing, not just from
 indexing
  by the built-in indexes.
  -Nick Johnson

 Ah ha.  The next question then is - why?

 This current arrangement has some particularly nasty consequences:

 1) If you want a custom index across 3 properties, you are now forced
 to maintain seven indexes total - the three single-property ASC
 indexes, the three single-property DESC indexes, and the actual custom
 index.


None of the built in indexes require 'maintenance'. There's also only a
single desc, and a single asc index for all properties.



 2) If you want to create a custom index across a property that does
 not currently have a single-property index, you must manually go
 through and reprocess you entire dataset.  The automatic index
 building isn't automatic.


If you mean that you want to index a field that was previously listed as an
unindexed field then yes, you do.

-Nick Johnson


 On the other hand, there doesn't seem to be much benefit to the
 current approach.  It does provide the ability to make rdbms-like
 partial indexes in custom indexes as well as single-property indexes,
 but it seems like any minor gain is going to be overshadowed by the
 fact that you're now maintaining quite a large number of additional
 indexes.

 Furthermore, the only way to access this partial index functionality
 is with the low-level API.  At the higher level APIs, you can only
 flag a property as unindexed or not.  If the user wants a property to
 be excluded from a custom index... they can easily remove it from the
 datastore-indexes.xml/yaml.  So this default doesn't buy you anything
 and actually costs you a lot of flexibility and extra index overhead.

 Unless I'm missing something?

 Jeff

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



Re: [google-appengine] Re: Auth with google apps acc ounts — depends on billing status?

2010-03-18 Thread Denya
Hm, thanks.

Both apps added to Google Apps CP, but:
ctms-release Web address

Your users can access ctms-release at:
https://ctms-release.appspot.com
http://othe-address.domain.rudelete

And ctms-medms-test have onlt:
http://othe-address.domain.ru

How to add appspot.com address to app? And why it disappear :-)

On Thu, Mar 18, 2010 at 7:44 PM, Nick Johnson (Google) 
nick.john...@google.com wrote:

 Hi Denis,

 Auth via appspot.com will only work if you've added that app to your
 Google Apps control panel. The error you're seeing is because you haven't
 added this second app to your Apps control panel.

 -Nick Johnson


 On Mon, Mar 15, 2010 at 10:48 PM, Denis Moskalets denya@gmail.comwrote:

 Both apps have auth through the same google apps domain.

 Copy-paste from from both apps - appspot.com - Application Settings:

 Authentication Options:
 When this application was created it was configured to allow anyone
 with a valid xxx.xx Google Apps domain to sign in if the Google
 Accounts API is used for authentication. Learn more

 Only difference between two apps: one have billing enabled, another
 — doesn't have.

 On Mar 15, 4:57 pm, Wooble geoffsp...@gmail.com wrote:
  On Mar 15, 3:06 am, Denis Moskalets denya@gmail.com wrote:
 
 
 
 
 
   I have two appspot applications.
   One — fot tests, second — production.
   Not important, why it is so.
 
   Two apps have same source code.
   Auth throw Google Apps Accounts enabled on both.
   Billing enabled only for one app.
 
   Apps are closed for public, so only registred and authorized users can
   access it. When u try to open page, you will get redirect to default
   google apps login page.
 
   So.
   When i try to open production app — all right, i've got redirect to
   login page:http://ctms-release.appspot.com/
 
   The second app generate 500 eror.http://ctms-medms-test.appspot.com/
 
   In logs:
 File /base/data/home/apps/ctms-medms-test/.../googletags.py, line
   11, in google_login_url
   return escape(users.create_login_url(redirect))
 File /base/python_lib/versions/1/google/appengine/api/users.py,
   line 179, in create_login_url
   raise NotAllowedError
 
   Billing is turned off for this non-workin' app.
 
   I've looked up manual, docs and FAQs, but there is nothing about
   difference in login procedure between free/billed apps.
 
  If an application has login restricted to a Google Apps domain, you
  cannot create login URLs when the page is being visited through
  appspot; it's only possible on the actual domain to which login is
  restricted.  I'd guess you only actually restricted logins on the test
  application and not the real application; you can check this (but,
  alas, not change it) under Application Settings in the appengine
  dashboard.
 
  Billing should not have any effect on the login process, as far as I
  know.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Re: Auth with google apps acc ounts — depends on billing status?

2010-03-18 Thread Denya
Yeah, i found manual :)
Thanks!

You must re-install this application to enable secure access for your
users. Learn 
morehttp://www.google.com/support/a/bin/answer.py?hl=enanswer=91080

On Thu, Mar 18, 2010 at 8:09 PM, Denya denya@gmail.com wrote:

 Hm, thanks.

 Both apps added to Google Apps CP, but:
 ctms-release Web address

 Your users can access ctms-release at:
 https://ctms-release.appspot.com
 http://othe-address.domain.rudelete

 And ctms-medms-test have onlt:
 http://othe-address.domain.ru

 How to add appspot.com address to app? And why it disappear :-)

 On Thu, Mar 18, 2010 at 7:44 PM, Nick Johnson (Google) 
 nick.john...@google.com wrote:

 Hi Denis,

 Auth via appspot.com will only work if you've added that app to your
 Google Apps control panel. The error you're seeing is because you haven't
 added this second app to your Apps control panel.

 -Nick Johnson


 On Mon, Mar 15, 2010 at 10:48 PM, Denis Moskalets denya@gmail.comwrote:

 Both apps have auth through the same google apps domain.

 Copy-paste from from both apps - appspot.com - Application Settings:

 Authentication Options:
 When this application was created it was configured to allow anyone
 with a valid xxx.xx Google Apps domain to sign in if the Google
 Accounts API is used for authentication. Learn more

 Only difference between two apps: one have billing enabled, another
 — doesn't have.

 On Mar 15, 4:57 pm, Wooble geoffsp...@gmail.com wrote:
  On Mar 15, 3:06 am, Denis Moskalets denya@gmail.com wrote:
 
 
 
 
 
   I have two appspot applications.
   One — fot tests, second — production.
   Not important, why it is so.
 
   Two apps have same source code.
   Auth throw Google Apps Accounts enabled on both.
   Billing enabled only for one app.
 
   Apps are closed for public, so only registred and authorized users
 can
   access it. When u try to open page, you will get redirect to default
   google apps login page.
 
   So.
   When i try to open production app — all right, i've got redirect to
   login page:http://ctms-release.appspot.com/
 
   The second app generate 500 eror.http://ctms-medms-test.appspot.com/
 
   In logs:
 File /base/data/home/apps/ctms-medms-test/.../googletags.py, line
   11, in google_login_url
   return escape(users.create_login_url(redirect))
 File /base/python_lib/versions/1/google/appengine/api/users.py,
   line 179, in create_login_url
   raise NotAllowedError
 
   Billing is turned off for this non-workin' app.
 
   I've looked up manual, docs and FAQs, but there is nothing about
   difference in login procedure between free/billed apps.
 
  If an application has login restricted to a Google Apps domain, you
  cannot create login URLs when the page is being visited through
  appspot; it's only possible on the actual domain to which login is
  restricted.  I'd guess you only actually restricted logins on the test
  application and not the real application; you can check this (but,
  alas, not change it) under Application Settings in the appengine
  dashboard.
 
  Billing should not have any effect on the login process, as far as I
  know.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Clarification on how we can use our 10 sites

2010-03-18 Thread Nick Johnson (Google)
Hi Blake,

Can you clarify why it would be 'way too complex' to have your site support
all the permutations you want to support? It seems like it would be far more
complex to maintain multiple different versions of your site and keep them
up to date.

-Nick Johnson

On Sat, Mar 13, 2010 at 7:03 PM, Blake blakecaldw...@gmail.com wrote:

 I know we can't shard our app into 10 small sites just to get around
 quotas, but what about creating different versions of our site for
 different languages, data providers, etc?

 I'm making an Amazon affiliate site, and will eventually create a
 version for Japan, Canada, Europe, etc.  And, I'd like to take my
 engine, extract out Amazon.com from it, and plug in other affiliate
 networks.  Each of these combinations will be a new App Engine site,
 even though they reuse 95% of my code, because it'd be way too complex
 to keep it together.

 Are these valid use cases for our 10 sites?

 And, if I need more than 10, is there any problem with my signing up
 for another account for another 10 sites?

 Thanks!!

 - Blake

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



Re: [google-appengine] Task Queue issues

2010-03-18 Thread Nick Johnson (Google)
Hi Saurabh,

Have you checked the Task Queues page of the admin console, to see if the
tasks are listed there?

-Nick Johnson

On Fri, Mar 12, 2010 at 9:00 PM, Saurabh saurabhgupta...@gmail.com wrote:

 Hello,

 I'm noticing issues with my task queues: the system seems to think
 that it has enqueued tasks, but the URLs don't show up in the debug
 logs and the actions that are supposed to be executed when the task
 runs are not being run. This same code was working yesterday and is
 not working today (March 12, 2010) so I'm curious to know if others
 are experiencing any task queue issues as well.

 Can Google provide some clarity on this?
 Thanks,
 Saurabh

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



Re: [google-appengine] Why do custom indexes require single-property indexes?

2010-03-18 Thread Jeff Schnitzer
On Thu, Mar 18, 2010 at 9:55 AM, Nick Johnson (Google)
nick.john...@google.com wrote:
 On Thu, Mar 18, 2010 at 4:49 PM, Jeff Schnitzer j...@infohazard.org wrote:

 This current arrangement has some particularly nasty consequences:

 1) If you want a custom index across 3 properties, you are now forced
 to maintain seven indexes total - the three single-property ASC
 indexes, the three single-property DESC indexes, and the actual custom
 index.

 None of the built in indexes require 'maintenance'. There's also only a
 single desc, and a single asc index for all properties.

Sorry, perhaps my terminology is faltering a bit here - by maintain
I mean write the values of.  While there are only two index tables,
our hypothetical put() requires three writes to each table, plus
another write to the custom index table.  This seems rather painful.

 2) If you want to create a custom index across a property that does
 not currently have a single-property index, you must manually go
 through and reprocess you entire dataset.  The automatic index
 building isn't automatic.

 If you mean that you want to index a field that was previously listed as an
 unindexed field then yes, you do.

I understand that this is how it works, and that it was deliberately
chosen.  My question is, why does it work this way?

I would like you to change this behavior:  If you call
setUnindexedProperty(), leave the property in custom indexes.  Or at
least add a setProperty() method that only creates custom indexes, not
single-property indexes.

The reason for this is that it more accurately reflects how people
actually use the datastore:

1) In a write-heavy application, indexes are expensive to maintain.
Forcing single-property indexes for every custom index is particularly
onerous since custom indexes may contain large numbers of properties.

2) People add custom indexes to enable new features; requiring that
single-property indexes exist means a lot of tedious data reprocessing
whenever you want to add such a feature.  You can't rely on automatic
indexing anymore.

In contrast, the current scheme of setUnindexedProperty() skipping
custom indexes doesn't really buy us developers any advantage.

Thanks,
Jeff

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



Re: [google-appengine] Re: Clarification on how we can use our 10 sites

2010-03-18 Thread Nick Johnson (Google)
Hi Blake,

On Thu, Mar 18, 2010 at 6:01 PM, Blake blakecaldw...@gmail.com wrote:

 Well... you're probably right in the long term.  Setting the site up
 to support the different regions from within the same application will
 be tricky, but probably worth it.

 Lemme ask you about performance... Is the speed for querying for an
 entity by key mostly independent of how many records there are in the
 table?


It's entirely independent. In fact, all entities for all apps are stored in
a single Bigtable table, which lookup operations operate over.



 And, I hate to say it though, but cost is a factor.  If I can host 5
 country-themed versions of a site in 5 different apps for free, or put
 them all together for $50/month, I'd probably be tempted to split them
 out, so long as I'm not breaking the agreement.  I don't want to game
 the system, so if this is against the terms, I wouldn't do it.


I'm afraid splitting your app up in that way is pretty much against the
terms by definition. :)

However, if 1/5th of your app is under the free quota, your entire app isn't
likely to cost you anything near $50/month, depending on which quotas you
exceed first.

-Nick Johnson



 Thanks Nick

 On Mar 18, 1:15 pm, Nick Johnson (Google) nick.john...@google.com
 wrote:
  Hi Blake,
 
  Can you clarify why it would be 'way too complex' to have your site
 support
  all the permutations you want to support? It seems like it would be far
 more
  complex to maintain multiple different versions of your site and keep
 them
  up to date.
 
  -Nick Johnson
 
 
 
  On Sat, Mar 13, 2010 at 7:03 PM, Blake blakecaldw...@gmail.com wrote:
   I know we can't shard our app into 10 small sites just to get around
   quotas, but what about creating different versions of our site for
   different languages, data providers, etc?
 
   I'm making an Amazon affiliate site, and will eventually create a
   version for Japan, Canada, Europe, etc.  And, I'd like to take my
   engine, extract out Amazon.com from it, and plug in other affiliate
   networks.  Each of these combinations will be a new App Engine site,
   even though they reuse 95% of my code, because it'd be way too complex
   to keep it together.
 
   Are these valid use cases for our 10 sites?
 
   And, if I need more than 10, is there any problem with my signing up
   for another account for another 10 sites?
 
   Thanks!!
 
   - Blake
 
   --
   You received this message because you are subscribed to the Google
 Groups
   Google App Engine group.
   To post to this group, send email to google-appengine@googlegroups.com
 .
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com
 
   .
   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

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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

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



[google-appengine] Re: Clarification on how we can use our 10 sites

2010-03-18 Thread Blake
Thanks Nick.  I thought the TOS was more concerned with sites that
talked with each other, like one that does search, one that sends
emails, etc.  That's fine though, I don't mind supporting GAE, and
like you say, it'll still be cheap.  Plus, the extra pressure of
having to pay for use will force me to be more clever with my design,
which has been a big reason for this being so fun to begin with.

So now that I got ya ... can you tell me when you guys are going to
announce an API for searching our entities? :) :).  Just between me
and you, I won't tell anyone :|

Thanks again, you guys are doing great work - this is an awesome
project

- Blake

On Mar 18, 3:04 pm, Nick Johnson (Google) nick.john...@google.com
wrote:
 Hi Blake,

 On Thu, Mar 18, 2010 at 6:01 PM, Blake blakecaldw...@gmail.com wrote:
  Well... you're probably right in the long term.  Setting the site up
  to support the different regions from within the same application will
  be tricky, but probably worth it.

  Lemme ask you about performance... Is the speed for querying for an
  entity by key mostly independent of how many records there are in the
  table?

 It's entirely independent. In fact, all entities for all apps are stored in
 a single Bigtable table, which lookup operations operate over.



  And, I hate to say it though, but cost is a factor.  If I can host 5
  country-themed versions of a site in 5 different apps for free, or put
  them all together for $50/month, I'd probably be tempted to split them
  out, so long as I'm not breaking the agreement.  I don't want to game
  the system, so if this is against the terms, I wouldn't do it.

 I'm afraid splitting your app up in that way is pretty much against the
 terms by definition. :)

 However, if 1/5th of your app is under the free quota, your entire app isn't
 likely to cost you anything near $50/month, depending on which quotas you
 exceed first.

 -Nick Johnson





  Thanks Nick

  On Mar 18, 1:15 pm, Nick Johnson (Google) nick.john...@google.com
  wrote:
   Hi Blake,

   Can you clarify why it would be 'way too complex' to have your site
  support
   all the permutations you want to support? It seems like it would be far
  more
   complex to maintain multiple different versions of your site and keep
  them
   up to date.

   -Nick Johnson

   On Sat, Mar 13, 2010 at 7:03 PM, Blake blakecaldw...@gmail.com wrote:
I know we can't shard our app into 10 small sites just to get around
quotas, but what about creating different versions of our site for
different languages, data providers, etc?

I'm making an Amazon affiliate site, and will eventually create a
version for Japan, Canada, Europe, etc.  And, I'd like to take my
engine, extract out Amazon.com from it, and plug in other affiliate
networks.  Each of these combinations will be a new App Engine site,
even though they reuse 95% of my code, because it'd be way too complex
to keep it together.

Are these valid use cases for our 10 sites?

And, if I need more than 10, is there any problem with my signing up
for another account for another 10 sites?

Thanks!!

- Blake

--
You received this message because you are subscribed to the Google
  Groups
Google App Engine group.
To post to this group, send email to google-appengine@googlegroups.com
  .
To unsubscribe from this group, send email to
google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
  google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com

.
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

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
  .
  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

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



[google-appengine] Jdo does the job, Jpa does not.

2010-03-18 Thread Phuong Nguyen
I have setup a project using both Jdo and Jpa.
I used Jpa Annotation to Declare my Entity.
Then I setup my TestCases based on LocalTestHelper (from Google App
Engine Documentation).
When I run the test,
a call to makePersistent of Jdo:PersistenceManager is perfectly OK;
a call to persist of Jpa:EntityManager raised an error:
java.lang.IllegalArgumentException: Type
(org.seamoo.persistence.jpa.model.ExampleModel) is not that of an
entity but needs to be for this operation
at
org.datanucleus.jpa.EntityManagerImpl.assertEntity(EntityManagerImpl.java:
888)
at
org.datanucleus.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:
385)
Caused by:
org.datanucleus.exceptions.NoPersistenceInformationException: The
class org.seamoo.persistence.jpa.model.ExampleModel is required to
be persistable yet no Meta-Data/Annotations can be found for this
class. Please check that the Meta-Data/annotations is defined in a
valid file location.
at
org.datanucleus.ObjectManagerImpl.assertClassPersistable(ObjectManagerImpl.java:
3894)
at
org.datanucleus.jpa.EntityManagerImpl.assertEntity(EntityManagerImpl.java:
884)
... 27 more

How can it be the case?
Below is the link to the source code to the maven projects that
reproduce that problems:
http://seamoo.com/jpa-bug-reproduce.tar.gz
Execute the maven test goal over the parent pom you will notice that
3/4 tests from org.seamoo.persistence.jdo.JdoGenericDAOImplTest
passed, while all tests from
org.seamoo.persistence.jpa.JpaGenericDAOImplTest failed.

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



[google-appengine] Re: Why do custom indexes require single-property indexes?

2010-03-18 Thread Ugorji
Cross-posting my comments from the earlier thread.

The restriction that every index'able property must be indexed at
put-time when put into the datastore (using setProperty as opposed
to setUnindexedProperty), has 2 MAJOR disadvantages with far-reaching
repercussions:
- you cannot index entities after they have been put (even with a
custom index). You will have to re-write the entity to index it.
- Each put is 4X more expensive in latency/clock-time (potentially),
CPU-cost and storage. This seems un-necessary, especially if a single
custom index will suffice all your querying needs.

I was really hoping to use custom indexes to buy major performance
savings (in latency, CPU-cost and storage), and also be able to re-
index every entity after the fact. But this restriction is heavy
(preventing direct solution to a problem everyone may end up facing),
and very expensive (costing us big-time).

A way to disable automatic single-property indexes for certain
properties or entities will help to solve this issue.

On Mar 18, 10:36 am, Jeff Schnitzer j...@infohazard.org wrote:
 On Thu, Mar 18, 2010 at 9:55 AM, Nick Johnson (Google)

 nick.john...@google.com wrote:
  On Thu, Mar 18, 2010 at 4:49 PM, Jeff Schnitzer j...@infohazard.org wrote:

  This current arrangement has some particularly nasty consequences:

  1) If you want a custom index across 3 properties, you are now forced
  to maintain seven indexes total - the three single-property ASC
  indexes, the three single-property DESC indexes, and the actual custom
  index.

  None of the built in indexes require 'maintenance'. There's also only a
  single desc, and a single asc index for all properties.

 Sorry, perhaps my terminology is faltering a bit here - by maintain
 I mean write the values of.  While there are only two index tables,
 our hypothetical put() requires three writes to each table, plus
 another write to the custom index table.  This seems rather painful.

  2) If you want to create a custom index across a property that does
  not currently have a single-property index, you must manually go
  through and reprocess you entire dataset.  The automatic index
  building isn't automatic.

  If you mean that you want to index a field that was previously listed as an
  unindexed field then yes, you do.

 I understand that this is how it works, and that it was deliberately
 chosen.  My question is, why does it work this way?

 I would like you to change this behavior:  If you call
 setUnindexedProperty(), leave the property in custom indexes.  Or at
 least add a setProperty() method that only creates custom indexes, not
 single-property indexes.

 The reason for this is that it more accurately reflects how people
 actually use the datastore:

 1) In a write-heavy application, indexes are expensive to maintain.
 Forcing single-property indexes for every custom index is particularly
 onerous since custom indexes may contain large numbers of properties.

 2) People add custom indexes to enable new features; requiring that
 single-property indexes exist means a lot of tedious data reprocessing
 whenever you want to add such a feature.  You can't rely on automatic
 indexing anymore.

 In contrast, the current scheme of setUnindexedProperty() skipping
 custom indexes doesn't really buy us developers any advantage.

 Thanks,
 Jeff

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



[google-appengine] how to clean appengine datastore in eclipse plugin ?

2010-03-18 Thread V.Chalmel
Hi !

I'm currently working on an initialization script for my application,
and I need my training datastore, in appengine eclipse plugin, to be
totally empty, how to easily clean it ? I didn't found in eclipse menu
anything concerning the appengine plugin datastore.

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



[google-appengine] Filter's static variable is lost

2010-03-18 Thread Ali Ok
Hi all,
I am trying to run Myfaces on App Engine. I wrote a filter for
initialization of the framework, since current ServletContextListener
initializer is not working correctly because of appengine issue 1828
(http://code.google.com/p/googleappengine/issues/detail?id=1828).

It works like:
 * Check static boolean initialized is true
 * If true, continue
 * Else, init the framework and set initialized to true


At the first call, I see that the framework is initialized, and static
initialized field is set to true.
However, after some time (ie. 5 minutes),  my filter is recreated,
instance variables are gone and most interesting part is, static
initialized field is set to its default value(false). Thus,
framework is initialized again with a call after 5 minutes.
I think my filter class is reloaded or something. Why that can happen?

Thanks,

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



[google-appengine] Re: DNS providers that support wildcard CNAME's?

2010-03-18 Thread Joe
Try http://www.editdns.net i think they can support wildcards :)

On Feb 28, 6:52 pm, Ross M Karchner rosskarch...@gmail.com wrote:
 Now that App Engine supports wildcard domain mappings (as of SDK 1.3.1), can
 anyone recommend a DNS host that supports wildcard CNAME's?

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



[google-appengine] Re: App Engine account activation

2010-03-18 Thread Lukasw44
I have the same problem
25% Initiating update.
Password for lukas...@gmail.com: Error posting to URL:
https://appengine.google.com/api/appversion/create?app_id=Sklepversion=1;
403 Forbidden
You do not have permission to modify this app (app_id=u'Sklep').

Error posting to URL: 
https://appengine.google.com/api/appversion/create?app_id=Sklepversion=1;
403 Forbidden
You do not have permission to modify this app (app_id=u'Sklep').


Error Details:
2010-03-18 20:32:46 org.apache.jasper.JspC processFile
INFO: Built File: \index.jsp


java.io.IOException: Error posting to URL:
https://appengine.google.com/api/appversion/create?app_id=Sklepversion=1;
403 Forbidden
You do not have permission to modify this app (app_id=u'Sklep').

Unable to update app: Error posting to URL:
https://appengine.google.com/api/appversion/create?app_id=Sklepversion=1;
403 Forbidden
You do not have permission to modify this app (app_id=u'Sklep').

Please see the logs [C:\DOCUME~1\KIK\USTAWI~1\Temp
\appcfg7467014162719914143.log] for further information.

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



[google-appengine] URLError: urlopen error (-2, 'Name or service not known')

2010-03-18 Thread neo7
While I was uploading my application on the appengine I received the
following error message which I have pasted on the pastebin [link:
http://pastebin.com/ZmGyW87P]


##
[n...@localhost melange]$ thirdparty/google_appengine/appcfg.py update
build
Application: melangeneo7; version: 0-7-20100317.
Server: appengine.google.com.
Scanning files on local disk.
Scanned 500 files.
Initiating update.
2010-03-18 03:02:17,378 ERROR appcfg.py:1454 An unexpected error
occurred. Aborting.
Traceback (most recent call last):
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 1425, in DoUpload
missing_files = self.Begin()
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 1223, in Begin
version=self.version, payload=self.config.ToYAML())
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appengine_rpc.py, line 344, in Send
f = self.opener.open(req)
  File /usr/local/lib/python2.5/urllib2.py, line 374, in open
response = self._open(req, data)
  File /usr/local/lib/python2.5/urllib2.py, line 392, in _open
'_open', req)
  File /usr/local/lib/python2.5/urllib2.py, line 353, in _call_chain
result = func(*args)
  File /usr/local/lib/python2.5/urllib2.py, line 1109, in https_open
return self.do_open(httplib.HTTPSConnection, req)
  File /usr/local/lib/python2.5/urllib2.py, line 1076, in do_open
raise URLError(err)
URLError: urlopen error (-2, 'Name or service not known')
Traceback (most recent call last):
  File thirdparty/google_appengine/appcfg.py, line 67, in module
run_file(__file__, globals())
  File thirdparty/google_appengine/appcfg.py, line 63, in run_file
execfile(script_path, globals_)
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 2548, in module
main(sys.argv)
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 2539, in main
result = AppCfgApp(argv).Run()
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 1640, in Run
self.action(self)
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 2427, in __call__
return method()
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 1935, in Update
lambda path: open(os.path.join(basepath, path), 'rb'))
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 1425, in DoUpload
missing_files = self.Begin()
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appcfg.py, line 1223, in Begin
version=self.version, payload=self.config.ToYAML())
  File /home/neo7/melange/thirdparty/google_appengine/google/
appengine/tools/appengine_rpc.py, line 344, in Send
f = self.opener.open(req)
  File /usr/local/lib/python2.5/urllib2.py, line 374, in open
response = self._open(req, data)
  File /usr/local/lib/python2.5/urllib2.py, line 392, in _open
'_open', req)
  File /usr/local/lib/python2.5/urllib2.py, line 353, in _call_chain
result = func(*args)
  File /usr/local/lib/python2.5/urllib2.py, line 1109, in https_open
return self.do_open(httplib.HTTPSConnection, req)
  File /usr/local/lib/python2.5/urllib2.py, line 1076, in do_open
raise URLError(err)
urllib2.URLError: urlopen error (-2, 'Name or service not known')
[n...@localhost melange]$
#


any solution for it.

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



[google-appengine] Session Data must be in DataStore?

2010-03-18 Thread Guy Smith
“If a web application wants to store session data, then it must be
stored in the DataStore rather than static variables or MemCache.”  -
is that correct?

I understand the reasoning behind it – that separate requests in a
session may go to different servers, which will not have the same
values in static variables or MemCache, only the DataStore is shared
between servers. But it is expensive (in developer time and DataStore
writes), so I’d just like to double check.

NB: I have a fair bit of session data – encoding it in the cookie is
not feasible.

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



Re: [google-appengine] lms4milano uses Google Accounts for Sign In.

2010-03-18 Thread Petru
Replace the  character by ? (question mark); i.e:
hl=it by ?hl=IT

2010/3/17 lms4milano davide.rogn...@gmail.com

 Hi All,
 I see an error when I try to add hl=it here:


 https://www.google.com/accounts/ServiceLogin?service=ahcontinue=http://lms4milano.appspot.com/_ah/login%3Fcontinue%3Dhttp://lms4milano.appspot.com/your_messageltmpl=gmahname=lms4milanosig=d432e84041598a27ea0d2d779029055f

 adding hl=it for the italian language


 https://www.google.com/accounts/ServiceLogin?service=ahcontinue=http://lms4milano.appspot.com/_ah/login%3Fcontinue%3Dhttp://lms4milano.appspot.com/your_messageltmpl=gmahname=lms4milanosig=d432e84041598a27ea0d2d779029055fhl=it

 the error in italian is:
 La pagina richiesta non è valida.

 the error in english is:
 The page you requested is invalid.

 adding hl=en


 https://www.google.com/accounts/ServiceLogin?service=ahcontinue=http://lms4milano.appspot.com/_ah/login%3Fcontinue%3Dhttp://lms4milano.appspot.com/your_messageltmpl=gmahname=lms4milanosig=d432e84041598a27ea0d2d779029055fhl=en

 Is this a bug?

 Thank you
 -- Davide

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Crawler service / Connection to services in the outside world ?

2010-03-18 Thread Karthik K
Would it be possible to connect to a service running in a known dns in
a data center and do some processing from within the app-engine (say,
a crawler / web app on top of a service ) ?

What are the limitations around this space ( as applicable to the
google app engine from a security perspective and to the java runtime,
in particular) ?

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



[google-appengine] Found error when I use BlobProperty and template in my app

2010-03-18 Thread schinghu
Hi all,

When I use app engine to develop a simple website, uploading image
using html form, I met the following error:
[template is used in my application]
--
Traceback (most recent call last):
  File /tools/google/google_appengine/google/appengine/ext/webapp/
__init__.py, line 507, in __call__
handler.get(*groups)
  File /mnt/hgfs/share/cloud/app/netcoc/netcoc.py, line 53, in get
self.response.out.write(template.render(template_file,
to_template_values))
  File /tools/google/google_appengine/google/appengine/ext/webapp/
template.py, line 80, in render
t = load(template_path, debug)
  File /tools/google/google_appengine/google/appengine/ext/webapp/
template.py, line 108, in load
template = django.template.loader.get_template(file_name)
  File /tools/google/google_appengine/lib/django/django/template/
loader.py, line 80, in get_template
template = get_template_from_string(source, origin, template_name)
  File /tools/google/google_appengine/lib/django/django/template/
loader.py, line 88, in get_template_from_string
return Template(source, origin, name)
  File /tools/google/google_appengine/lib/django/django/template/
__init__.py, line 158, in __init__
self.nodelist = compile_string(template_string, origin)
  File /tools/google/google_appengine/lib/django/django/template/
__init__.py, line 174, in compile_string
return parser.parse()
  File /tools/google/google_appengine/lib/django/django/template/
__init__.py, line 273, in parse
compiled_result = compile_func(self, token)
  File /tools/google/google_appengine/lib/django/django/template/
defaulttags.py, line 544, in do_for
nodelist_loop = parser.parse(('endfor',))
  File /tools/google/google_appengine/lib/django/django/template/
__init__.py, line 254, in parse
filter_expression = self.compile_filter(token.contents)
  File /tools/google/google_appengine/lib/django/django/template/
__init__.py, line 338, in compile_filter
return FilterExpression(token, self)
  File /tools/google/google_appengine/lib/django/django/template/
__init__.py, line 558, in __init__
raise TemplateSyntaxError, Could not parse the remainder: %s %
token[upto:]
TemplateSyntaxError: Could not parse the remainder: ()
--


This is my Model:
--
class MsgTable(db.Model):
user= db.UserProperty()
image   = db.BlobProperty()
content = db.StringProperty(multiline=True)
date= db.DateTimeProperty(auto_now_add=True)
--


This is the data sent to template
--
to_template_values = {
'MsgRs': MsgRs,
'url': url,
'url_txt': url_txt,
}
template_file = os.path.join(os.path.dirname(__file__),
'index.htm')
self.response.out.write(template.render(template_file,
to_template_values))
--


This is the final part: index.htm and Image app:
--
html
head
link type=text/css rel=stylesheet href=/css/main.css /
/head
body
{% for item in MsgRs %}
img src=image?image_id={{ item.key() }}/img
{% if item.user %}
b{{ item.user.nickname }}/b wrote:
{% else %}
An anonymous person wrote:
{% endif %}
blockquote{{ item.content|escape }}/blockquote
{% endfor %}
form action=/sign method=post
divtextarea name=content rows=3 cols=60/textarea/div
divinput type=file name=image//div
divinput type=submit value=Sign Guestbook/div
/form
a href={{ url }}{{ url_txt }}/a
/body
/html
--
class Image (webapp.RequestHandler):
def get(self):
item = db.get(self.request.get(image_id))
if item.image:
self.response.headers['Content-Type'] = image/png
self.response.out.write(item.image)
else:
self.response.out.write(No image)
--



If I delete this line:
img 

[google-appengine] ERROR: NOT_FOUND

2010-03-18 Thread tunguyenlam
Hi all,

I have finished a test project for google app. But i met a problem:

when i run my project in local host ,run directly with Eclipse, it's
ok (Win Vista).
But when i deployed my project in Google App it only could run the
index.html file. with the other file it not found (ERROR: NOT_FOUND)

example: currently, i'm at index.html. I enter submit button to send a
construction. So, controller (Servlet) sendRedirects to test.jsp
file.  and the webpage displays : ERROR:NOT_FOUND

could somebody help me !!

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



[google-appengine] Seemingly arbitrary 404s and 500s ...

2010-03-18 Thread Martin
I'm running my app via a CNAME record from my main domain. I'm seeing
a worrying number of 404s in the logs and I received a 500 in-browser
when I was looking at the site earlier. The app is at 
http://photography.martindoyle.com
and martindoylephotography.appspot.com and seems to work fine most of
the time, but if I can't be certain that the website will be always up
then I'll have to look to another hosting solution. The stuff that's
coming back with 404s definitely exists, and both earlier and later
requests have succesfully retrieved the resources (JPEGs, via
SimpleViewer SWFs). The 500 is on a massively simple page with very
little Java in it.

Anyone have any suggestions??

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



[google-appengine] calendar via app engine

2010-03-18 Thread Justin


I've found this example and a similar thread from this group- both
from late 2008. I was wondering, has anything changed? Is this still
the best way to access calendar from appengine?

I guess I'm curious to know why I have to define events in the data
store even though they already have a formal definition elsewhere.
Also, do I have to use the data store? Is it just to make querying
easier? The calendar API appears to have some functionality (re:
querying for events). Can I just read the events and display them
(gwt)?


http://code.google.com/appengine/articles/more_google_data.html#gcal


http://groups.google.com/group/google-appengine/browse_thread/thread/98bd0e2af6e961d6/5a91d13bb8e37243?lnk=gstq=calendar+appengine#5a91d13bb8e37243

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



[google-appengine] Re: Templates in subfolders

2010-03-18 Thread cmau
Hello, try
path = os.path.join(os.path.dirname(__file__),'flash','index.htm')

On 17 mar, 13:23, Kenchu sweken...@gmail.com wrote:
 /Users/swekenchu/Dropbox/Development/GoogleAppEngine/google proj/flash/
 index.htm

 On Mar 16, 3:05 pm, djidjadji djidja...@gmail.com wrote: What is the value 
 of 'path' after the os.path.join()?

  2010/3/15 Kenchu sweken...@gmail.com:

   Displaying a template that resides in the main folder together with
   the script works just fine, but as soon as I try to display one in a
   subfolder, I get an error:

   TemplateDoesNotExist: index.htm

   It's weird that it doesn't display the full path.

   This is the code I use:

   path = os.path.join(os.path.dirname(__file__), 'flash/index.htm')
   self.response.out.write(template.render(path,{}))

   Are you not allowed to display templates in subfolders?

   --
   You received this message because you are subscribed to the Google Groups 
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to 
   google-appengine+unsubscr...@googlegroups.com.
   For more options, visit this group 
   athttp://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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Entity Index vs. Cursors

2010-03-18 Thread jpuopolo
All,

With the introduction of Query Cursors, do we still need to implement
entity indexes for rigid ordering and efficient paging? In Brett
Slatkin's talk on Building Scalable Web Apps with GAE, he discussed
how to create a blog - and uses the index technique; however, query
cursors seem to go a long way in fulfilling the need - ?

Thoughts?

Thanks,
John

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



[google-appengine] Re: anybody success with blobstore upload via JS / iframe

2010-03-18 Thread Mehmet
I made it work using an ajax jquery file upload plugin: 
http://valums.com/ajax-upload/

On Mar 18, 6:38 am, Roberto Saccon rsac...@gmail.com wrote:
 I am experimenting with large blob uploads. Everything works fine as
 long as I submit a form to do the upload. But I would prefer to use a
 page-refresh-less solution. So I tried no noswfupload.js and  iframe
 approach ajaxupload.js, but none of them seem to work out of the box,
 and I get the following error message.

 SEVERE: Must only return a redirect from a Blobstore upload callback.

 if I look at the development server admin panel, the __BlobInfo__
 table entry actually gets created, but not the entry containing the
 actual file

 Anybody got ajax blob upload working ? Or has suggestion why it fails
 in my case ?

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



[google-appengine] Re: anybody success with blobstore upload via JS / iframe

2010-03-18 Thread Roberto Saccon
thanks, will try that.

On Mar 18, 5:15 pm, Mehmet rax...@gmail.com wrote:
 I made it work using an ajax jquery file upload 
 plugin:http://valums.com/ajax-upload/

 On Mar 18, 6:38 am, Roberto Saccon rsac...@gmail.com wrote:



  I am experimenting with large blob uploads. Everything works fine as
  long as I submit a form to do the upload. But I would prefer to use a
  page-refresh-less solution. So I tried no noswfupload.js and  iframe
  approach ajaxupload.js, but none of them seem to work out of the box,
  and I get the following error message.

  SEVERE: Must only return a redirect from a Blobstore upload callback.

  if I look at the development server admin panel, the __BlobInfo__
  table entry actually gets created, but not the entry containing the
  actual file

  Anybody got ajax blob upload working ? Or has suggestion why it fails
  in my case ?

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



[google-appengine] datastore view question : how to sort

2010-03-18 Thread observer247
While using the datastore viewer, to find a particular record, I use a
gql query, for eg:

Select * from table where name  = 'myname'


or to sort it in descending order:

Select * from table ORDER BY score DESC

My question is how to I find a record with id = 22

Also how do I sort and find out the last added entry. (so I would sort
it by id in desc order).

Thanks for reading.

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



Re: [google-appengine] Filter's static variable is lost

2010-03-18 Thread Jody Belka
If your app isnt receiving traffic, after a while it'll get shut down. Then,
when needed again it gets spun back up. Also, if your app starts getting
lots of traffic more instances can be spun up to deal with it, and then shut
down when not needed any more.

On 17 March 2010 09:25, Ali Ok al...@aliok.com.tr wrote:

 Hi all,
 I am trying to run Myfaces on App Engine. I wrote a filter for
 initialization of the framework, since current ServletContextListener
 initializer is not working correctly because of appengine issue 1828
 (http://code.google.com/p/googleappengine/issues/detail?id=1828).

 It works like:
  * Check static boolean initialized is true
  * If true, continue
  * Else, init the framework and set initialized to true


 At the first call, I see that the framework is initialized, and static
 initialized field is set to true.
 However, after some time (ie. 5 minutes),  my filter is recreated,
 instance variables are gone and most interesting part is, static
 initialized field is set to its default value(false). Thus,
 framework is initialized again with a call after 5 minutes.
 I think my filter class is reloaded or something. Why that can happen?

 Thanks,

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Increase in Task Queue quotas?

2010-03-18 Thread jread
Hello,

In an effort to reduce the number of Deadline Exceeded Errors we are
seeing in our Task Queue processes, we have chopped our tasks up into
a large number of small, sequential tasks. This has resulted in far
less Deadline Exceeded Errors but has, understandably, greatly
increased the number of tasks we are creating and churning through. We
have attempted to maximize throughput by using a number of queues and
adding the tasks to these, chosen at random. While this seems to be
working, we have a couple of issues looming. We are in all likelihood
going to exceed the 1,000,000 tasks we are allotted in a single day
and the size of the queues is increasing, indicating that we are
falling behind in our processing.

So, could we possibly get the 1,000,000 tasks limit increased and,
possibly the maximum task rate increased as well? The app ids affected
are steprep and steprep-demo.

Any assistance is greatly appreciated!

Thanks,
Jeff.

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



[google-appengine] Can't read admin log, can't deploy

2010-03-18 Thread skk
When I tried to deploy version  of my app mybharatbyrail, I get an
error

Unable to update:
java.io.IOException: Error posting to URL:
http://appengine.google.com/api/appversion/create?app_id=mybharatbyrailversion=2;
500 Internal Server Error

So I tried to look at the admin log via the Administration section  of
the web based account console:
I get a SERVER error 500 when I try to look at the admin log. This
happens to all 3 versions of the app.

My other apps - pestalozzi-village and bharatbyrail are ok - in terms
of being able to see the admin log.

Its only all versions of mybharatbyrail that's gives me an error.

The Google APP Engine system status doesn't show anything for the Java
version.

Is this me or you ?

This has been happening for the last 1 hour. Ideas

-skk

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



[google-appengine] Re: lms4milano uses Google Accounts for Sign In.

2010-03-18 Thread lms4milano
I saw that the bug is fixed without any URL parameter but using the
browser headers:
http://code.google.com/p/googleappengine/issues/detail?id=514

[ Comment 11 ]
Our login page is now translated into 40 languages, including es, zh-
CH, and zh-TW (sorry -- no Klingon).

There is no way for your application to force a particular language --
currently we only look at the languages
requested by the user's browser -- but if you need this functionality
please open and/or star a new bug.


On Mar 18, 3:49 am, Petru jorge.pe...@gmail.com wrote:
 Replace the  character by ? (question mark); i.e:
 hl=it by ?hl=IT

 2010/3/17 lms4milano davide.rogn...@gmail.com

  Hi All,
  I see an error when I try to add hl=it here:

 https://www.google.com/accounts/ServiceLogin?service=ahcontinue=http...

  adding hl=it for the italian language

 https://www.google.com/accounts/ServiceLogin?service=ahcontinue=http...

  the error in italian is:
  La pagina richiesta non è valida.

  the error in english is:
  The page you requested is invalid.

  adding hl=en

 https://www.google.com/accounts/ServiceLogin?service=ahcontinue=http...

  Is this a bug?

  Thank you
  -- Davide

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
  .
  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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread Pavel Kaplin
+1

On 19 мар, 00:55, skk shantanu.ka...@gmail.com wrote:
 When I tried to deploy version  of my app mybharatbyrail, I get an
 error

 Unable to update:
 java.io.IOException: Error posting to 
 URL:http://appengine.google.com/api/appversion/create?app_id=mybharatbyra...
 500 Internal Server Error

 So I tried to look at the admin log via the Administration section  of
 the web based account console:
 I get a SERVER error 500 when I try to look at the admin log. This
 happens to all 3 versions of the app.

 My other apps - pestalozzi-village and bharatbyrail are ok - in terms
 of being able to see the admin log.

 Its only all versions of mybharatbyrail that's gives me an error.

 The Google APP Engine system status doesn't show anything for the Java
 version.

 Is this me or you ?

 This has been happening for the last 1 hour. Ideas

 -skk

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



Re: [google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread Николай Тенев
+1

2010/3/19 Pavel Kaplin pavel.kap...@gmail.com

 +1

 On 19 мар, 00:55, skk shantanu.ka...@gmail.com wrote:
  When I tried to deploy version  of my app mybharatbyrail, I get an
  error
 
  Unable to update:
  java.io.IOException: Error posting to URL:
 http://appengine.google.com/api/appversion/create?app_id=mybharatbyra...
  500 Internal Server Error
 
  So I tried to look at the admin log via the Administration section  of
  the web based account console:
  I get a SERVER error 500 when I try to look at the admin log. This
  happens to all 3 versions of the app.
 
  My other apps - pestalozzi-village and bharatbyrail are ok - in terms
  of being able to see the admin log.
 
  Its only all versions of mybharatbyrail that's gives me an error.
 
  The Google APP Engine system status doesn't show anything for the Java
  version.
 
  Is this me or you ?
 
  This has been happening for the last 1 hour. Ideas
 
  -skk

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Crawler service / Connection to services in the outside world ?

2010-03-18 Thread Karthik K
Came across the sandbox restrictions w.r.t sockets and the urlfetchservice
(in the gae api )  that can do this.

On Wed, Mar 17, 2010 at 9:01 PM, Karthik K oss@gmail.com wrote:

 Would it be possible to connect to a service running in a known dns in
 a data center and do some processing from within the app-engine (say,
 a crawler / web app on top of a service ) ?

 What are the limitations around this space ( as applicable to the
 google app engine from a security perspective and to the java runtime,
 in particular) ?





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



[google-appengine] Error 500 on Application Settings page and Admin Logs page. Can't deploy.

2010-03-18 Thread Jérémy Selier
Hi there,

On the appengine admin panel of one of my app, when I try to access
the pages :
- Admin Logs
- Application Settings

I got: Server Error
A server error has occurred.
Return to Applications screen »

When I try to deploy the app I also got something similar:
Error 500: --- begin server output ---

Server Error (500)
A server error has occurred.
--- end server output ---


I tried to rollback manually without success.

I don't know if there's something wrong with my code or if it's a
problem on GAE side?

Help appreciated! Thanks!

--
Jeremy

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



[google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread Anekdotz
+1

On Mar 18, 7:00 pm, Николай Тенев tenev.niko...@gmail.com wrote:
 +1

 2010/3/19 Pavel Kaplin pavel.kap...@gmail.com



  +1

  On 19 мар, 00:55, skk shantanu.ka...@gmail.com wrote:
   When I tried to deploy version  of my app mybharatbyrail, I get an
   error

   Unable to update:
   java.io.IOException: Error posting to URL:
 http://appengine.google.com/api/appversion/create?app_id=mybharatbyra...
   500 Internal Server Error

   So I tried to look at the admin log via the Administration section  of
   the web based account console:
   I get a SERVER error 500 when I try to look at the admin log. This
   happens to all 3 versions of the app.

   My other apps - pestalozzi-village and bharatbyrail are ok - in terms
   of being able to see the admin log.

   Its only all versions of mybharatbyrail that's gives me an error.

   The Google APP Engine system status doesn't show anything for the Java
   version.

   Is this me or you ?

   This has been happening for the last 1 hour. Ideas

   -skk

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
  google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib 
  e...@googlegroups.com
  .
  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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Late Cron Execution

2010-03-18 Thread stumpy
Anyone from google care to comment?

I noticed this again tonight and I rely on cron to start my cache
refresh task. When cron fails to run my data becomes stale and this is
unacceptable. My understanding was that cron is a reliable service
with maybe +/- 2 minutes error rate. What level of service should I
expect from cron? and is it reasonable to kickstart critial processes
via cron? or is this not recommended?


On Mar 17, 11:39 pm, stumpy ianmcgrath.m...@gmail.com wrote:
 Has anyone else noticed recently that the cron service has became
 unreliable, often executing 10 minutes late and sometimes skipped
 entirely for periods of several hours?

 Prehaps an entry should be added to the status page for cron, task
 queue and other similar services.

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



[google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread Koen Bok
+1

On Mar 19, 12:10 am, Anekdotz anekdotz.se...@gmail.com wrote:
 +1

 On Mar 18, 7:00 pm, Николай Тенев tenev.niko...@gmail.com wrote:



  +1

  2010/3/19 Pavel Kaplin pavel.kap...@gmail.com

   +1

   On 19 мар, 00:55, skk shantanu.ka...@gmail.com wrote:
When I tried to deploy version  of my app mybharatbyrail, I get an
error

Unable to update:
java.io.IOException: Error posting to URL:
  http://appengine.google.com/api/appversion/create?app_id=mybharatbyra...
500 Internal Server Error

So I tried to look at the admin log via the Administration section  of
the web based account console:
I get a SERVER error 500 when I try to look at the admin log. This
happens to all 3 versions of the app.

My other apps - pestalozzi-village and bharatbyrail are ok - in terms
of being able to see the admin log.

Its only all versions of mybharatbyrail that's gives me an error.

The Google APP Engine system status doesn't show anything for the Java
version.

Is this me or you ?

This has been happening for the last 1 hour. Ideas

-skk

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine group.
   To post to this group, send email to google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
e...@googlegroups.com
   .
   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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Post-mortem for February 24th, 2010 outage

2010-03-18 Thread nickmilon
Han Z, Chris,G gae team

I do agree splitting datastore operations is not a good idea.
I was also going to post and argue  about this but I realized it was
too late since it seems there was a definite decision from google as
described in this same post mortem and implemented in zero time some
hours  later in last SDK.
The question now (post mortem unfortunately  !) is that G should at
least try and consult a little with developers here before committing
to such things.
So G please try engage us (poor developers) into the loop before such
decisions are made, probably we are just stupid developers but still
may be we have an idea or something worth considering
More so as I do not see any relevant issue - ticket request been
filled about this.

Hapy coding ;)

Nick
Athens - Greece

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



[google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread Staz
+1

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



[google-appengine] Re: Error 500 on Application Settings page and Admin Logs page. Can't deploy.

2010-03-18 Thread Jérémy Selier
Everything seems back to normal for me, the 2 pages are working and
I've been able to deploy my app.

--
Jeremy

On Mar 19, 12:09 am, Anekdotz anekdotz.se...@gmail.com wrote:
 Hey there, I just experienced the same issue.  Looks like a GAE-side
 problem

 On Mar 18, 7:06 pm, Jérémy Selier jerem.sel...@gmail.com wrote:



  Hi there,

  On the appengine admin panel of one of my app, when I try to access
  the pages :
  - Admin Logs
  - Application Settings

  I got: Server Error
  A server error has occurred.
  Return to Applications screen »

  When I try to deploy the app I also got something similar:
  Error 500: --- begin server output ---

  Server Error (500)
  A server error has occurred.
  --- end server output ---

  I tried to rollback manually without success.

  I don't know if there's something wrong with my code or if it's a
  problem on GAE side?

  Help appreciated! Thanks!

  --
  Jeremy

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



[google-appengine] Re: Late Cron Execution

2010-03-18 Thread stumpy
To provide a little more information:

I have a cron that is set up to run every one minute to initialise a
cache refresh. However over the past few nights during the time of
4pm-11pm GMT the logs show there to be gaps of 10 minutes or greater
between some invocations.


On Mar 18, 11:15 pm, stumpy ianmcgrath.m...@gmail.com wrote:
 Anyone from google care to comment?

 I noticed this again tonight and I rely on cron to start my cache
 refresh task. When cron fails to run my data becomes stale and this is
 unacceptable. My understanding was that cron is a reliable service
 with maybe +/- 2 minutes error rate. What level of service should I
 expect from cron? and is it reasonable to kickstart critial processes
 via cron? or is this not recommended?

 On Mar 17, 11:39 pm, stumpy ianmcgrath.m...@gmail.com wrote:

  Has anyone else noticed recently that the cron service has became
  unreliable, often executing 10 minutes late and sometimes skipped
  entirely for periods of several hours?

  Prehaps an entry should be added to the status page for cron, task
  queue and other similar services.

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



Re: [google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread Jon McAlister
Yep, we had a bad admin console push and deploys were affected
from 3:10pm PST until 4:30pm PST. All better now. Apologies.



On Thu, Mar 18, 2010 at 4:23 PM, Staz steve.le...@yahoo.com wrote:
 +1

 --
 You received this message because you are subscribed to the Google Groups 
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to 
 google-appengine+unsubscr...@googlegroups.com.
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Can't read admin log, can't deploy

2010-03-18 Thread skk
Agreed - all ok now. for mybharatbyrail app. Thx.

-skk

On Mar 18, 5:46 pm, Jon McAlister jon...@google.com wrote:
 Yep, we had a bad admin console push and deploys were affected
 from 3:10pm PST until 4:30pm PST. All better now. Apologies.

 On Thu, Mar 18, 2010 at 4:23 PM, Staz steve.le...@yahoo.com wrote:
  +1

  --
  You received this message because you are subscribed to the Google Groups 
  Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Session Data must be in DataStore?

2010-03-18 Thread Robert Kluin

Guy,
  Memcache is shared across instances. But it is a cache... so items  
may be cleared at any time. If you have short lived sessions and  
having one or more get cleared from time to time is not a problem use  
memcache.


Check out gaeutilities. It makes working with sessions pretty easy.

Robert


On Mar 18, 2010, at 8:41, Guy Smith g...@multiniche.org wrote:


“If a web application wants to store session data, then it must be
stored in the DataStore rather than static variables or MemCache.”  
 -

is that correct?

I understand the reasoning behind it – that separate requests in a
session may go to different servers, which will not have the same
values in static variables or MemCache, only the DataStore is shared
between servers. But it is expensive (in developer time and DataStore
writes), so I’d just like to double check.

NB: I have a fair bit of session data – encoding it in the cookie is
not feasible.

--
You received this message because you are subscribed to the Google  
Groups Google App Engine group.
To post to this group, send email to google- 
appeng...@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com 
.
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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] datastore view question : how to sort

2010-03-18 Thread Robert Kluin
You could order by _key_.  However, as I recall key values are not  
guaranteed to be strictly increasing, only unique.


I do not think there is a way to use the key name or id to access a  
record in the viewer. But, if you know the encoded value you can  
using: _key_ = encoded key


Robert



On Mar 19, 2010, at 6:25, observer247 prem...@gmail.com wrote:


While using the datastore viewer, to find a particular record, I use a
gql query, for eg:

Select * from table where name  = 'myname'


or to sort it in descending order:

Select * from table ORDER BY score DESC

My question is how to I find a record with id = 22

Also how do I sort and find out the last added entry. (so I would sort
it by id in desc order).

Thanks for reading.

--
You received this message because you are subscribed to the Google  
Groups Google App Engine group.
To post to this group, send email to google- 
appeng...@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com 
.
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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] How can I efficiently retrieve entities for a list of keys? (Java)

2010-03-18 Thread JavaJosh
Hi,

I'd like to use the low-level datastore API (Java) to deference a
(potentially long) list of keys into their respective Entities. I've
scoured the API and searched messages in this group, and don't see any
answers.

I primarily looked for a method on Query that takes a Collection or
Array of Keys. Didn't find it.

For now I can get by with a for loop. Ghetto but it works. I'd like to
do better.

Thanks.

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



[google-appengine] Re: How can I efficiently retrieve entities for a list of keys? (Java)

2010-03-18 Thread JavaJosh
BTW in python this would be db.get(keys). :)

On Mar 18, 5:32 pm, JavaJosh javaj...@gmail.com wrote:
 Hi,

 I'd like to use the low-level datastore API (Java) to deference a
 (potentially long) list of keys into their respective Entities. I've
 scoured the API and searched messages in this group, and don't see any
 answers.

 I primarily looked for a method on Query that takes a Collection or
 Array of Keys. Didn't find it.

 For now I can get by with a for loop. Ghetto but it works. I'd like to
 do better.

 Thanks.

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



[google-appengine] Re: How can I efficiently retrieve entities for a list of keys? (Java)

2010-03-18 Thread Tristan
look in DatastoreService get()

On Mar 18, 7:33 pm, JavaJosh javaj...@gmail.com wrote:
 BTW in python this would be db.get(keys). :)

 On Mar 18, 5:32 pm, JavaJosh javaj...@gmail.com wrote:



  Hi,

  I'd like to use the low-level datastore API (Java) to deference a
  (potentially long) list of keys into their respective Entities. I've
  scoured the API and searched messages in this group, and don't see any
  answers.

  I primarily looked for a method on Query that takes a Collection or
  Array of Keys. Didn't find it.

  For now I can get by with a for loop. Ghetto but it works. I'd like to
  do better.

  Thanks.

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



Re: [google-appengine] datastore view question : how to sort

2010-03-18 Thread Eli Jones
you can do this neat little trick:

Select * From table Where __key__ = Key('table',22)

If the id was really a key_name, then you'd use '22' instead of an int.

On Thu, Mar 18, 2010 at 5:25 PM, observer247 prem...@gmail.com wrote:

 While using the datastore viewer, to find a particular record, I use a
 gql query, for eg:

 Select * from table where name  = 'myname'


 or to sort it in descending order:

 Select * from table ORDER BY score DESC

 My question is how to I find a record with id = 22

 Also how do I sort and find out the last added entry. (so I would sort
 it by id in desc order).

 Thanks for reading.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: how to clean appengine datastore in eclipse plugin ?

2010-03-18 Thread Tristan
go to war/WEB-INF/appengine-generated and delete file called
local_db.bin

On Mar 17, 4:02 am, V.Chalmel vchal...@gmail.com wrote:
 Hi !

 I'm currently working on an initialization script for my application,
 and I need my training datastore, in appengine eclipse plugin, to be
 totally empty, how to easily clean it ? I didn't found in eclipse menu
 anything concerning the appengine plugin datastore.

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



[google-appengine] Re: unable to update my app (authentication issue)

2010-03-18 Thread Greg Tracy

I'm able to update some of my other apps, but I still can't update the
'apodemail' app.

As I look at the list of developers listed in the admin panel for each
of my apps, there is clearly a disconnect. Some apps have multiple
entries with the same email address. Some apps have no administrators
listed. Just developers.

I would appreciate it if someone on the app engine team could look at
this. I believe something got disconnected when the email address for
the google account was changed.

Thanks.



On Mar 18, 1:59 pm, Greg Tracy g...@gregtracy.com wrote:
 Since changing the email address on my Google account, I have not been
 able to update my application. Command line and SDK updates fail with
 the following...

 Password for greg@hidden.com: Invalid username or password.
 Error 401: --- begin server output ---
 Must authenticate first.
 --- end server output ---
 2010-03-18 13:57:32 (Process exited with code 1)

 Is this a caching issue in app engine? The email was changed yesterday
 afternoon...

 This is happening for the app, apodemail.appspot.com

 Thanks.

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



Re: [google-appengine] Re: How can I efficiently retrieve entities for a list of keys? (Java)

2010-03-18 Thread Josh Rehman
Thanks! Knew it had to be in there somewhere. :)

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/DatastoreService.html#get(java.lang.Iterable)


On Thu, Mar 18, 2010 at 5:39 PM, Tristan tristan.slomin...@gmail.comwrote:

 look in DatastoreService get()

 On Mar 18, 7:33 pm, JavaJosh javaj...@gmail.com wrote:
  BTW in python this would be db.get(keys). :)
 
  On Mar 18, 5:32 pm, JavaJosh javaj...@gmail.com wrote:
 
 
 
   Hi,
 
   I'd like to use the low-level datastore API (Java) to deference a
   (potentially long) list of keys into their respective Entities. I've
   scoured the API and searched messages in this group, and don't see any
   answers.
 
   I primarily looked for a method on Query that takes a Collection or
   Array of Keys. Didn't find it.
 
   For now I can get by with a for loop. Ghetto but it works. I'd like to
   do better.
 
   Thanks.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Session Data must be in DataStore?

2010-03-18 Thread Patrick Twohig
For whatever its' worth, I have HTTP Basic auth implemented in my web
service and it fetches the user's account details from the datastore each
time a request is made and it doesn't seem to be a huge problem.

On Wed, Mar 17, 2010 at 4:41 PM, Guy Smith g...@multiniche.org wrote:

 “If a web application wants to store session data, then it must be
 stored in the DataStore rather than static variables or MemCache.”  -
 is that correct?

 I understand the reasoning behind it – that separate requests in a
 session may go to different servers, which will not have the same
 values in static variables or MemCache, only the DataStore is shared
 between servers. But it is expensive (in developer time and DataStore
 writes), so I’d just like to double check.

 NB: I have a fair bit of session data – encoding it in the cookie is
 not feasible.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.




-- 
Patrick H. Twohig.

Namazu Studios
P.O. Box 34161
San Diego, CA 92163-4161

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



[google-appengine] Re: unable to update my app (authentication issue)

2010-03-18 Thread Greg Tracy

update...

when i add a new developer to the app, i am able to run update on the
app when i authenticate using the new user.

however, the app is functionally broken at the moment because it can't
send email. i've tried setting the sender using the owner of the app
as well as the new developer account noted above, but neither of them
work. the mail.send() call will fail with the following...

InvalidSenderError: Unauthorized sender

this is now much worse then simply an update problem. my app is now
broken.



On Mar 18, 9:23 pm, Greg Tracy g...@gregtracy.com wrote:
 I'm able to update some of my other apps, but I still can't update the
 'apodemail' app.

 As I look at the list of developers listed in the admin panel for each
 of my apps, there is clearly a disconnect. Some apps have multiple
 entries with the same email address. Some apps have no administrators
 listed. Just developers.

 I would appreciate it if someone on the app engine team could look at
 this. I believe something got disconnected when the email address for
 the google account was changed.

 Thanks.

 On Mar 18, 1:59 pm, Greg Tracy g...@gregtracy.com wrote:

  Since changing the email address on my Google account, I have not been
  able to update my application. Command line and SDK updates fail with
  the following...

  Password for greg@hidden.com: Invalid username or password.
  Error 401: --- begin server output ---
  Must authenticate first.
  --- end server output ---
  2010-03-18 13:57:32 (Process exited with code 1)

  Is this a caching issue in app engine? The email was changed yesterday
  afternoon...

  This is happening for the app, apodemail.appspot.com

  Thanks.

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



[google-appengine] Re: Image.getHeight throws UnsupportedOperationException when Image instanced from Blobstore

2010-03-18 Thread JavaJosh
I'll take that as a yes! Bug filed:

  http://code.google.com/p/googleappengine/issues/detail?id=2990

Feel free to vote for it. :)

On Mar 16, 1:58 pm, Josh Rehman j...@joshrehman.com wrote:
 Do you think I should file a bug?

 On Sun, Mar 14, 2010 at 1:24 PM, JavaJosh javaj...@gmail.com wrote:
  Hi there,

  I'm new to Google App Engine, and was wondering what I'm doing wrong.
  In my application, users upload (potentially large) images into the
  Blobstore. I also need to create a thumbnail image that is 300px wide
  (and high enough to maintain aspect ratio). Although
  ImagesServiceFactory.makeImageFromBlob(blobKey) returns an Image
  that's not null, when I try to access width and height properties of
  the returned image I get an UnsupportedOperationException No image
  data is available..

  Here is the simplest code I can think of to reproduce (this is based
  on blobstore example; to make it work setup that example, then add a
  web.xml entry for this servlet and then change the upload servlet
  mapping to point to it):

  import java.io.IOException;
  import java.util.Map;
  import java.util.logging.Logger;

  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;

  import com.google.appengine.api.blobstore.BlobKey;
  import com.google.appengine.api.blobstore.BlobstoreService;
  import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
  import com.google.appengine.api.images.Image;
  import com.google.appengine.api.images.ImagesServiceFactory;

  public class ImageBlobBug extends HttpServlet {
         private static final long serialVersionUID = 1L;
         private BlobstoreService blobstoreService =
  BlobstoreServiceFactory.getBlobstoreService();
         private static final Logger log =
  Logger.getLogger(ImageBlobBug.class.getName());

         public void doPost(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException {
                 MapString, BlobKey blobs =
  blobstoreService.getUploadedBlobs(req);
                 BlobKey blobKey = blobs.get(myFile);
                 Image image =
  ImagesServiceFactory.makeImageFromBlob(blobKey);

                 res.sendRedirect(#+ (image == null ? Image could not be
  made from
  blob:Image successfully retrieved with height:  +
  image.getHeight()));
         }

  }

  Here is the stacktrace:

  java.lang.UnsupportedOperationException: No image data is available.
         at
  com.google.appengine.api.images.ImageImpl.updateDimensions(ImageImpl.java:
  130)
         at
  com.google.appengine.api.images.ImageImpl.getHeight(ImageImpl.java:
  63)
         at ImageBlobBug.doPost(ImageBlobBug.java:27)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
         at
  org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
  487)
         at
  org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
  362)
         at
  org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
  216)
         at
  org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
  181)
         at
  org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
  712)
         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
  405)
         at

  com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
  70)
         at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268)
         at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
         at

  com.google.appengine.api.blobstore.dev.UploadBlobServlet.handleUpload(UploadBlobServlet.java:
  368)
         at com.google.appengine.api.blobstore.dev.UploadBlobServlet.access
  $000(UploadBlobServlet.java:72)
         at com.google.appengine.api.blobstore.dev.UploadBlobServlet
  $1.run(UploadBlobServlet.java:100)
         at java.security.AccessController.doPrivileged(Native Method)
         at

  com.google.appengine.api.blobstore.dev.UploadBlobServlet.doPost(UploadBlobServlet.java:
  98)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
         at
  org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
  487)
         at org.mortbay.jetty.servlet.ServletHandler
  $CachedChain.doFilter(ServletHandler.java:1093)
         at

  com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
  51)
         at org.mortbay.jetty.servlet.ServletHandler
  $CachedChain.doFilter(ServletHandler.java:1084)
         at

  com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
  43)
         at org.mortbay.jetty.servlet.ServletHandler
  

[google-appengine] Serialized List not saving on insert, only update?

2010-03-18 Thread Blake
I thought this was working before, so I'm not sure if this is a PEPCAK
problem...

I'm inserting an entity with a serialized collection of other
serialized objects.  This stores correctly on updates, but when I set
the serialized collection on insert, it forgets the collection.  Any
ideas?  Would you expect insert and update to handle the serialized
collection of objects differently?

Thanks!

Here's how I'm doing it:

public class Foo{
...

@Persistent(serialized=true)
private SetSomeSerializedObject myObj;

...
}


Foo f = new Foo();
f.setSomeSerializedObject(new SomeSerializedObject(foo bar));
Transaction tx = pm.currentTransaction();
try
{
tx.begin();
pm.makePersistent(f);
tx.commit();
} finally {
if(tx.isActive())
{
tx.rollback();
}
}

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



  1   2   >