[appengine-java] Re: HashMap within an Embedded Class

2011-07-22 Thread Max
This is a known bug and seems still not fixed yet. You will need to manually 
serialize in you code

Also, if you just started coding on GAE, check out Objectify / Twig / Siena 
etc. These are all very good frameworks. 


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/B51GO7gHVksJ.
To post to this group, send email to google-appengine-java@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: Отг: Re: [appengine-java] Datastore Replication Options - can not be changed once app id is created

2011-07-22 Thread Marcel Overdijk
I also don't understand why we cannot switch.
A lot of people are requesting this (including myself).

On Jul 22, 7:14 am, Miroslav Genov mge...@gmail.com wrote:
 I have the opposite situation :). My app is using master/slave and I want to
 migrate it to use the multi-master replication.

 Is there are any idea the re-using of application id's to be enabled at some
 point of time or maybe someway of migration the datastore from master/slave
 to multi-master and vise-versa?

-- 
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-java@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] How to run quatz(kind) of scheduler service on appengine?

2011-07-22 Thread Max
You can have deploy your quatrz scheduler in EC2 and the only job is pinging 
your corresponding appengine URL according to the schedule. 

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/HzvkfqOeTWgJ.
To post to this group, send email to google-appengine-java@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] Accessing same datastore from within 2 (local) JVM's

2011-07-22 Thread Marcel Overdijk
I'm starting my application local and I will perform some functional
tests within a JUnit tests.
From within this same JUnit test I also want to check if values are
stored in datastore.

Can I access the same datastore the running webapp is using, but then
from within JUnit test running in a different JVM?

-- 
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-java@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: New Pricing Model

2011-07-22 Thread Ricardo Boscollo
Can anybody help me to know how much i will spend with GAE?

-- 
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-java@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] How to run quatz(kind) of scheduler service on appengine?

2011-07-22 Thread Jayr Motta
http://code.google.com/appengine/docs/java/config/cron.html
http://code.google.com/appengine/docs/java/config/cron.html
http://code.google.com/appengine/docs/python/config/cron.html

http://code.google.com/appengine/docs/python/config/cron.htmlIs that what
you want?

*Jayr Motta*
Software Developer
*
*
I'm  on 
BlackBeltFactory.comhttp://www.blackbeltfactory.com/ui#!User/jmotta/ref=jmotta
!



On Fri, Jul 22, 2011 at 5:22 AM, Max thebb...@gmail.com wrote:

 You can have deploy your quatrz scheduler in EC2 and the only job is
 pinging your corresponding appengine URL according to the schedule.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/HzvkfqOeTWgJ.

 To post to this group, send email to
 google-appengine-java@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-java@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] How to run quatz(kind) of scheduler service on appengine?

2011-07-22 Thread Ikai Lan (Google)
Will Quartz run in a backend instance?

http://code.google.com/appengine/docs/java/backends/overview.html

I don't remember offhand if Quartz uses threads. I'm pretty sure it does
which will mean it *won't* work, but I figured I'd throw it out there.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 4:22 AM, Max thebb...@gmail.com wrote:

 You can have deploy your quatrz scheduler in EC2 and the only job is
 pinging your corresponding appengine URL according to the schedule.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/HzvkfqOeTWgJ.

 To post to this group, send email to
 google-appengine-java@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-java@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] How to run quatz(kind) of scheduler service on appengine?

2011-07-22 Thread Ikai Lan (Google)
The OP mentioned that cron was too limiting for his particular needs.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 10:19 AM, Jayr Motta jayrmo...@gmail.com wrote:

 http://code.google.com/appengine/docs/java/config/cron.html
 http://code.google.com/appengine/docs/java/config/cron.html
 http://code.google.com/appengine/docs/python/config/cron.html

 http://code.google.com/appengine/docs/python/config/cron.htmlIs that
 what you want?

 *Jayr Motta*
 Software Developer
 *
 *
 I'm  on 
 BlackBeltFactory.comhttp://www.blackbeltfactory.com/ui#!User/jmotta/ref=jmotta
 !



 On Fri, Jul 22, 2011 at 5:22 AM, Max thebb...@gmail.com wrote:

 You can have deploy your quatrz scheduler in EC2 and the only job is
 pinging your corresponding appengine URL according to the schedule.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/HzvkfqOeTWgJ.

 To post to this group, send email to
 google-appengine-java@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-java@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-java@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] Scheduler features and load time limitations

2011-07-22 Thread Ikai Lan (Google)
Have you taken a look at the scheduler that has shipped? It should be under
Application Settings. If there's anything there that you think might be
needed, please let us know.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Mon, Jul 18, 2011 at 5:40 PM, Marcel Overdijk
marceloverd...@gmail.comwrote:

 Everybody knows about load time issues when using frameworks that take
 a long time to startup. Take for example Grails.

 I wonder if we will still encounter these issues after the pricing
 changes.

 1) Will the limit of 30s to start an application be lifted?

 2) How smart will the scheduler be to startup new instances? Will it
 for example take into account the avg load time of previously started
 instances?


 --
 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-java@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-java@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: HashMap within an Embedded Class

2011-07-22 Thread datanucleus
On Jul 22, 7:29 am, Max thebb...@gmail.com wrote:
 This is a known bug and seems still not fixed yet. You will need
 to manually serialize in you code

It may be a known bug to you, but perhaps if someone actually register
it in Google's issue log then they would know about it?
http://code.google.com/p/datanucleus-appengine/issues/list
If it exists there, then refer to it so the user knows which one to
star

-- 
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-java@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] JSF session-scoped beans replication issue

2011-07-22 Thread Zacheusz Siedlecki
There are some issues with JSF session-scoped beans. In some cases
session bean changes are not replicated to another server instances.
For details and workarounds look at this post
http://java.zacheusz.eu/google-app-engine-http-session-vs-jsf-en/394/

-- 
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-java@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] low-level api: many to may relatioship

2011-07-22 Thread Alexander Herrera
Am wondering how in the low level api can i represent a man to many 
relationship , this is a good approximation? 

 Entity entityA = new Entity(TypeA);
entityA.setProperty(name, nameUserA);

Entity entityB = new Entity(TypeA);
entityA.setProperty(name, nameUserB);

ds.put(entityA);
ds.put(entityB);

Entity entityChild = new Entity(entityChild,entityAKey);
entityChild.setProperty(name,child);
 
 ds.put(entityChild);

Entity entityChild = new Entity(entityChild,entityBKey);
entityChild.setProperty(name,child);
 
 ds.put(entityChild);

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/PWTINDhJTh0J.
To post to this group, send email to google-appengine-java@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: [google-appengine] Re: CMS for GAE

2011-07-22 Thread Michel Schroeder
Hello,

Thanks for your contributions for a GAE-Java CMS.

I had a look at the code of claymus. It seems that you use the
combination of gae and gwt, this is a very interesting point.

But on the client side, some architectural questions come to my
mind...

I don't understand your separation of code responsability?

Up to now, I don't see something like MVC or MVP or UI Builder ... It
seems that your write the html output directly from java (and that in
the same file that the DAO definition if I am not wrong)...

Could you explain a bit the advantages of your strategy?

A lot of people could think that a bad separation of responsibilities
will lead to a lot of difficulties in code maintenance and
evolution...

But it must be subtilities in your approach that I don't catch up to
now...?

Thanks in advance for your explanations,

Michel

PS:
I look for example in:
package com.claymus.site.module.page;
(...)
@PersistenceCapable(detachable = true)
public class Page extends PersistentCapable {
(...)
public void serve(ListListContent contents, ListListBlock
blocks, Theme theme) throws ServletException, IOException {

PrintWriter out = ClaymusMain.getResponse().getWriter();

// DOC TYPE
out.print(getDocType());

out.print(html);
(...)

On Jul 18, 5:50 pm, Prashant antsh...@gmail.com wrote:
 Yes, you are right. Picking an opensource project and making it work for you
 is very easy, but making something from scratch has its own fun :) . I
 stared building Claymus because I felt need of Java based CMS which is made
 for GAE, considering what GAE is, how it is different from other hosting
 services, services/apis GAE is providing to developers, etc. etc. etc.

 Claymus is designed to give you maximum flexibility and support to build
 your app on top of Claymus. Along with all the GAE features you can take
 advantage of Servlet Level caching to minimize delay and cpu usage, plugable
 modules and themes, etc ... (complete list will be put on updated Claymus
 Website :) ).

 Regards,
 Prashant

 On Mon, Jul 18, 2011 at 7:28 PM, Niklas Rosencrantz nikla...@gmail.comwrote:







  Having something like a CMS eg like wordpress, joomla or mediawiki
  compatible then we won't have to start every project from scratch and
  project would become more configuration than programming which naturally is
  an advantage since programming takes more time than just configuring a new
  CMS deployment. I used web2py for a project when a friend wanted a quick
  website started and naturally to change pages we'd prefer a web-based editor
  instead of changing templates and redeploying. I'm glad to see some CMS are
  coming to app engine. Some frameworks offer features that are getting close
  to that of a CMS, for instance GAE Framework (www.gaeframework.com) comes
  with a blog engine and when you have a blog you are getting close the the
  functions of a CMS. Do you agree?

  On Sun, Jul 17, 2011 at 3:48 AM, Maneesh Arora mane...@gmail.com wrote:

  What's the unique advantage of having a CMS in GAE?

  thanks,

  Maneesh
 http://mightytext.net

  On Sat, Jul 16, 2011 at 11:25 AM, Prashant antsh...@gmail.com wrote:

  Hi All,

  Claymus is close to its (first) preview release. Only few bug fixes and
  minor modifications are remaining. Check out the live demo at
 http://demo.claymus.com.

  --
  Prashant
  claymus.googlecode.com

  On Wed, May 25, 2011 at 10:29 AM, Jeff Schnitzer 
  j...@infohazard.orgwrote:

  On Mon, May 23, 2011 at 11:17 AM, Brandon Wirtz drak...@digerat.com
  wrote:
   That's more deployed, not spoken.  Every Blogger and IT guy on the
  planet
   can hack together a PHP Plugin for their CMS.  Very Few can do that in
   Python or Java.

  ...and even fewer can do it in Ruby or C#.

  Truly, PHP is in a class by itself.

  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.

   --
  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-java@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 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
 

[appengine-java] [OAuth + Provisioning ] Autentication - Python X Java

2011-07-22 Thread Felipe Teixeira
Hi,
I need help to use Provisioning API with OAuth authentication, the following
problem occurs, how to do domain validation in java api ? In Python it is
possible to know the following code.

  service = gdata.apps.service.AppsService(domain=consumer_key)
*-*service.SetOAuthInputParameters(sig_method, consumer_key,
consumer_secret=consumer_secret, two_legged_oauth=True)

res = service.RetrieveAllUsers()
for entry in res.entry:
print 'email;' + string.lower(entry.login.user_name) + '@' +
consumer_key

the emphasis on the coding can be seen that there is validation for key
parametersusing OAuth authentication as CONSUMER_KEY and CONSUMER_SECRET,
but inJava this is not possible ..
As shown below:

AppsForYourDomainClient client = new AppsForYourDomainClient (adminEmail,
adminPassword, domain); //JavaCode Api - AppsForYourDomain

how can I get something close to in java:

AppsForYourDomainClient client = null; //
client.SetOAuthInputParameters(sig_method, consumer_key,
consumer_secret); //this
method does not exist today in the api java



Thanks...

-- 
*Felipe Teixeira*
*Desenvolvedor Java
*
IPNET Soluções
Tel.: 55 21 3553 2717 / 21-7805-6867
Rua Visconde de Inhaúma, 134, Sala 615
Centro - RJ - CEP: 20091-007
*http://www.ipnetsolucoes.com.br** *

-- 
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-java@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] low-level api: many to may relatioship

2011-07-22 Thread Ikai Lan (Google)
A few comments:

1. That's more of a 1:1 relationship
2. Try to avoid using the term child. The reason is that when you start
working with entity groups, you will confuse yourself with terminology. If
you don't understand entity groups yet, take a look at these docs:

http://code.google.com/appengine/docs/python/datastore/entities.html#Entity_Groups_and_Ancestor_Paths

Basically, entity groups represent a hierarchical set of related models. You
should learn about them because they are the unit of atomicity in high
replication datastore (the default).

3. To represent a many-to-many relationship, you would probably want to have
a List property on each entity. A List can contain several keys. The thing
to be aware of here is that for bidirectional many-to-many relationships,
you have to manually make sure the key of the related object is in the
*other* object's list. Example:

Entity ikai = new Entity(User, ikai);
ikai.setProperty(friends, Arrays.asList(String[] { proppy, wesley,
nick});

Entity proppy = new Entity(User, proppy);
proppy.setProperty(friends, Arrays.asList(new String[] { ikai,
nick }));

If proppy (Johan) and I ever have a falling out, you have to remember to
remove johan from Ikai's list of friends and vice versa. Normalization
zealots are shaking their heads right now because is possible for many:many
relationships like this to get out of sync.


Some insights into working with non-relational persistence:

This isn't the only way to represent child objects. You want to optimize for
reads when possible because *most* applications are read heavy. A rule of
thumb is that the number of reads for a given entity are an order of
magnitude greater than the number of writes. With that in mind, let's talk
about an example of a real world data model I've had to recently write.

My problem: I needed to represent users and teams. A user has a role on a
team. Example:

Ikai - on App Engine team, roles: advocate, support, developer
proppy - on App Engine team, roles: advocate, support, on Apps team roles:
developer, tech writer

In an RDBMS, I'd likely represent this with join tables with an additional
field for the role. This would likely involve several join tables.

I examined my requirements, and I came to the conclusion that I'd need two
views:

- What roles does a person have? (What teams and roles does Ikai have?)
- Given a team, what other roles do people on that team have? (Give the App
Engine team, what other teams do people on this team have?)

How did I model this?

Two entity kinds: User entity and Team entity.

On the User entity, I stored a JSON serialized property that looks roughly
like this:

{ teams : {
   App Engine : [ advocate, support, developer ],
}

When I write a User entity, I also write a Team entity. The Team has a JSON
serialized property that stores all the roles, team members, and a snippet
of information about Team members.

There are tradeoffs in this design, but it suits my purposes:

- It is possible things get out of sync. Since I don't put everything in the
same entity group, I can't do a transaction on a Team and User entity when I
make a change and need to write two entities. I accepted this, but there are
various ways I can mitigate the damage: one way is to use a task queue task
that retries until it executes correctly. Since the action to join or leave
a team can be idempotent, this is something I can run over and over.

- When I read a User entity, I can do this with a single key, so I don't
need to do a query and read related objects. This makes my reads very fast.
The same is true of Team entities. Now, granted, this might be a bit of an
overoptimization, since the number of teams, roles and users might be, worst
case scenario, in the tens of thousands and I can probably just read the
entire datastore and do operations in-memory.

It's possible I'll run into problems later with the way I've designed this,
but rather than try to get everything perfect, I opted with a good enough
design without obvious vlaws to get the project off the ground. Technical
debt sucks, but sometimes I see developers too much time overthinking
problems trying to get this perfect. I'm a cynic, but I've accepted that
I'll always look back on software projects and go, Man, I designed that
poorly anyway, so I might as well mess them up quickly, have a working
product, figure out where I've messed up, and fix the problems.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Thu, Jul 21, 2011 at 3:51 PM, Alexander Herrera 
edwinalexande...@gmail.com wrote:

 Am wondering how in the low level api can i represent a man to many
 relationship , this is a good approximation?

  Entity entityA = new Entity(TypeA);
 entityA.setProperty(name, nameUserA);

 Entity entityB = new Entity(TypeA);
 entityA.setProperty(name, nameUserB);

 

[appengine-java] Re: New Pricing Model

2011-07-22 Thread John Patterson
No body can answer that without knowing exactly how your app uses billed 
resources.

Latest details can be found here:

https://groups.google.com/d/topic/google-appengine/Hluog1_a3n4/discussion

BTW, 10 queries is too much - your goal should be zero or one query per page 
by using denormalisation, memcache and in-memory caching. 
 10 consecutive queries would result in a very slow website and if your 
requests don't complete in roughly 600ms or less then your app will not be 
auto-scaled which effectively kills it.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/9hGSoMRIKkMJ.
To post to this group, send email to google-appengine-java@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] How to run quatz(kind) of scheduler service on appengine?

2011-07-22 Thread Kesava Neeli
Yes.. I looked at Background instance. It allows to have long tasks but it 
doesn't allow to spawn threads. Quartz fires off events in threads. So I 
guess quartz is not an option on app-engine. We can use appengine cron jobs 
to some extent but if you need to fire an event at exact minute, it would be 
tough. 

It's tough to maintain 2 cloud providers for single product. Not sure how 
efficient it is to call appengine urls from EC2. May be move to EC2 
completely may be better solution. 

We need object datastore for our product. Has anyone has experience with EC2 
object datastore SimpleDB? Does it have same features and JPA/JDO interfaces 
like appengine. GAE datastore is pretty good but it doesn't give a VM 
ownership to the developer. The Backends in appengine still don't give any 
control of the server/instance to developer.  


-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/nlrteFBD_2sJ.
To post to this group, send email to google-appengine-java@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: [google-appengine] Re: CMS for GAE

2011-07-22 Thread Prashant
Hello Michel,

Thanks for checking out the code and the query :)

On Thu, Jul 21, 2011 at 9:49 PM, Michel Schroeder michels...@gmail.comwrote:

 Hello,

 Thanks for your contributions for a GAE-Java CMS.

 I had a look at the code of claymus. It seems that you use the
 combination of gae and gwt, this is a very interesting point.

 But on the client side, some architectural questions come to my
 mind...

 I don't understand your separation of code responsability?


Code separation is done considering mainly, modularity and pluggability of
modules. All the classes related to a module are placed in a package (and
sub-packages) meant for that module. Modules are designed such that it won't
affect the functioning of App or other modules if a new module is added or
an old one (which is not a core module) is removed from the App.

Up to now, I don't see something like MVC or MVP or UI Builder ... It
 seems that your write the html output directly from java (and that in
 the same file that the DAO definition if I am not wrong)...


Yes, I didn't try to follow MVC or MVP strictly because I don't think that
is a strict requirement. I din't use UI Builder because none of the GWT
modules have very big and/or complex UI. If you are worried about supporting
mobile devices, that can supported just by creating a mobile theme (which
will include layout and look  feel) and few tweeks in Content and Block
types.

I think you are thinking of following methods as Data-Access methods. They
are not Data-Access methods, they are just converting Data Object to Data
Transfer Object. PageData class, in the same package, is the DAO for page
module.

public PageDTO getDTO() {
PageDTO pageDTO = new PageDTO();
 pageDTO.setUri(getUri());
pageDTO.setTitle(getTitle());
pageDTO.setLayout(getLayout().getClass().getSimpleName());
 return pageDTO;
}

public void update(PageDTO pageDTO) {
 setTitle(pageDTO.getTitle());
setLayout(pageDTO.getLayout());
}

And, I don't see any thing wrong in outputting html from a java servlet.

Could you explain a bit the advantages of your strategy?


I am not following popular design architectures, like MVP and MVC, that may
have some disadvantages that I am not aware about now.

I am trying to support maximum modularity and plaggability like any other
CMS. e.g. if you have to add a new Content or Block type, you just need to
write 2 small classes, one for backend and one for front-end (see
com/claymus/site/module/block/types/RichText.java and
com/claymus/site/module/block/types/gwt/RichText.java) and drop them in to
Content/Block Types package. Same for a theme.


 A lot of people could think that a bad separation of responsibilities
 will lead to a lot of difficulties in code maintenance and
 evolution...

 But it must be subtilities in your approach that I don't catch up to
 now...?

 Thanks in advance for your explanations,

 Michel

 PS:
 I look for example in:
 package com.claymus.site.module.page;
 (...)
 @PersistenceCapable(detachable = true)
 public class Page extends PersistentCapable {
 (...)
public void serve(ListListContent contents, ListListBlock
 blocks, Theme theme) throws ServletException, IOException {

PrintWriter out = ClaymusMain.getResponse().getWriter();

// DOC TYPE
out.print(getDocType());

out.print(html);
 (...)

 On Jul 18, 5:50 pm, Prashant antsh...@gmail.com wrote:
  Yes, you are right. Picking an opensource project and making it work for
 you
  is very easy, but making something from scratch has its own fun :) . I
  stared building Claymus because I felt need of Java based CMS which is
 made
  for GAE, considering what GAE is, how it is different from other hosting
  services, services/apis GAE is providing to developers, etc. etc. etc.
 
  Claymus is designed to give you maximum flexibility and support to build
  your app on top of Claymus. Along with all the GAE features you can take
  advantage of Servlet Level caching to minimize delay and cpu usage,
 plugable
  modules and themes, etc ... (complete list will be put on updated Claymus
  Website :) ).
 
  Regards,
  Prashant
 
  On Mon, Jul 18, 2011 at 7:28 PM, Niklas Rosencrantz nikla...@gmail.com
 wrote:
 
 
 
 
 
 
 
   Having something like a CMS eg like wordpress, joomla or mediawiki
   compatible then we won't have to start every project from scratch and
   project would become more configuration than programming which
 naturally is
   an advantage since programming takes more time than just configuring a
 new
   CMS deployment. I used web2py for a project when a friend wanted a
 quick
   website started and naturally to change pages we'd prefer a web-based
 editor
   instead of changing templates and redeploying. I'm glad to see some CMS
 are
   coming to app engine. Some frameworks offer features that are getting
 close
   to that of a CMS, for instance GAE Framework (www.gaeframework.com)
 comes
   with a blog engine and when you have a blog you 

Re: [appengine-java] How to run quatz(kind) of scheduler service on appengine?

2011-07-22 Thread Ikai Lan (Google)
One more option: you can set ETAs in task queue tasks. That is, when some
action occurs, you can say, Run this at 6:30am, and the job will run at
roughly that time:

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.Builder.html#withEtaMillis(long)

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 2:09 PM, Kesava Neeli nke...@gmail.com wrote:

 Yes.. I looked at Background instance. It allows to have long tasks but it
 doesn't allow to spawn threads. Quartz fires off events in threads. So I
 guess quartz is not an option on app-engine. We can use appengine cron jobs
 to some extent but if you need to fire an event at exact minute, it would be
 tough.

 It's tough to maintain 2 cloud providers for single product. Not sure how
 efficient it is to call appengine urls from EC2. May be move to EC2
 completely may be better solution.

 We need object datastore for our product. Has anyone has experience with
 EC2 object datastore SimpleDB? Does it have same features and JPA/JDO
 interfaces like appengine. GAE datastore is pretty good but it doesn't give
 a VM ownership to the developer. The Backends in appengine still don't
 give any control of the server/instance to developer.


  --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/nlrteFBD_2sJ.

 To post to this group, send email to
 google-appengine-java@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-java@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: Scheduler features and load time limitations

2011-07-22 Thread Marcel Overdijk
Hi Ikai,

I cannot find answer to:

1) Will the limit of 30s to start an application be lifted?

The other question seems to be answered since the changes in 1.5.2
(http://code.google.com/appengine/docs/adminconsole/
performancesettings.html#Setting_the_Minimum_Pending_Latency)


On Jul 22, 4:24 pm, Ikai Lan (Google) ika...@google.com wrote:
 Have you taken a look at the scheduler that has shipped? It should be under
 Application Settings. If there's anything there that you think might be
 needed, please let us know.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog:http://googleappengine.blogspot.com
 Twitter:http://twitter.com/app_engine
 Reddit:http://www.reddit.com/r/appengine

 On Mon, Jul 18, 2011 at 5:40 PM, Marcel Overdijk
 marceloverd...@gmail.comwrote:







  Everybody knows about load time issues when using frameworks that take
  a long time to startup. Take for example Grails.

  I wonder if we will still encounter these issues after the pricing
  changes.

  1) Will the limit of 30s to start an application be lifted?

  2) How smart will the scheduler be to startup new instances? Will it
  for example take into account the avg load time of previously started
  instances?

  --
  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-java@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-java@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: Scheduler features and load time limitations

2011-07-22 Thread Ikai Lan (Google)
I haven't heard any plans to lift the 30s load time to start an application.
30s+ loading time seems pretty bad to me ...

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 2:37 PM, Marcel Overdijk
marceloverd...@gmail.comwrote:

 Hi Ikai,

 I cannot find answer to:

 1) Will the limit of 30s to start an application be lifted?

 The other question seems to be answered since the changes in 1.5.2
 (http://code.google.com/appengine/docs/adminconsole/
 performancesettings.html#Setting_the_Minimum_Pending_Latency)


 On Jul 22, 4:24 pm, Ikai Lan (Google) ika...@google.com wrote:
  Have you taken a look at the scheduler that has shipped? It should be
 under
  Application Settings. If there's anything there that you think might be
  needed, please let us know.
 
  Ikai Lan
  Developer Programs Engineer, Google App Engine
  Blog:http://googleappengine.blogspot.com
  Twitter:http://twitter.com/app_engine
  Reddit:http://www.reddit.com/r/appengine
 
  On Mon, Jul 18, 2011 at 5:40 PM, Marcel Overdijk
  marceloverd...@gmail.comwrote:
 
 
 
 
 
 
 
   Everybody knows about load time issues when using frameworks that take
   a long time to startup. Take for example Grails.
 
   I wonder if we will still encounter these issues after the pricing
   changes.
 
   1) Will the limit of 30s to start an application be lifted?
 
   2) How smart will the scheduler be to startup new instances? Will it
   for example take into account the avg load time of previously started
   instances?
 
   --
   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-java@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-java@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-java@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: Scheduler features and load time limitations

2011-07-22 Thread Marcel Overdijk
Yes might be, but frameworks like Grails need a longer startup time.

It does not matter for any application server nor cloud provider
except GAE.
That's why I'm asking about future working of scheduler.

Further, if I keep up enough instances I would not bother the startup
time at all...


I'm not saying 30s limit is bad or good, I'm just looking if using
Grails on GAE will be feasible or not.


On Jul 22, 9:06 pm, Ikai Lan (Google) ika...@google.com wrote:
 I haven't heard any plans to lift the 30s load time to start an application.
 30s+ loading time seems pretty bad to me ...

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog:http://googleappengine.blogspot.com
 Twitter:http://twitter.com/app_engine
 Reddit:http://www.reddit.com/r/appengine

 On Fri, Jul 22, 2011 at 2:37 PM, Marcel Overdijk
 marceloverd...@gmail.comwrote:







  Hi Ikai,

  I cannot find answer to:

  1) Will the limit of 30s to start an application be lifted?

  The other question seems to be answered since the changes in 1.5.2
  (http://code.google.com/appengine/docs/adminconsole/
  performancesettings.html#Setting_the_Minimum_Pending_Latency)

  On Jul 22, 4:24 pm, Ikai Lan (Google) ika...@google.com wrote:
   Have you taken a look at the scheduler that has shipped? It should be
  under
   Application Settings. If there's anything there that you think might be
   needed, please let us know.

   Ikai Lan
   Developer Programs Engineer, Google App Engine
   Blog:http://googleappengine.blogspot.com
   Twitter:http://twitter.com/app_engine
   Reddit:http://www.reddit.com/r/appengine

   On Mon, Jul 18, 2011 at 5:40 PM, Marcel Overdijk
   marceloverd...@gmail.comwrote:

Everybody knows about load time issues when using frameworks that take
a long time to startup. Take for example Grails.

I wonder if we will still encounter these issues after the pricing
changes.

1) Will the limit of 30s to start an application be lifted?

2) How smart will the scheduler be to startup new instances? Will it
for example take into account the avg load time of previously started
instances?

--
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-java@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-java@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-java@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: Scheduler features and load time limitations

2011-07-22 Thread Ikai Lan (Google)
What's the startup time on Grails now?

I can ask about the 30s startup time, but I'm sure there are some pretty
serious consequences to an app with a 40s-50s startup time. I'm a bit
surprised, honestly, because even a JRuby on Rails app shouldn't take more
than 30 seconds to startup.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 3:12 PM, Marcel Overdijk
marceloverd...@gmail.comwrote:

 Yes might be, but frameworks like Grails need a longer startup time.

 It does not matter for any application server nor cloud provider
 except GAE.
 That's why I'm asking about future working of scheduler.

 Further, if I keep up enough instances I would not bother the startup
 time at all...


 I'm not saying 30s limit is bad or good, I'm just looking if using
 Grails on GAE will be feasible or not.


 On Jul 22, 9:06 pm, Ikai Lan (Google) ika...@google.com wrote:
  I haven't heard any plans to lift the 30s load time to start an
 application.
  30s+ loading time seems pretty bad to me ...
 
  Ikai Lan
  Developer Programs Engineer, Google App Engine
  Blog:http://googleappengine.blogspot.com
  Twitter:http://twitter.com/app_engine
  Reddit:http://www.reddit.com/r/appengine
 
  On Fri, Jul 22, 2011 at 2:37 PM, Marcel Overdijk
  marceloverd...@gmail.comwrote:
 
 
 
 
 
 
 
   Hi Ikai,
 
   I cannot find answer to:
 
   1) Will the limit of 30s to start an application be lifted?
 
   The other question seems to be answered since the changes in 1.5.2
   (http://code.google.com/appengine/docs/adminconsole/
   performancesettings.html#Setting_the_Minimum_Pending_Latency)
 
   On Jul 22, 4:24 pm, Ikai Lan (Google) ika...@google.com wrote:
Have you taken a look at the scheduler that has shipped? It should be
   under
Application Settings. If there's anything there that you think
 might be
needed, please let us know.
 
Ikai Lan
Developer Programs Engineer, Google App Engine
Blog:http://googleappengine.blogspot.com
Twitter:http://twitter.com/app_engine
Reddit:http://www.reddit.com/r/appengine
 
On Mon, Jul 18, 2011 at 5:40 PM, Marcel Overdijk
marceloverd...@gmail.comwrote:
 
 Everybody knows about load time issues when using frameworks that
 take
 a long time to startup. Take for example Grails.
 
 I wonder if we will still encounter these issues after the pricing
 changes.
 
 1) Will the limit of 30s to start an application be lifted?
 
 2) How smart will the scheduler be to startup new instances? Will
 it
 for example take into account the avg load time of previously
 started
 instances?
 
 --
 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-java@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-java@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-java@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-java@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: Scheduler features and load time limitations

2011-07-22 Thread Marcel Overdijk
Honestly I don't know what the current startup time for Grails on GAE
would be now. Also depending on what plugins installed etc.

Current version does not even work on GAE. I was thinking about trying
it out again but remembered the 30s limit I hit some time ago.
So I asked this question on the forum to see if it makes any sense
investing the time, or just continue with my Spring MVC app which runs
fine.

On Jul 22, 9:20 pm, Ikai Lan (Google) ika...@google.com wrote:
 What's the startup time on Grails now?

 I can ask about the 30s startup time, but I'm sure there are some pretty
 serious consequences to an app with a 40s-50s startup time. I'm a bit
 surprised, honestly, because even a JRuby on Rails app shouldn't take more
 than 30 seconds to startup.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog:http://googleappengine.blogspot.com
 Twitter:http://twitter.com/app_engine
 Reddit:http://www.reddit.com/r/appengine

 On Fri, Jul 22, 2011 at 3:12 PM, Marcel Overdijk
 marceloverd...@gmail.comwrote:







  Yes might be, but frameworks like Grails need a longer startup time.

  It does not matter for any application server nor cloud provider
  except GAE.
  That's why I'm asking about future working of scheduler.

  Further, if I keep up enough instances I would not bother the startup
  time at all...

  I'm not saying 30s limit is bad or good, I'm just looking if using
  Grails on GAE will be feasible or not.

  On Jul 22, 9:06 pm, Ikai Lan (Google) ika...@google.com wrote:
   I haven't heard any plans to lift the 30s load time to start an
  application.
   30s+ loading time seems pretty bad to me ...

   Ikai Lan
   Developer Programs Engineer, Google App Engine
   Blog:http://googleappengine.blogspot.com
   Twitter:http://twitter.com/app_engine
   Reddit:http://www.reddit.com/r/appengine

   On Fri, Jul 22, 2011 at 2:37 PM, Marcel Overdijk
   marceloverd...@gmail.comwrote:

Hi Ikai,

I cannot find answer to:

1) Will the limit of 30s to start an application be lifted?

The other question seems to be answered since the changes in 1.5.2
(http://code.google.com/appengine/docs/adminconsole/
performancesettings.html#Setting_the_Minimum_Pending_Latency)

On Jul 22, 4:24 pm, Ikai Lan (Google) ika...@google.com wrote:
 Have you taken a look at the scheduler that has shipped? It should be
under
 Application Settings. If there's anything there that you think
  might be
 needed, please let us know.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog:http://googleappengine.blogspot.com
 Twitter:http://twitter.com/app_engine
 Reddit:http://www.reddit.com/r/appengine

 On Mon, Jul 18, 2011 at 5:40 PM, Marcel Overdijk
 marceloverd...@gmail.comwrote:

  Everybody knows about load time issues when using frameworks that
  take
  a long time to startup. Take for example Grails.

  I wonder if we will still encounter these issues after the pricing
  changes.

  1) Will the limit of 30s to start an application be lifted?

  2) How smart will the scheduler be to startup new instances? Will
  it
  for example take into account the avg load time of previously
  started
  instances?

  --
  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-java@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-java@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-java@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-java@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] Correlative number

2011-07-22 Thread katy
Im trying to get a kind of auto increment number for an entity. I all
ready create a counter class to take a track of the quantity of
entities so i can use the counter to get a correlative number , but
its not working the right way, so  wonder if anybody know how to
implement these and if its posible to use a kind of mutex to block
code.

Thank, you.

-- 
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-java@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: Task Queue rate not high enough

2011-07-22 Thread Maxime Rafalimanana
I noticed a new field since 1.5.2 : Enforced Rate.
Could that parameter help us make sure enough instance are created to 
process our tasks ?

Maxime

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/v4XreKVTGg4J.
To post to this group, send email to google-appengine-java@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: [google-appengine] Bad Performance for Dedupe of 2 million records using mapreduce on Appengine

2011-07-22 Thread Robert Kluin
Hi,
  Is data going to be added while this job is running?  Because that is
important to know.

  I like something like Stephen's second idea. Change your data model to use
those four fields (or a hash of them) as the key name. Map over your
existing data rewriting it. Once your done, there will be no dupes. If you
also change the code that creates data to do the same you can
transactionally check for a record before creating it or simply write the
new record  -- either way will prevent duplicates.  This will scale to
millions of entities with no issue and if there are no other fields your
trying to merge will be cheaper since you do not need to query, just write
the new entity each time.

Robert


On Jul 21, 2011 12:26 PM, Stephen Johnson onepagewo...@gmail.com wrote:

 Hi,
 I'll take a stab at trying to help you out. I think I understand what you
are attempting to do.

 Using mapreduce:
 The way I would do this is to create (if you don't already have one) is a
composite index on your four fields of name, phone, address and fathername.
With that being said, since these are all equality type comparisons a
zig-zag merge join perhaps would also do what you want, but the composite
index should offer higher throughput for such a large operation with
increased up front cost for the index creation.

 So, then for every entity that is mapped, I would do a keys-only query.
This should return at least one key, the current entity. If multiple
entities are returned, then I would delete the additional entities.  Now, I
don't think I'd add it to the datastore mutation pool since there would be a
delay before they are deleted and then they could also get mapped which
could delete the entity that was just de-duped. Now, with that being said,
there seems to exist the possibility that another mapper could be working on
another duplicate entity at the same time and thus could delete the entity
we just used for dedupe purposes. There seem to be a couple of ways out of
this.

 1.) If the keys-only query is performed and only one key is returned and
it isn't the key value of the entity we are deduping then obviously it was a
duplicate itself that was deleted so we ignore this one.

 2.) Or whenever duplicates are found a secondary table is used to store
the  key values of the duplicated entries as a list and using the 4
attributes of name, phone, address and fathername as they key. Then when the
entire dataset has been processed. A second mapreduce would go through the
second table to remove the duplicate entries. For each entry, one of the key
values would be saved and the other key values would be used to delete the
duplicate values.

 Perhaps a better option is using a backend server and cursor:
 I think another way to go might be to use a backend server and a cursor.
Create the composite index described above and then query over this index
using a sort order matching the composite index. Now, since these entries
are in sort order, then all the duplicates should be next to each other so
for each entity, if the values match the entity before it then it is a
duplicate and it can be deleted. This is a much simpler approach but doesn't
have the parallelism as the map reduce, but it is simpler.

 I'm not sure if either of these suggestions helps you out, but hopefully
they might.

 Stephen
 Founder CortexConnect
 www.cortexconnect.com


 On Wed, Jul 20, 2011 at 8:07 PM, charming30 charmin...@gmail.com wrote:


 I have about 2 million records which have about 4 string fields each
 which needs to be checked for duplicates. To be more specific I have
 name, phone, address and fathername as fields and I must check for
 dedupe using all these fields with rest of data. The resulting unique
 records need to be noted into db.

 I have been able to implement mapreduce, iterarate of all records.
 Task rate is set to 100/s and bucket-size to 100. Billing enabled.

 Currently, everything is working, but performance is very very slow. I
 have been able to complete only 1000 records dedupe processing among a
 test dataset of 10,000 records in 6 hours.

 The current design in java is:

 In every map iteration, I compare the current record with the previous
 record
 - Previous record is a single record in db which acts like a global
 variable which I overwrite with another previous record in each map
 iteration
 - Comparison is done using an algorithm and result is written as a new
 entity to db
 - At the end of one Mapreduce job, i programatically create another
 job
 - The previous record variable helps the job to compare with next
 candidate record with rest of the data
 - I am ready to increase any amount of GAE resources to achieve this
 in shortest time.

 My Questions are:

 - Will the accuracy of dedupe (checking for duplicates) affect due to
 parallel jobs/tasks?
 - How can this design be improved?
 - Will this scale to 20 million records
 - Whats the fastest way to read/write variables (not just counters)
 during map iteration which 

Re: [google-appengine] Re: Need help understanding Appengine billing

2011-07-22 Thread Robert Kluin
Every site and app are different. Without any idea of what you're doing
there is no way to compare. What kind of traffic levels do you expect?  Will
each request hit the data store, how many times?  Will there be back end
processing involved?

Robert

On Jul 21, 2011 8:01 AM, Kwame iweg...@gmail.com wrote:

 Thanks Johan,

 I see your billing scheme, and I can sort of understand what the
 different terms mean, but it is difficult to wrap my brain around what
 the costs actually end up being in a real website. It would be helpful
 to get some examples of what other people have actually paid, and what
 kind of usage they have. I just need to make some rough estimates, so
 any examples will do.



 On Jul 21, 7:50 am, Johan Euphrosine pro...@google.com wrote:
  Hi Kwame,
 
  The current billing documentation is here:
http://code.google.com/appengine/docs/billing.html
 
  However later this year we will introduce a new billing scheme which
  is described here:
http://www.google.com/enterprise/cloud/appengine/pricing.html
 
  Community members that are willing to share metrics about their QPS,
  current quota usage and billing are more than welcome to comment to
  this threads.
 
  Hope that helps.
 
 
 
 
 
 
 
 
 
  On Thu, Jul 21, 2011 at 6:55 AM, Kwame iweg...@gmail.com wrote:
   I've been using Appengine for a while, and I haven't yet exhausted my
   free quota. I'm running a business and I would need to set a budget
   for my server costs. I'm not able to understand how the billing units
   like CPU Time, Outgoing Bandwidth, Incoming Bandwidth  Total Stored
   data apply in real world usage of a typical busy website. Can anyone
   give me some sample charges for a typical website and approximately
   how much of these resources can be expected to be consumed, so I can
   compare with my site to get an approximate estimate.
 
   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-appengine@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.
 
  --
  Johan Euphrosine (proppy)
  Developer Programs Engineer
  Google Developer Relations

 --
 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.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-appengine@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] Mailing alerts with appengine

2011-07-22 Thread Robert Kluin
Hey Michal,
   You can get good performance while controling the rate by using a
combination of the two methods.  Split the list into several large chunks,
inserting a processor for each chunk. Then each of those processors can run
over their respective sets of addresses either mailing or inserting mailer
tasks.   Just  be sure to persist your current position in the lists and use
small batch sizes in your mailer tasks. If a task reruns for some reason it
will reduce the number of people who get duplicate mails.

Robert


On Jul 20, 2011 5:45 AM, Michal Makarewicz makarew...@google.com wrote:

 A have a scenario where I have to send customized alerts to large
 amount of users (~30k) in certain, specified beforehand, time. My main
 idea was to make a cron job, which would check every minute if there
 is an alert to send and if so mark this alert as queued and add task
 to task queue (this would be done in transactional manner). Now I have
 two available approaches:
 Approach I:
 Have two different queue commands:
 1. Split email list into smaller chunks (I'm not sure how big, I was
 thinking about ~500) and for each of them put second command on queue.
 (this one will be queued in cron job)
 2. Send mail for each email address in the list.
 My main concern with this approach is lack of control on how many
 emails will be send simultaneously and possibility that my email will
 be classified as spam.

 Approach II:
 Just one task:
 1. Send emails for predetermined number of people (again ~500)
 starting from start_index add to queue the same task with start_index
 + ~500.
 This approach will be slower, so is less preferable.

 I have pretty much unlimited quota so that wouldn't be a problem.
 Which approach is better in this situation?

 --
 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.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-appengine@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] Need help

2011-07-22 Thread Robert Kluin
Just a note, if you want help you need to provide enough information that
someone can help you.

On Jul 18, 2011 7:50 AM, Madhusudhan G Revankar sudhansa...@gmail.com
wrote:

 Hi,

 I am facing problem in run/debug setting in eclipse for python(webapp).

 Not able to run on google app engine.

 Please help me on this

 --
 Thanks  Regards
 Madhusudhan

 --
 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.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-appengine@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] Need help

2011-07-22 Thread Madhusudhan G Revankar
I am experiencing GAE in eclipse.its working fine with java programming.But
its not happening same with Python.

While i run webapp using python.
I am getting *error *as follows :

*Status: 404 Not Found
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0*

Please let me know,where i am missing in configuration.


On Fri, Jul 22, 2011 at 12:20 PM, Robert Kluin robert.kl...@gmail.comwrote:

 Just a note, if you want help you need to provide enough information that
 someone can help you.

 On Jul 18, 2011 7:50 AM, Madhusudhan G Revankar sudhansa...@gmail.com
 wrote:
 
  Hi,
 
  I am facing problem in run/debug setting in eclipse for python(webapp).
 
  Not able to run on google app engine.
 
  Please help me on this
 
  --
  Thanks  Regards
  Madhusudhan
 
  --
  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.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-appengine@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.




-- 
Thanks  Regards
Madhusudhan

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Galoch
@Johan,
The issue is not about Always On instance being busy. Its actually the
other way ... the Always On instance is never busy ... at least that
is what we observed in last 3-4 days. Your explanation may be partly
true since this behavior keeps on changing.

For e.g. I have a snapshot of instances from July 19th and here's the
details (for some reason I can't see a link to attach the snapshot
images here):
Resident Instance 1:   Requests: 49 Age: 1Hr
Resident Instance 2:   Requests: 6  Age: 1Hr
Resident Instance 3:   Requests: 2  Age: 1Hr
Dynamic Instance 1:   Requests: 7  Age: 2min
Dynamic Instance 2:   Requests: 291  Age: 1Hr
Dynamic Instance 3:   Requests: 322  Age: 1Hr

This is under no load with only very light weight cron jobs running.
This gets much much worse during the day under peak load with requests
for dynamic instances reaching 1000+ in matter of minutes and resident
instances have only 1 request served.

As you see above Resident Instance 2 and 3 are hardly hit so I don't
think they are busy at all. On the other hand, Dynamic Instance 2 and
3 get most of the hits.

Dynamic Instance 1 is what is killing us. It keeps getting killed and
reborn within that 5 minute window!!

We use Spring framework and it is really very expensive for us when a
new instance starts up.

Just to give you a background, we had gone through a real roller
coaster ride to make this to work on GAE by breaking the loading of
framework into many different chunks. But still spinning was out of
control. Then we found java threads to our rescue. We worked through
the hack to load JDO to avoid UnsupportedOperationException. We
finally got it to work where most of our requests were served by
Always On instances with occasional spinning of Dynamic instances. It
was quite impressive.

Unfortunately, this was short lived when we hit this new behavior with
GAE. The very last thing we want GAE to do is create a new instance
every few minutes as it could easily reach 30 second deadline during
the day and throw critical error.

I am not sure when the new billing will come into effect but we really
need this thing fixed as it literally brings down our app to a
grinding halt. So I am open to any suggestions you guys think can help
us.

Another thought about new scheduler is to have a configurable
schedule. For e.g. our users are mostly business users who work during
normal business hours. We want to be able to spin more Always On
instances during those hours and bring the number down during nights
and weekends. Dynamic instances won't work for us due to reason
explained above.


Thanks,
galoch






On Jul 21, 5:56 pm, Johan Euphrosine pro...@google.com wrote:
 After speaking with Engs, I think I can explain what is going on:

 Here are the current scheduling rules: ( reads as has priority for
 handling the incoming request)

 1/ Idle Always On instance  Spawning a new Dynamic instance
 2/ Spawning a new Dynamic instance  Busy Always On instance
 3/ Idle Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 I will give you an example to illustrate the behavior you all noticed,
 that is Dynamic instance handling request while Always On is idle.

 (Always On instance started)
 - Incoming request
 - Always On instance handle the request
 - another Incoming request
 (Always On instance busy)
 - A new Dynamic instance is spawned
 (Dynamic instance idle, Always on instance busy)
 - Dynamic instance handle the request
 - another Incoming request
 (Dynamic instance idle, Always on instance idle)
 - Dynamic instance handle the request
 - No request for more than idle-dynamic-instance-timeout
 - Dynamic instance shut down
 - another Incoming request
 (Always On instance idle)
 - Always On instance handle the request

 Hope it makes thing clearer.

 As part of the new billing model you will have a scheduler knob called
 'max-idle-instances' that you can use if extra idling dynamic
 instances are undesired.

 The good news is that we are open to suggestion, if you think this
 behavior is the wrong default, feel free to comment on that thread and
 I will follow up your suggestion to the Engineering team.









 On Wed, Jul 20, 2011 at 12:18 AM, Galoch galoch...@gmail.com wrote:
  Same here. Seems like GAE is totally ignoring Always On instances.
  I also noticed that even with no user hitting our app and a single
  cron job that runs every 5 minutes it is still spinning instances
  every 3 minutes and then killing them in 2 minutes.

  This has been happening since after the upgrade on 14th July. During
  peak load this really gets nasty and brings down the performance.

  This is the feedback I got yesterday from one of our customers since
  it takes time to spin an instance (and yes we use Spring):

  1) I found the GUI to be very laggy

  Can someone from Google please respond?

  --
  You received this message because you are subscribed to the Google Groups 
  Google App Engine 

[google-appengine] SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Cat
Hi,

After today's upgrade my datastore is empty and my testdata is not
available.

I start my SDK Server like this (usually with the MacOS Launcher):
dev_appserver.py --datastore_path=/Users/cat/repositories/appengine/
my.datastore -p8080 .

Strangely --datastore_path is ignored and the dev_appserver uses a new
datastore in the tmp directory:
INFO 2011-07-22 07:11:11,606 rdbms_sqlite.py:58] Connecting to
SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
+TI/-Tmp-/dev_appserver.rdbms'

Can anyone tell me which flags to set to get my old test datastore
back?

I would have to create lots of testdata manually that accumlated over
the last months.

Regards,
Cat

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Francois Masurel
Still very close from Galoch situation, mine is a bit different.

My Dynamic instances dont seem to be recycled but still my Resident 
instances dont seem to be used at all (see attachment).

Why ?

Francois

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/_r0g9FOzxdwJ.
To post to this group, send email to google-appengine@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.

attachment: Instances-VinoCities.jpg

Re: [google-appengine] Re: 1.5.2 is out!

2011-07-22 Thread Everson Alves da Silva
@gops,

You should join google-appengine-go. Go is unbelievable fast on GAE; the 
hello world takes 104ms to start a new instance and much less in the next 
requests. 

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/N1aoM55YawQJ.
To post to this group, send email to google-appengine@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: Verification with SMS is failing

2011-07-22 Thread Veerendra Shukla
I got this resolved. Looks like some security/firewall  issue in one of
office machine.

Now I installed Google App engine plugin in my home desktop eclipse and
deployed the app. It works fine now.


On Thu, Jul 21, 2011 at 10:44 PM, Veerendra Shukla
mobilegeni...@gmail.comwrote:

 I created 3 apps. but when I mention one of the app while eclipse google
 deploy, none of them work...
 and I get the earlier mentioned error..

  
 mobinexttryhttps://appengine.google.com/dashboard?app_id=s~mobinexttrymobinextHigh
  ReplicationNone Deployed
 mobisample 
 https://appengine.google.com/dashboard?app_id=s~mobisamplemobisampleHigh 
 ReplicationNone Deployed
 mobitry https://appengine.google.com/dashboard?app_id=s~mobitry First
 Time Mobile SMS High Replication None Deployed

 On Thu, Jul 21, 2011 at 10:39 PM, Robert Kluin robert.kl...@gmail.comwrote:

 You need to login at appspot.com and register your application.
 On Jul 22, 2011 1:13 AM, Veerendra Shukla mobilegeni...@gmail.com
 wrote:
  I used my colleague's cell phone to get this verified.
 
  Now I am getting following error when I am deploying the app in google
 app.
 
 
  Please visit http://code.google.com/appengine for the latest SDK.
  
  Created staging directory at:
  'C:\Users\vshukla\AppData\Local\Temp\2\appcfg6442456847751386259.tmp'
  Scanning for jsp files.
  Scanning files on local disk.
  Initiating update.
  java.io.IOException: Error posting to URL:
 
 https://appengine.google.com/api/appversion/create?app_id=mobitryversion=1;
  404 Not Found
  This application does not exist (app_id=u'mobitry').
 
 
  Debugging information may be found in
 
 C:\Users\vshukla\AppData\Local\Temp\2\appengine-deploy7314225494612513236.log
 
 
  How should I get this resolved?
 
 
 
  On Thu, Jul 21, 2011 at 12:23 PM, Jose Montes de Oca 
  jfmontesde...@google.com wrote:
 
 
  Hi,
 
 
 
  Please fill the following form:
  https://appengine.google.com/**waitlist/sms_issues
 https://appengine.google.com/waitlist/sms_issues

 
  As explained in the FAQ for SMS Verification for App Creation:
  http://code.google.com/**appengine/kb/sms.html
 http://code.google.com/appengine/kb/sms.html

 
  Hope this helps.
 
 
  --
  You received this message because you are subscribed to the Google
 Groups
  Google App Engine group.
  To view this discussion on the web visit
  https://groups.google.com/d/msg/google-appengine/-/my6HhKCPK_8J.
 
  To post to this group, send email to google-appengine@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-appengine@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-appengine@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-appengine@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: New Channel API pricing scheme

2011-07-22 Thread Everson Alves da Silva
Someone please correct me if I am wrong, but looks like the limit was 
changed drastically. Now I see 8,640 channels limit for free apps and 95,040 
for accounts with billing enabled. Now I think we can use it.

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/mSoRRuwudAoJ.
To post to this group, send email to google-appengine@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: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Cat
Update: (I'm going nuts)
I downgraded to 1.5.1 (restored GoogleAppEngineLauncher.app) and still
the same now ...
It seems that the upgrade to 1.5.2 did some permanent damage.
I am absolutely puzzled why --datastore_path= is ignored suddenly.

Here the full startup log:

cat$ /Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
dev_appserver.py -d --datastore_path=/Users/cat/repositories/appengine/
my.datastore -p 8080 .
INFO 2011-07-22 09:15:00,330 appengine_rpc.py:159] Server:
appengine.google.com
INFO 2011-07-22 09:15:21,578 rdbms_sqlite.py:58] Connecting to
SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
+TI/-Tmp-/dev_appserver.rdbms'
INFO 2011-07-22 09:15:21,618 dev_appserver_multiprocess.py:637]
Running application test on port 8080: http://localhost:8080

On 22 Jul., 09:22, Cat katz...@gmail.com wrote:
 Hi,

 After today's upgrade my datastore is empty and my testdata is not
 available.

 I start my SDK Server like this (usually with the MacOS Launcher):
 dev_appserver.py --datastore_path=/Users/cat/repositories/appengine/
 my.datastore -p8080 .

 Strangely --datastore_path is ignored and the dev_appserver uses a new
 datastore in the tmp directory:
 INFO     2011-07-22 07:11:11,606 rdbms_sqlite.py:58] Connecting to
 SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
 +TI/-Tmp-/dev_appserver.rdbms'

 Can anyone tell me which flags to set to get my old test datastore
 back?

 I would have to create lots of testdata manually that accumlated over
 the last months.

 Regards,
 Cat

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Google app engine throwing NoSuchMethodError suddenly

2011-07-22 Thread Prateek Mathur
Any update on this??

On Jul 19, 2:49 pm, Prateek Mathur prateek.mat...@metacube.com
wrote:
 Hi,
 I started seeing the following exception on my production builds
 suddenly and my application is broken because of this.

 java.lang.NoSuchMethodError:
 com.google.appengine.repackaged.com.google.common.base.StringUtil.isEmpty(L 
 java/
 lang/String;)Z
 at
 com.metacube.ipathshala.manager.util.SearchRequestAssembler.assemble(Search 
 RequestAssembler.java:
 129)
 at
 com.metacube.ipathshala.manager.SearchManager.doSearch(SearchManager.java:
 70)

 Was there any changes in the runtime sdk for theStringUtilclass..It
 seems to indicate that the method doesnt exist anymore, while few days
 back the application was running fine with the same api...
 Any news on what might have happened?

 Thanks,
 Prateek.

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



回复:Re: [google-appengine] How to select version of Django when using 'import template'

2011-07-22 Thread lezizi


I've tried adding 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')

to my application ,but it reports 'No module named django'.

What's wrong?

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/jiB76qQGteQJ.
To post to this group, send email to google-appengine@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] Transactions and ancestor in a different namespace

2011-07-22 Thread Hugo Visser
Is it anywhere explicitly documented that the ancestor of an entity
must have it's key in the same namespace as the entity itself? I'm
using namespaces a lot in our app and in production I get an error if
I try to do a transactional update of an entity with parent x in a
different namespace than the entity that I'm updating.

Is this intentional? If it is, I guess the dev server should also
check this, my unit tests pass :)

Hugo

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] App Engine Weekly Community Update #1

2011-07-22 Thread Johan Euphrosine
*App Engine Weekly Community Update #1*

Dear App Engine Community,

As discussed on IRC, each week I will bring some news and metrics
about the App Engine community activity.

Thanks a lot to +Rodrigo Moraes for reviewing this with his sharp
journalist eyes.

*Highlights*

1.5.2 Release Notes
http://googleappengine.blogspot.com/2011/07/app-engine-152-sdk-released.html

Postmortem: Java App Engine outage, July 14, 2011
http://googleappengine.blogspot.com/2011/07/postmortem-java-app-engine-outage-july.html

Go for App Engine is now generally available
http://blog.golang.org/2011/07/go-for-app-engine-is-now-generally.html

Tipfy is looking for a new maintainer
http://groups.google.com/group/tipfy/browse_thread/thread/1359e76c69e89060

*Hot questions*

Flask vs webapp2 for Google App Engine
http://stackoverflow.com/questions/6774371/flask-vs-webapp2-for-google-app-engine

Bad Performance for Dedupe of 2 million records using mapreduce on Appengine
http://stackoverflow.com/questions/6770781/bad-performance-for-dedupe-of-2-million-records-using-mapreduce-on-appengine

What is the best way of describing day of week?
http://stackoverflow.com/questions/6763623/what-is-the-best-way-of-describing-day-of-week

*IRC and Hangouts*

IRC Office Hours on Wednesday, transcript there:
https://groups.google.com/d/topic/google-appengine/ZzUDaN226bU/discussion

+Guido van Rossum and +Ikai Lan held community hangouts and posted
some followup on Google+:
https://plus.google.com/u/1/115212051037621986145/posts/TmU4Sdx7yT3
https://plus.google.com/u/1/107011265359512082824/posts/42G7ZiXkAtR

*1:1 with one member of the App Engine team*

Who?
Sumit Arora aka sumeets@, I'm with the App Engine SRE team

What?
As SRE, our mission is to balance availability, reliability and
performance with agility of our services.
Which essentially means: we work on developing and deploying systems
that help us measure availability and reliability; monitor outages or
degradation of service as well as capacity planning.
In addition, we gatekeep all changes going to our production
infrastructure, to ensure changes are rolled out without impacting end
users

Where?
I work out of the Sydney Australia Office.

When?
I've been with this team for about 6 months now.

Why?
I'm passionate about the cloud computing domain in general... and App
Engine represents a pioneer in the that domain, because it gives
developers the means to spend their time where it matters the most,
i.e. developing applications and not worrying about infrastructure to
run it on

Emacs or Vi?
vi

Python, Java or Go?
Python and Java In that order. I will use python over java any day
mostly because of my sysadmin background. And I’m just getting started
with Go.

Recommended App Engine framework, library or tool ?
Django, without a doubt.

Fun thought?
I find it very ironic and amusing that every time a smoke detector
goes off, the first thing people want to do is fix the smoke detector.
There is nothing wrong with it, it's doing what its supposed to be
doing... Fix the fire instead! Sadly this is true of monitoring and
alerting as well, in large.

*Issue tracking*

47 new issues were reported in the public issue tracker:

- 31 Defects
- 10 Production issues
- 6 Feature request
- 20 were Acknowledged and still need to be reproduced
- 10 have been Accepted and escalated to the Engineer team when necessary
- 17 of those issues were not actionable (Invalid, WontFix or Duplicate)

19 issues (including 8 from this week) have been fixed.

All the Productions issues backlog (68 issues) has been triaged, and
the New queue for Production issue is now empty.

*Groups*

[appengine-python]
115 messages in 25 threads
64 % of posts answered within 2 days
Top Posters:
- robert.kluin (9)
- proppy (7)
- ninjin32 (7)

[appengine-java]
177 messages in 51 threads
43% of posts answered within 2 days
Top Posters:
- ikai (11)
- venugopal.vassiredy (6)
- durant.didier (4)

[appengine]
330 messages in 84 threads
61% of posts answered within 2 days
Top Posters:
- robert.kluin (20)
- proppy (16)
- jeff (7)

Feedbacks are welcome on this new format, let me know what you are
looking forward to see in next week App Engine Community Update.
-- 
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] [OAuth + Provisioning ] Autentication - Python X Java

2011-07-22 Thread Felipe Teixeira
Hi,
I need help to use Provisioning API with OAuth authentication, the following
problem occurs, how to do domain validation in java api ? In Python it is
possible to know the following code.

  service = gdata.apps.service.AppsService(domain=consumer_key)
*-*service.SetOAuthInputParameters(sig_method, consumer_key,
consumer_secret=consumer_secret, two_legged_oauth=True)

res = service.RetrieveAllUsers()
for entry in res.entry:
print 'email;' + string.lower(entry.login.user_name) + '@' +
consumer_key

the emphasis on the coding can be seen that there is validation for key
parametersusing OAuth authentication as CONSUMER_KEY and CONSUMER_SECRET,
but inJava this is not possible ..
As shown below:

AppsForYourDomainClient client = new AppsForYourDomainClient(adminEmail,
adminPassword, domain); //JavaCode Api - AppsForYourDomain

how can I get something close to in java:

AppsForYourDomainClient client = null; //
client.SetOAuthInputParameters(sig_method, consumer_key,
consumer_secret); //this
method does not exist today in the api



Thanks...


-- 
*Felipe Teixeira*
*Desenvolvedor Java
*
IPNET Soluções
Tel.: 55 21 3553 2717 / 21-7805-6867
Rua Visconde de Inhaúma, 134, Sala 615
Centro - RJ - CEP: 20091-007
*http://www.ipnetsolucoes.com.br** *

*
*

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] App Engine Weekly Community Update #1

2011-07-22 Thread Joshua Smith

 61% of posts answered within 2 days

1. I am glad that you are tracking this.

2. That's NOT a good percentage. Since this is your main support channel, this 
should be 99.995% in 1 day. I'm not kidding. If you want to be in the software 
business, walk the walk.

3. I'm skeptical about your measurement technique. Answered doesn't mean 
answered unless the problem is actually resolved. The pattern I usually see is:

- I post a question
- You ask for some more information
- I provide that information
- Crickets.

My bet is that you are counting that as answered since you responded to the 
initial question.  But it ain't answered in the stack overflow sense of the 
word. And that sense is all that matters.

Let's hope that when you come out of preview and start charging us all that 
money, you step it up a bit on the support side. I know that customer support 
has about negative priority at google, so I recognize that it will be a 
challenge.

-Joshua

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] [OAuth + Provisioning ] Autentication - Python X Java

2011-07-22 Thread Felipe Teixeira
 Hi,
 I need help to use Provisioning API with OAuth authentication, the
 following problem occurs, how to do domain validation in java api ? In
 Python it is possible to know the following code.

   service = gdata.apps.service.AppsService(domain=consumer_key)
 *-*service.SetOAuthInputParameters(sig_method, consumer_key,
 consumer_secret=consumer_secret, two_legged_oauth=True)

 res = service.RetrieveAllUsers()
 for entry in res.entry:
 print 'email;' + string.lower(entry.login.user_name) + '@' +
 consumer_key

 the emphasis on the coding can be seen that there is validation for key
 parametersusing OAuth authentication as CONSUMER_KEY and CONSUMER_SECRET,
 but inJava this is not possible ..
 As shown below:

 AppsForYourDomainClient client = new AppsForYourDomainClient (adminEmail,
 adminPassword, domain); //JavaCode Api - AppsForYourDomain

 how can I get something close to in java:

 AppsForYourDomainClient client = null; //
 client.SetOAuthInputParameters(sig_method, consumer_key, consumer_secret);
 //this method does not exist today in the api java



 Thanks...


 --
 *Felipe Teixeira*
 *Desenvolvedor Java
 *
 IPNET Soluções
 Tel.: 55 21 3553 2717 / 21-7805-6867
 Rua Visconde de Inhaúma, 134, Sala 615
 Centro - RJ - CEP: 20091-007
 *http://www.ipnetsolucoes.com.br** *

 *
 *



-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Need help understanding Appengine billing

2011-07-22 Thread Kwame
Thanks Robert.

The reason I ask in such a general way is because it is difficult to
make such estimates at this time. The site is still new so it doesn't
have much traffic. I have accountant types breathing down my neck
asking for ballpark numbers! So, basically I just need a scenario of
any website on appspot, which has some metrics and also can provide
the amount they spend monthly on Appengine. This way my guys can make
projections about future costs, based on projected use. This will also
have implications for design modifications. Thanks for you help
Robert.

On Jul 22, 2:08 am, Robert Kluin robert.kl...@gmail.com wrote:
 Every site and app are different. Without any idea of what you're doing
 there is no way to compare. What kind of traffic levels do you expect?  Will
 each request hit the data store, how many times?  Will there be back end
 processing involved?

 Robert

 On Jul 21, 2011 8:01 AM, Kwame iweg...@gmail.com wrote:









  Thanks Johan,

  I see your billing scheme, and I can sort of understand what the
  different terms mean, but it is difficult to wrap my brain around what
  the costs actually end up being in a real website. It would be helpful
  to get some examples of what other people have actually paid, and what
  kind of usage they have. I just need to make some rough estimates, so
  any examples will do.

  On Jul 21, 7:50 am, Johan Euphrosine pro...@google.com wrote:
   Hi Kwame,

   The current billing documentation is here:

 http://code.google.com/appengine/docs/billing.html

   However later this year we will introduce a new billing scheme which
   is described here:

 http://www.google.com/enterprise/cloud/appengine/pricing.html









   Community members that are willing to share metrics about their QPS,
   current quota usage and billing are more than welcome to comment to
   this threads.

   Hope that helps.

   On Thu, Jul 21, 2011 at 6:55 AM, Kwame iweg...@gmail.com wrote:
I've been using Appengine for a while, and I haven't yet exhausted my
free quota. I'm running a business and I would need to set a budget
for my server costs. I'm not able to understand how the billing units
like CPU Time, Outgoing Bandwidth, Incoming Bandwidth  Total Stored
data apply in real world usage of a typical busy website. Can anyone
give me some sample charges for a typical website and approximately
how much of these resources can be expected to be consumed, so I can
compare with my site to get an approximate estimate.

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-appengine@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.

   --
   Johan Euphrosine (proppy)
   Developer Programs Engineer
   Google Developer Relations

  --
  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.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-appengine@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: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Chris Copeland
I'm having a problem that may be related.  I'm using django-nonrel which
sets the datastore path to .gaedata in the project directory.

When I start the server I get a log message that has the correct path:

INFO:root:Connecting to SQLite database '' with file
'/Users/me/workspace/myapp/.gaedata/rdbms'

But when the app starts the datastore is empty.

-Chris

On Fri, Jul 22, 2011 at 4:19 AM, Cat katz...@gmail.com wrote:

 Update: (I'm going nuts)
 I downgraded to 1.5.1 (restored GoogleAppEngineLauncher.app) and still
 the same now ...
 It seems that the upgrade to 1.5.2 did some permanent damage.
 I am absolutely puzzled why --datastore_path= is ignored suddenly.

 Here the full startup log:

 cat$ /Applications/GoogleAppEngineLauncher.app/Contents/Resources/
 GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
 dev_appserver.py -d --datastore_path=/Users/cat/repositories/appengine/
 my.datastore -p 8080 .
 INFO 2011-07-22 09:15:00,330 appengine_rpc.py:159] Server:
 appengine.google.com
 INFO 2011-07-22 09:15:21,578 rdbms_sqlite.py:58] Connecting to
 SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
 +TI/-Tmp-/dev_appserver.rdbms'
 INFO 2011-07-22 09:15:21,618 dev_appserver_multiprocess.py:637]
 Running application test on port 8080: http://localhost:8080

 On 22 Jul., 09:22, Cat katz...@gmail.com wrote:
  Hi,
 
  After today's upgrade my datastore is empty and my testdata is not
  available.
 
  I start my SDK Server like this (usually with the MacOS Launcher):
  dev_appserver.py --datastore_path=/Users/cat/repositories/appengine/
  my.datastore -p8080 .
 
  Strangely --datastore_path is ignored and the dev_appserver uses a new
  datastore in the tmp directory:
  INFO 2011-07-22 07:11:11,606 rdbms_sqlite.py:58] Connecting to
  SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
  +TI/-Tmp-/dev_appserver.rdbms'
 
  Can anyone tell me which flags to set to get my old test datastore
  back?
 
  I would have to create lots of testdata manually that accumlated over
  the last months.
 
  Regards,
  Cat

 --
 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.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-appengine@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: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Chris Copeland
Cat, do you have backups of you datastore files from before you ran 1.5.2?

I was able to get running again by downgrading the SDK to 1.5.1 and
restoring my data files from a backup.

-Chris

On Fri, Jul 22, 2011 at 4:19 AM, Cat katz...@gmail.com wrote:

 Update: (I'm going nuts)
 I downgraded to 1.5.1 (restored GoogleAppEngineLauncher.app) and still
 the same now ...
 It seems that the upgrade to 1.5.2 did some permanent damage.
 I am absolutely puzzled why --datastore_path= is ignored suddenly.

 Here the full startup log:

 cat$ /Applications/GoogleAppEngineLauncher.app/Contents/Resources/
 GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
 dev_appserver.py -d --datastore_path=/Users/cat/repositories/appengine/
 my.datastore -p 8080 .
 INFO 2011-07-22 09:15:00,330 appengine_rpc.py:159] Server:
 appengine.google.com
 INFO 2011-07-22 09:15:21,578 rdbms_sqlite.py:58] Connecting to
 SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
 +TI/-Tmp-/dev_appserver.rdbms'
 INFO 2011-07-22 09:15:21,618 dev_appserver_multiprocess.py:637]
 Running application test on port 8080: http://localhost:8080

 On 22 Jul., 09:22, Cat katz...@gmail.com wrote:
  Hi,
 
  After today's upgrade my datastore is empty and my testdata is not
  available.
 
  I start my SDK Server like this (usually with the MacOS Launcher):
  dev_appserver.py --datastore_path=/Users/cat/repositories/appengine/
  my.datastore -p8080 .
 
  Strangely --datastore_path is ignored and the dev_appserver uses a new
  datastore in the tmp directory:
  INFO 2011-07-22 07:11:11,606 rdbms_sqlite.py:58] Connecting to
  SQLite database '' with file '/var/folders/u5/u5xmrm5gHPGXhfjlyv98u+++
  +TI/-Tmp-/dev_appserver.rdbms'
 
  Can anyone tell me which flags to set to get my old test datastore
  back?
 
  I would have to create lots of testdata manually that accumlated over
  the last months.
 
  Regards,
  Cat

 --
 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.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-appengine@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: Google app engine throwing NoSuchMethodError suddenly

2011-07-22 Thread Ikai Lan (Google)
Are you using the version of StringUtils that is in com.repackaged? If so,
I'd advise you import a version of that into WEB-INF/lib. I'll check if it
has changed, but in general, you probably shouldn't depend on the stuff that
is in com.repackaged (I'll see if this is our policy and get it added to the
docs if so).

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 5:28 AM, Prateek Mathur prateek.mat...@metacube.com
 wrote:

 Any update on this??

 On Jul 19, 2:49 pm, Prateek Mathur prateek.mat...@metacube.com
 wrote:
  Hi,
  I started seeing the following exception on my production builds
  suddenly and my application is broken because of this.
 
  java.lang.NoSuchMethodError:
 
 com.google.appengine.repackaged.com.google.common.base.StringUtil.isEmpty(L
 java/
  lang/String;)Z
  at
 
 com.metacube.ipathshala.manager.util.SearchRequestAssembler.assemble(Search
 RequestAssembler.java:
  129)
  at
 
 com.metacube.ipathshala.manager.SearchManager.doSearch(SearchManager.java:
  70)
 
  Was there any changes in the runtime sdk for theStringUtilclass..It
  seems to indicate that the method doesnt exist anymore, while few days
  back the application was running fine with the same api...
  Any news on what might have happened?
 
  Thanks,
  Prateek.

 --
 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.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-appengine@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: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread oakmad
+1 for me. I have tried deleting the application plist as detailed in
this issue
http://code.google.com/p/googleappengine/issues/detail?id=1187q=datastore_pathcolspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log
but no joy.

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] local Google Datastore Service

2011-07-22 Thread Ikai Lan (Google)
You can access the local datastore admin at:

http://localhost:PORT/_ah/admin

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Thu, Jul 21, 2011 at 2:37 PM, Jamil Rzayev jamil.rza...@gmail.comwrote:

 Dear Folks,

 I am developing GWT-based application where I need to store/retrieve
 data at GAE. I decided to use Google Datastore low-level API. The
 service does work well, but I need to test my CRUD operations locally
 not always deploying to Google App Engine.
 Could you please recommend me what I can use for that?

 It is part of my thesis and is very important for me to do it well.

 thank you.

 --
 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.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-appengine@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: For deployment only does the sdk version matter?

2011-07-22 Thread Ikai Lan (Google)
Only your version matters. However, it is a good idea to stay somewhat up to
date, as some APIs (experimental ones) get deprecated.

One more thing: I tried running a really old application a while ago that
was developed using an SDK version that was 1.1.x, and it wouldn't work with
the newest SDK.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Mon, Jul 18, 2011 at 3:49 PM, Ernesto Oltra ernestoka...@gmail.comwrote:

 As far as my knowledge goes, you upload the source code (allowing downloads
 of it later), and its compiled, precompiled or whatever (Python/Java/Go...)
 in their machines; so the only problem here is you might be using a feature
 that has change their behaviour since the version you locally tested it.

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/3atHYio-ZoEJ.

 To post to this group, send email to google-appengine@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-appengine@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] App Engine Weekly Community Update #1

2011-07-22 Thread Johan Euphrosine
On Fri, Jul 22, 2011 at 3:26 PM, Joshua Smith joshuaesm...@charter.net wrote:


Hi Joshua,

 61% of posts answered within 2 days

 1. I am glad that you are tracking this.

I'm glad that you find interest into those metrics.

 2. That's NOT a good percentage. Since this is your main support channel,
 this should be 99.995% in 1 day. I'm not kidding. If you want to be in the
 software business, walk the walk.

The purpose of the groups is for App Engine developer to help each
others, as per the group description:

Discussion group for Google App Engine. For Python-only dialog, see
the Python group, same goes for Java. Also see Downtime Notify for
maintenance info. API Gurus: experienced developers who watch this
group, answering questions  providing valuable feedback: Geoffrey
(Wooble) Spear  Robert Kluin


And the purpose of this metrics was to measure level of engagement and
reactivity of the community as a whole (not only Googler) in the
different threads.

 3. I'm skeptical about your measurement technique. Answered doesn't mean
 answered unless the problem is actually resolved. The pattern I usually see
 is:
 - I post a question
 - You ask for some more information
 - I provide that information
 - Crickets.
 My bet is that you are counting that as answered since you responded to
 the initial question.  But it ain't answered in the stack overflow sense of
 the word. And that sense is all that matters.

I'd love to track the actual resolution of questions but we miss
metadata to check if a question has been answered.

Maybe we (as the community) can agree on some convention were we use
nickname++ people as a signal of the question of the current thread
being answered, or we (community) can decide to shift those question
to Stack Overflow and keep the group for more casual discussion.

I'd love to hear what others think about that.

 Let's hope that when you come out of preview and start charging us all that
 money, you step it up a bit on the support side. I know that customer
 support has about negative priority at google, so I recognize that it will
 be a challenge.

If you take a look a the new pricing model we announced:
http://www.google.com/enterprise/cloud/appengine/pricing.html

You will notice that we mention SLA and Operational support for Paid
and Premium app, which is a strong indicator that we are serious about
this.
-- 
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Johan Euphrosine
HI Galoch,

Thanks for the followup,

I think you are experiencing a combinaison fo the two following rules
I was pointing to in my previous email:
( reads as has priority for handling the incoming request)
2/ Spawning a new Dynamic instance  Busy Always On instance
4/ Idle Dynamic instance  Idle Always On instance

Applied to your example it could means that:
Resident Instance 1:   Requests: 49 Age: 1Hr
Resident Instance 2:   Requests: 6  Age: 1Hr
Resident Instance 3:   Requests: 2  Age: 1Hr
Dynamic Instance 1:   Requests: 7  Age: 2min
Dynamic Instance 2:   Requests: 291  Age: 1Hr
Dynamic Instance 3:   Requests: 322  Age: 1Hr

- 1 Hours ago while all your Always On instance were busy and you had
a burst of incoming requests and the scheduler spawned new Dynamic
instances as per rule 2/ highlighted above.
- After the burst and back to normal traffic the new Dynamic Instances
were handing incoming requests in priority as per rule 4/ highlighted
above.
- 2 Minutes ago all your instances Always On + Dynamic were busy again
and the scheduler spawned a new Dynamic instance that handle 7
incoming requests.

Hope that make more sense for you and Francois, but as I said earlier
we are open to suggestion and I will make sure someone working on the
scheduler team monitor this thread for your input.

On Fri, Jul 22, 2011 at 9:09 AM, Galoch galoch...@gmail.com wrote:
 @Johan,
 The issue is not about Always On instance being busy. Its actually the
 other way ... the Always On instance is never busy ... at least that
 is what we observed in last 3-4 days. Your explanation may be partly
 true since this behavior keeps on changing.

 For e.g. I have a snapshot of instances from July 19th and here's the
 details (for some reason I can't see a link to attach the snapshot
 images here):
 Resident Instance 1:   Requests: 49     Age: 1Hr
 Resident Instance 2:   Requests: 6      Age: 1Hr
 Resident Instance 3:   Requests: 2      Age: 1Hr
 Dynamic Instance 1:   Requests: 7      Age: 2min
 Dynamic Instance 2:   Requests: 291  Age: 1Hr
 Dynamic Instance 3:   Requests: 322  Age: 1Hr

 This is under no load with only very light weight cron jobs running.
 This gets much much worse during the day under peak load with requests
 for dynamic instances reaching 1000+ in matter of minutes and resident
 instances have only 1 request served.

 As you see above Resident Instance 2 and 3 are hardly hit so I don't
 think they are busy at all. On the other hand, Dynamic Instance 2 and
 3 get most of the hits.

 Dynamic Instance 1 is what is killing us. It keeps getting killed and
 reborn within that 5 minute window!!

 We use Spring framework and it is really very expensive for us when a
 new instance starts up.

 Just to give you a background, we had gone through a real roller
 coaster ride to make this to work on GAE by breaking the loading of
 framework into many different chunks. But still spinning was out of
 control. Then we found java threads to our rescue. We worked through
 the hack to load JDO to avoid UnsupportedOperationException. We
 finally got it to work where most of our requests were served by
 Always On instances with occasional spinning of Dynamic instances. It
 was quite impressive.

 Unfortunately, this was short lived when we hit this new behavior with
 GAE. The very last thing we want GAE to do is create a new instance
 every few minutes as it could easily reach 30 second deadline during
 the day and throw critical error.

 I am not sure when the new billing will come into effect but we really
 need this thing fixed as it literally brings down our app to a
 grinding halt. So I am open to any suggestions you guys think can help
 us.

 Another thought about new scheduler is to have a configurable
 schedule. For e.g. our users are mostly business users who work during
 normal business hours. We want to be able to spin more Always On
 instances during those hours and bring the number down during nights
 and weekends. Dynamic instances won't work for us due to reason
 explained above.


 Thanks,
 galoch






 On Jul 21, 5:56 pm, Johan Euphrosine pro...@google.com wrote:
 After speaking with Engs, I think I can explain what is going on:

 Here are the current scheduling rules: ( reads as has priority for
 handling the incoming request)

 1/ Idle Always On instance  Spawning a new Dynamic instance
 2/ Spawning a new Dynamic instance  Busy Always On instance
 3/ Idle Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 I will give you an example to illustrate the behavior you all noticed,
 that is Dynamic instance handling request while Always On is idle.

 (Always On instance started)
 - Incoming request
 - Always On instance handle the request
 - another Incoming request
 (Always On instance busy)
 - A new Dynamic instance is spawned
 (Dynamic instance idle, Always on instance busy)
 - Dynamic instance handle the request
 - another Incoming request
 (Dynamic instance 

[google-appengine] [OAuth + Provisioning ] Autentication - Python X Java

2011-07-22 Thread Felipe Teixeira
Hi,
I need help to use Provisioning API with OAuth authentication, the following
problem occurs, how to do domain validation in java api ? In Python it is
possible to know the following code.

  service = gdata.apps.service.AppsService(domain=consumer_key)
*-*service.SetOAuthInputParameters(sig_method, consumer_key,
consumer_secret=consumer_secret, two_legged_oauth=True)

res = service.RetrieveAllUsers()
for entry in res.entry:
print 'email;' + string.lower(entry.login.user_name) + '@' +
consumer_key

the emphasis on the coding can be seen that there is validation for key
parametersusing OAuth authentication as CONSUMER_KEY and CONSUMER_SECRET,
but inJava this is not possible ..
As shown below:

AppsForYourDomainClient client = new AppsForYourDomainClient (adminEmail,
adminPassword, domain); //JavaCode Api - AppsForYourDomain

how can I get something close to in java:

AppsForYourDomainClient client = null; //
client.SetOAuthInputParameters(sig_method, consumer_key,
consumer_secret); //this
method does not exist today in the api java



Thanks...

-- 
*Felipe Teixeira*
*Desenvolvedor Java
*
IPNET Soluções
Tel.: 55 21 3553 2717 / 21-7805-6867
Rua Visconde de Inhaúma, 134, Sala 615
Centro - RJ - CEP: 20091-007
*http://www.ipnetsolucoes.com.br** *

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Tom Phillips
When are threaded instances considered busy?

If it is while they are serving only a one request it would explain
why Always on instances for threaded Java are now severely under-
utilized.

/Tom



On Jul 22, 10:57 am, Johan Euphrosine pro...@google.com wrote:
 HI Galoch,

 Thanks for the followup,

 I think you are experiencing a combinaison fo the two following rules
 I was pointing to in my previous email:
 ( reads as has priority for handling the incoming request)
 2/ Spawning a new Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 Applied to your example it could means that:
 Resident Instance 1:   Requests: 49     Age: 1Hr
 Resident Instance 2:   Requests: 6      Age: 1Hr
 Resident Instance 3:   Requests: 2      Age: 1Hr
 Dynamic Instance 1:   Requests: 7      Age: 2min
 Dynamic Instance 2:   Requests: 291  Age: 1Hr
 Dynamic Instance 3:   Requests: 322  Age: 1Hr

 - 1 Hours ago while all your Always On instance were busy and you had
 a burst of incoming requests and the scheduler spawned new Dynamic
 instances as per rule 2/ highlighted above.
 - After the burst and back to normal traffic the new Dynamic Instances
 were handing incoming requests in priority as per rule 4/ highlighted
 above.
 - 2 Minutes ago all your instances Always On + Dynamic were busy again
 and the scheduler spawned a new Dynamic instance that handle 7
 incoming requests.

 Hope that make more sense for you and Francois, but as I said earlier
 we are open to suggestion and I will make sure someone working on the
 scheduler team monitor this thread for your input.



 On Fri, Jul 22, 2011 at 9:09 AM, Galoch galoch...@gmail.com wrote:
  @Johan,
  The issue is not about Always On instance being busy. Its actually the
  other way ... the Always On instance is never busy ... at least that
  is what we observed in last 3-4 days. Your explanation may be partly
  true since this behavior keeps on changing.

  For e.g. I have a snapshot of instances from July 19th and here's the
  details (for some reason I can't see a link to attach the snapshot
  images here):
  Resident Instance 1:   Requests: 49     Age: 1Hr
  Resident Instance 2:   Requests: 6      Age: 1Hr
  Resident Instance 3:   Requests: 2      Age: 1Hr
  Dynamic Instance 1:   Requests: 7      Age: 2min
  Dynamic Instance 2:   Requests: 291  Age: 1Hr
  Dynamic Instance 3:   Requests: 322  Age: 1Hr

  This is under no load with only very light weight cron jobs running.
  This gets much much worse during the day under peak load with requests
  for dynamic instances reaching 1000+ in matter of minutes and resident
  instances have only 1 request served.

  As you see above Resident Instance 2 and 3 are hardly hit so I don't
  think they are busy at all. On the other hand, Dynamic Instance 2 and
  3 get most of the hits.

  Dynamic Instance 1 is what is killing us. It keeps getting killed and
  reborn within that 5 minute window!!

  We use Spring framework and it is really very expensive for us when a
  new instance starts up.

  Just to give you a background, we had gone through a real roller
  coaster ride to make this to work on GAE by breaking the loading of
  framework into many different chunks. But still spinning was out of
  control. Then we found java threads to our rescue. We worked through
  the hack to load JDO to avoid UnsupportedOperationException. We
  finally got it to work where most of our requests were served by
  Always On instances with occasional spinning of Dynamic instances. It
  was quite impressive.

  Unfortunately, this was short lived when we hit this new behavior with
  GAE. The very last thing we want GAE to do is create a new instance
  every few minutes as it could easily reach 30 second deadline during
  the day and throw critical error.

  I am not sure when the new billing will come into effect but we really
  need this thing fixed as it literally brings down our app to a
  grinding halt. So I am open to any suggestions you guys think can help
  us.

  Another thought about new scheduler is to have a configurable
  schedule. For e.g. our users are mostly business users who work during
  normal business hours. We want to be able to spin more Always On
  instances during those hours and bring the number down during nights
  and weekends. Dynamic instances won't work for us due to reason
  explained above.

  Thanks,
  galoch

  On Jul 21, 5:56 pm, Johan Euphrosine pro...@google.com wrote:
  After speaking with Engs, I think I can explain what is going on:

  Here are the current scheduling rules: ( reads as has priority for
  handling the incoming request)

  1/ Idle Always On instance  Spawning a new Dynamic instance
  2/ Spawning a new Dynamic instance  Busy Always On instance
  3/ Idle Dynamic instance  Busy Always On instance
  4/ Idle Dynamic instance  Idle Always On instance

  I will give you an example to illustrate the behavior you all noticed,
  that is Dynamic instance handling request 

Re: [google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Rob Coops
1/ Idle Always On instance  Spawning a new Dynamic instance
2/ Spawning a new Dynamic instance  Busy Always On instance
3/ Idle Dynamic instance  Busy Always On instance
4/ Idle Dynamic instance  Idle Always On instance

So App engine prefers to use bored Always On instances over spawning new
dynamic once that's good. If the Always On instances are busy it spawns a
new Dynamic instance good. If a Dynamic instance is bored but the Always On
once are busy the Dynamic instance gets the load still good.

But then you loose me if the Always one instance is idle the Dynamic
instance still gets the load, why?

In this last case I would expect the Always on instance to get the load
otherwise the Dynamic instance will keep on being busy and will not get
stopped because of it.

I don't know what the cost are of spawning and later destroying a Dynamic
instance but I cannot imagine that this is such a huge cost that you would
have to prefer using the Dynamic instances over the Always On once.

I believe that this last rule should read:
4/ Idle Always On instance  Idle Dynamic instance

In which case the Idle Always On instances would get the load and the bored
Dynamic instances would get cleaned up much faster then they are now.
I suspect this is a typo though as I cannot imagine that this is really the
setup but if it is I would say that is a candidate for change. :-)

The other thing I would suggest is altering the load balancing rules for
Dynamic instances from the picture painted in this email it looks like the
load balancing of multiple Dynamic instances is pretty much round robin (or
equal load based). If this would be changed to always try and load use one
Dynamic instance till the load reaches 80% or so before using the second one
and so on this would allow the despawning of excess Dynamic instances much
sooner then when one uses the current setup. This does mean a slightly
bigger hit in case of a serious failure of the currently preferred Dynamic
instance. Hence the 80% mark for the load which is arbitrarily chosen by
randomly picking a number above 50 and might need some more scientific work
to ensure that in an average scenario the remaining instances will usually
be able to take the load caused by the sudden death of an Dynamic instance.

From what I currently see it looks like the safest option has been chosen,
meaning that in all cases the service will remain active no matter what
happens but this means a significant cost on the customer side. I suspect
that many customers are happy with that, but I think that an equal amount of
them will want to see a situation where the costs are less likely to spike
while providing a similar albeit slightly less high availability solution.
It might be an interesting idea to offer several flavors of high
availability, ranging from the current supper safe but relatively
unpredictable cost to a pretty decent with very predictable costs one. I
have no idea if this is technically possible but something tells me that it
should not be that hard to do. And even if it is a little harder to do my
guess is that Google would be up to that task.

Well that's my two cents...

Regards,

Rob



( reads as has priority for handling the incoming request)
2/ Spawning a new Dynamic instance  Busy Always On instance
4/ Idle Dynamic instance  Idle Always On instance

On Fri, Jul 22, 2011 at 4:57 PM, Johan Euphrosine pro...@google.com wrote:

 HI Galoch,

 Thanks for the followup,

 I think you are experiencing a combinaison fo the two following rules
 I was pointing to in my previous email:
 ( reads as has priority for handling the incoming request)
 2/ Spawning a new Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 Applied to your example it could means that:
 Resident Instance 1:   Requests: 49 Age: 1Hr
 Resident Instance 2:   Requests: 6  Age: 1Hr
 Resident Instance 3:   Requests: 2  Age: 1Hr
 Dynamic Instance 1:   Requests: 7  Age: 2min
 Dynamic Instance 2:   Requests: 291  Age: 1Hr
 Dynamic Instance 3:   Requests: 322  Age: 1Hr

 - 1 Hours ago while all your Always On instance were busy and you had
 a burst of incoming requests and the scheduler spawned new Dynamic
 instances as per rule 2/ highlighted above.
 - After the burst and back to normal traffic the new Dynamic Instances
 were handing incoming requests in priority as per rule 4/ highlighted
 above.
 - 2 Minutes ago all your instances Always On + Dynamic were busy again
 and the scheduler spawned a new Dynamic instance that handle 7
 incoming requests.

 Hope that make more sense for you and Francois, but as I said earlier
 we are open to suggestion and I will make sure someone working on the
 scheduler team monitor this thread for your input.

 On Fri, Jul 22, 2011 at 9:09 AM, Galoch galoch...@gmail.com wrote:
  @Johan,
  The issue is not about Always On instance being busy. Its actually the
  other way ... the Always On instance is never busy ... at least that
  

Re: [google-appengine] App Engine Weekly Community Update #1

2011-07-22 Thread Jay
This is a really great summary, a nice service Johan. Thank you for taking 
the time. 
I missed the IRC discussion. I'm sure one of the things discussed there was 
something about the best way to publish this. Obviously this group is a 
must. I'm trying to figure out a way where I can get this topic Weekly 
Community Update in email or rss. Anyone have any ideas?

-- Jay

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/N5ej2Ri4YiUJ.
To post to this group, send email to google-appengine@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] Memcache assumptions for Counters

2011-07-22 Thread Andrin von Rechenberg
Hey there

I'm building something like Google Analytics for Appengine but in real
time
(Including qps, hourly  daily graphs, backend counters, monitors with
alerts, etc...)
The cool thing is that it only uses memcache to increase counters/stats so
its
really quick to use in prod code. Every minute I gather all counters and
write them to datastore.
It seems to work perfectly for my app (~250qps with about 1000 different
counters, and about
1000 counter increases per second)
I can also measure how correct my data is (if stuff flushed in memcache, but
so far that never happened),
but it's all based on one assumption:

If I call:

memcache.incr(a, intitail_value=0)
...
memcache.incr(b, initial_value=0)

memcache.incr(b, initial_value=0)


*if a is still in the memcache b will also be in the memcache and wont
have been flushed, correct?*
*
*
or in other words: If the entity size for two items in the memcache is the
same,
does the memcache work like either a LRU or FIFO cache?

Any response is greatly appreciated...

-Andrin

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Luca
Johan, 

it seems to me the problem is rule 4/ below. 
Shouldn't the rule be: 

Idle Always On instance  Idle Dynamic instance

instead? 
In this way, if you have a dynamic instance on, it will not handle traffic 
unless the always-on ones are busy.  So when the traffic decreases, and the 
dynamic instances are no longer needed, they will be correctly shut off. 

I also think an auxiliary problem is with rule 2/ 
If you spawn a new instance just because the others are all busy, you may 
tend to have too many instances. 
The fact of spawning new instances should be configurable, depending on how 
many requests are already queued for the instances you have already active 
-- 0, 1, more, etc.  

More in general, if you allowed users to specify how much it costs to them 
to delay serving a request, it would not be difficult to synthesize for each 
app an optimal decision policy to decide whether to switch another instance 
on or off.  This can be done using tools from dynamic optimization / control 
theory.  I would be glad to help if the people there need guidance on this 
(I used to be in the research group there till a month ago). 

Luca

On Thursday, July 21, 2011 5:56:42 PM UTC-7, Johan Euphrosine (Google) 
wrote:

 After speaking with Engs, I think I can explain what is going on:

 Here are the current scheduling rules: ( reads as has priority for
 handling the incoming request)

 1/ Idle Always On instance  Spawning a new Dynamic instance
 2/ Spawning a new Dynamic instance  Busy Always On instance
 3/ Idle Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance



-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/X8gH6jjIK0MJ.
To post to this group, send email to google-appengine@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] Memcache assumptions for Counters

2011-07-22 Thread Ikai Lan (Google)
Memcache works like an LRU cache, but I don't see why a would force out b
unless you ran out of space.

Also, App Engine's Memcache has 2 LRU structures: an app specific LRU and a
global LRU for that Memcache instance.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 1:05 PM, Andrin von Rechenberg
andri...@gmail.comwrote:

 Hey there

 I'm building something like Google Analytics for Appengine but in real
 time
 (Including qps, hourly  daily graphs, backend counters, monitors with
 alerts, etc...)
 The cool thing is that it only uses memcache to increase counters/stats so
 its
 really quick to use in prod code. Every minute I gather all counters and
 write them to datastore.
 It seems to work perfectly for my app (~250qps with about 1000 different
 counters, and about
 1000 counter increases per second)
 I can also measure how correct my data is (if stuff flushed in memcache,
 but so far that never happened),
 but it's all based on one assumption:

 If I call:

 memcache.incr(a, intitail_value=0)
 ...
 memcache.incr(b, initial_value=0)
 
 memcache.incr(b, initial_value=0)
 

 *if a is still in the memcache b will also be in the memcache and wont
 have been flushed, correct?*
 *
 *
 or in other words: If the entity size for two items in the memcache is the
 same,
 does the memcache work like either a LRU or FIFO cache?

 Any response is greatly appreciated...

 -Andrin

  --
 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.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-appengine@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] Memcache assumptions for Counters

2011-07-22 Thread Ikai Lan (Google)
Oh, I see what you're getting at: you're asking me if B will still be in the
cache if A is still in the cache. That depends on whether or not the keys
hash to the same Memcache instance.

FYI - in general, we don't make any guarantees of this behavior, so it
potentially can be problematic down the line if this changes.


Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 1:52 PM, Ikai Lan (Google) ika...@google.comwrote:

 Memcache works like an LRU cache, but I don't see why a would force out b
 unless you ran out of space.

 Also, App Engine's Memcache has 2 LRU structures: an app specific LRU and a
 global LRU for that Memcache instance.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:05 PM, Andrin von Rechenberg andri...@gmail.com
  wrote:

 Hey there

 I'm building something like Google Analytics for Appengine but in real
 time
 (Including qps, hourly  daily graphs, backend counters, monitors with
 alerts, etc...)
 The cool thing is that it only uses memcache to increase counters/stats so
 its
 really quick to use in prod code. Every minute I gather all counters and
 write them to datastore.
 It seems to work perfectly for my app (~250qps with about 1000 different
 counters, and about
 1000 counter increases per second)
 I can also measure how correct my data is (if stuff flushed in memcache,
 but so far that never happened),
 but it's all based on one assumption:

 If I call:

 memcache.incr(a, intitail_value=0)
 ...
 memcache.incr(b, initial_value=0)
 
 memcache.incr(b, initial_value=0)
 

 *if a is still in the memcache b will also be in the memcache and
 wont have been flushed, correct?*
 *
 *
 or in other words: If the entity size for two items in the memcache is the
 same,
 does the memcache work like either a LRU or FIFO cache?

 Any response is greatly appreciated...

 -Andrin

  --
 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.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-appengine@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] Memcache assumptions for Counters

2011-07-22 Thread Ikai Lan (Google)
One more thing to be aware of: there are times when Memcache needs to be
flushed. If a flush happens sometime, B can have a value, but A would be
unset.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 1:53 PM, Ikai Lan (Google) ika...@google.comwrote:

 Oh, I see what you're getting at: you're asking me if B will still be in
 the cache if A is still in the cache. That depends on whether or not the
 keys hash to the same Memcache instance.

 FYI - in general, we don't make any guarantees of this behavior, so it
 potentially can be problematic down the line if this changes.


 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:52 PM, Ikai Lan (Google) ika...@google.comwrote:

 Memcache works like an LRU cache, but I don't see why a would force out b
 unless you ran out of space.

 Also, App Engine's Memcache has 2 LRU structures: an app specific LRU and
 a global LRU for that Memcache instance.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:05 PM, Andrin von Rechenberg 
 andri...@gmail.com wrote:

 Hey there

 I'm building something like Google Analytics for Appengine but in real
 time
 (Including qps, hourly  daily graphs, backend counters, monitors with
 alerts, etc...)
 The cool thing is that it only uses memcache to increase counters/stats
 so its
 really quick to use in prod code. Every minute I gather all counters and
 write them to datastore.
 It seems to work perfectly for my app (~250qps with about 1000 different
 counters, and about
 1000 counter increases per second)
 I can also measure how correct my data is (if stuff flushed in memcache,
 but so far that never happened),
 but it's all based on one assumption:

 If I call:

 memcache.incr(a, intitail_value=0)
 ...
 memcache.incr(b, initial_value=0)
 
 memcache.incr(b, initial_value=0)
 

 *if a is still in the memcache b will also be in the memcache and
 wont have been flushed, correct?*
 *
 *
 or in other words: If the entity size for two items in the memcache is
 the same,
 does the memcache work like either a LRU or FIFO cache?

 Any response is greatly appreciated...

 -Andrin

  --
 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.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-appengine@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] Memcache assumptions for Counters

2011-07-22 Thread MiuMeet Support
Thanks for getting back to me so quickly!

RE: Your last email, you wrote:
B can have a value, but A would be unset.

That wouldnt be a problem since i only want the implication A=B (If A
exists then B exists).
But I assume you meant:
A can have a value, but B would be unset. Right?

Can you (*really roughly*) say how many memcache instances you are running?
Let's say I would create 1000 As, would I hit all memcaches (with a high
probabilty)? Then the assumption if all A's exist, then B exists' would
hold...
Or can I influence the hash somehow to end up in the same instance
(something else then finding hash collisions :)) ?


Thanks again, for getting back to me so quickly.

-Andrin

On Fri, Jul 22, 2011 at 7:55 PM, Ikai Lan (Google) ika...@google.comwrote:

 One more thing to be aware of: there are times when Memcache needs to be
 flushed. If a flush happens sometime, B can have a value, but A would be
 unset.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:53 PM, Ikai Lan (Google) ika...@google.comwrote:

 Oh, I see what you're getting at: you're asking me if B will still be in
 the cache if A is still in the cache. That depends on whether or not the
 keys hash to the same Memcache instance.

 FYI - in general, we don't make any guarantees of this behavior, so it
 potentially can be problematic down the line if this changes.


 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:52 PM, Ikai Lan (Google) ika...@google.comwrote:

 Memcache works like an LRU cache, but I don't see why a would force out b
 unless you ran out of space.

 Also, App Engine's Memcache has 2 LRU structures: an app specific LRU and
 a global LRU for that Memcache instance.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:05 PM, Andrin von Rechenberg 
 andri...@gmail.com wrote:

 Hey there

 I'm building something like Google Analytics for Appengine but in real
 time
 (Including qps, hourly  daily graphs, backend counters, monitors with
 alerts, etc...)
 The cool thing is that it only uses memcache to increase counters/stats
 so its
 really quick to use in prod code. Every minute I gather all counters and
 write them to datastore.
 It seems to work perfectly for my app (~250qps with about 1000 different
 counters, and about
 1000 counter increases per second)
 I can also measure how correct my data is (if stuff flushed in memcache,
 but so far that never happened),
 but it's all based on one assumption:

 If I call:

 memcache.incr(a, intitail_value=0)
 ...
 memcache.incr(b, initial_value=0)
 
 memcache.incr(b, initial_value=0)
 

 *if a is still in the memcache b will also be in the memcache and
 wont have been flushed, correct?*
 *
 *
 or in other words: If the entity size for two items in the memcache is
 the same,
 does the memcache work like either a LRU or FIFO cache?

 Any response is greatly appreciated...

 -Andrin

  --
 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.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-appengine@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-appengine@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] Memcache assumptions for Counters

2011-07-22 Thread Ikai Lan (Google)
Ha ha ha ...

To be honest, I couldn't say off the top of my head, but it's not something
you can depend on.

Another thing you can think about doing is using the backend instances.
Those are more or less guaranteed to stick around, though you might not be
able to store as much data in them.

Ikai Lan
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine



On Fri, Jul 22, 2011 at 2:08 PM, MiuMeet Support r...@miumeet.com wrote:

 Thanks for getting back to me so quickly!

 RE: Your last email, you wrote:
 B can have a value, but A would be unset.

 That wouldnt be a problem since i only want the implication A=B (If A
 exists then B exists).
 But I assume you meant:
 A can have a value, but B would be unset. Right?

 Can you (*really roughly*) say how many memcache instances you are running?
 Let's say I would create 1000 As, would I hit all memcaches (with a high
 probabilty)? Then the assumption if all A's exist, then B exists' would
 hold...
 Or can I influence the hash somehow to end up in the same instance
 (something else then finding hash collisions :)) ?


 Thanks again, for getting back to me so quickly.

 -Andrin

 On Fri, Jul 22, 2011 at 7:55 PM, Ikai Lan (Google) ika...@google.comwrote:

 One more thing to be aware of: there are times when Memcache needs to be
 flushed. If a flush happens sometime, B can have a value, but A would be
 unset.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:53 PM, Ikai Lan (Google) ika...@google.comwrote:

 Oh, I see what you're getting at: you're asking me if B will still be in
 the cache if A is still in the cache. That depends on whether or not the
 keys hash to the same Memcache instance.

 FYI - in general, we don't make any guarantees of this behavior, so it
 potentially can be problematic down the line if this changes.


 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:52 PM, Ikai Lan (Google) ika...@google.comwrote:

 Memcache works like an LRU cache, but I don't see why a would force out
 b unless you ran out of space.

 Also, App Engine's Memcache has 2 LRU structures: an app specific LRU
 and a global LRU for that Memcache instance.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine



 On Fri, Jul 22, 2011 at 1:05 PM, Andrin von Rechenberg 
 andri...@gmail.com wrote:

 Hey there

 I'm building something like Google Analytics for Appengine but in
 real time
 (Including qps, hourly  daily graphs, backend counters, monitors with
 alerts, etc...)
 The cool thing is that it only uses memcache to increase counters/stats
 so its
 really quick to use in prod code. Every minute I gather all counters
 and write them to datastore.
 It seems to work perfectly for my app (~250qps with about 1000
 different counters, and about
 1000 counter increases per second)
 I can also measure how correct my data is (if stuff flushed in
 memcache, but so far that never happened),
 but it's all based on one assumption:

 If I call:

 memcache.incr(a, intitail_value=0)
 ...
 memcache.incr(b, initial_value=0)
 
 memcache.incr(b, initial_value=0)
 

 *if a is still in the memcache b will also be in the memcache and
 wont have been flushed, correct?*
 *
 *
 or in other words: If the entity size for two items in the memcache is
 the same,
 does the memcache work like either a LRU or FIFO cache?

 Any response is greatly appreciated...

 -Andrin

  --
 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.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-appengine@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-appengine@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.com.
 For more options, visit this group at
 

[google-appengine] Re: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Cat
I have tried to restore the datastore and the
GoogleAppEngineLauncher.app (with the SDK bundle inside) back to 1.5.0
but I cannot get it to run.
Its always the same error, as if the downgrade did not change the
python files.
Does anyone know how to get the SDK-version out of the running
appserver (a --version flag is missing!)?

On 22 Jul., 16:21, oakmad adam.oak...@gmail.com wrote:
 +1 for me. I have tried deleting the application plist as detailed in
 this 
 issuehttp://code.google.com/p/googleappengine/issues/detail?id=1187q=data...
 but no joy.

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Galoch
Hi Johan,

Thanks for the explanation. I have couple of questions on that.

1. 1 Hours ago while all your Always On instance were busy and you
had a burst of incoming requests
While this may be true when my Always On instances were busy running
some stuff but what about when 2 Always On instances show only 1
request served which is the Warmup request itself. Does this mean
Warmup requests are considered as traffic? If that is the case then
Always On instances seem rather useless since they will never ever get
called in this scenario.


2. As Tom mentioned, what qualifies busy. When threadsafe option was
implemented in GAE these 3 Always On instances were able to do most of
the heavy lifting with occasional spinning of dynamic instances.
Nothing has changed on our side that should alter this behavior. With
all these changes happening within GAE I am trying to figure out what
changed and what we can do to contain this burst of traffic within 3
(or more ) Always On instances with less frequent spinning of Dynamic
instances.


3. - 2 Minutes ago all your instances Always On + Dynamic were busy
again and the scheduler spawned a new Dynamic instance that handle 7
incoming requests. 
Again what constitutes busy as I do not see any request being served
by Always On instances 2 and 3 in last 1 hour. Note that number of
requests served by Always On 2/3 are unchanged since they were
created ...
Here's my reading in this scenario:
a. It kills Dynamic Instance 1 within 2 minutes of serving a request
b. When traffic comes in it looks only for Dynamic Instances if they
are busy and completely ignores Always On instances at this point
c. It recreates Dynamic Instance 1

In other words, what rule is applied in this case?

Also I fail to understand rule 4 as both Rob and Luca mentioned. That
completely undermines having Always On instances under threadsafe
mode.

4. I like Rob's suggestion of better load balancing techniques but
again with a caveat that an instance needs to be able to serve
multiple threads before reaching a set capacity (80% or so)

5. Luca's suggestion also makes sense but again with the same
caveat ... it should be able to process multiple threads before
queuing

6. I looked at the new sliders in the Admin console and with those the
situation is even worse. I set the Max Idle Instances to 3 (that's the
minimum I could choose) and Min Pending Latency to 15 secs ... Guess
what our CPU usage has gone up to 15 in 12 hrs because of constant
creation and killing of 3 dynamic instances. Bare minimum traffic and
few light weight crons.
But the good side is now I see requests coming in on the 3 Always On
instances. Is that enough load they are serving ... I don't know yet
but something to observe.


Two things I suggest would be really helpful for us:
A. The overall key here is to know the thread handling capacity of an
instance. Better yet if it can be configured similar to Backends but
dynamic in nature (and of course Backends pricing is outrageous ...
but that's another topic)
B. Able to add more Always On instances but again with a dependency
explained in point A.

Hope it makes sense.

Thanks,
galoch





On Jul 22, 7:57 am, Johan Euphrosine pro...@google.com wrote:
 HI Galoch,

 Thanks for the followup,

 I think you are experiencing a combinaison fo the two following rules
 I was pointing to in my previous email:
 ( reads as has priority for handling the incoming request)
 2/ Spawning a new Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 Applied to your example it could means that:
 Resident Instance 1:   Requests: 49     Age: 1Hr
 Resident Instance 2:   Requests: 6      Age: 1Hr
 Resident Instance 3:   Requests: 2      Age: 1Hr
 Dynamic Instance 1:   Requests: 7      Age: 2min
 Dynamic Instance 2:   Requests: 291  Age: 1Hr
 Dynamic Instance 3:   Requests: 322  Age: 1Hr

 - 1 Hours ago while all your Always On instance were busy and you had
 a burst of incoming requests and the scheduler spawned new Dynamic
 instances as per rule 2/ highlighted above.
 - After the burst and back to normal traffic the new Dynamic Instances
 were handing incoming requests in priority as per rule 4/ highlighted
 above.
 - 2 Minutes ago all your instances Always On + Dynamic were busy again
 and the scheduler spawned a new Dynamic instance that handle 7
 incoming requests.

 Hope that make more sense for you and Francois, but as I said earlier
 we are open to suggestion and I will make sure someone working on the
 scheduler team monitor this thread for your input.









 On Fri, Jul 22, 2011 at 9:09 AM, Galoch galoch...@gmail.com wrote:
  @Johan,
  The issue is not about Always On instance being busy. Its actually the
  other way ... the Always On instance is never busy ... at least that
  is what we observed in last 3-4 days. Your explanation may be partly
  true since this behavior keeps on changing.

  For e.g. I have a snapshot of instances from July 19th and here's the
  

[google-appengine] Re: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread c h
hi all,

i *think* that it is honoring your datastore location (though the log 
message is incorrect), but the change to rename your application to 
dev~your appname in development has just rendered all of our test data 
useless.

after re-importing my test data it does look like it is stored where i ask 
it to be, but under the new application name.

if you are lucky enough to be using sqlite you can connect to the db and 
rename some tables to get it to work:

sqlite3 local_appname_dev_sqlite.datastore
sqlite .tables
Apps  
IdSeq 
Namespaces
appname!!Entities
appname!!EntitiesByProperty  
appname!namespace!Entities  
appname!namespace!EntitiesByProperty
sqlite alter table `appname!!Entities` rename to `dev~appname!!Entities`;
sqlite alter table `appname!!EntitiesByProperty` rename to 
`dev~appname!!EntitiesByProperty`;
sqlite alter table `appname!namespace!Entities` rename to 
`dev~appname!namespace!Entities`;
sqlite alter table `appname!namespace!EntitiesByProperty` rename to 
`dev~appname!namespace!EntitiesByProperty`;


where you substitute 'appname' for your application's name, and 'namespace' 
for your datanamespace.

cfh

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/HvLD9aX68dYJ.
To post to this group, send email to google-appengine@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] App Engine Weekly Community Update #1

2011-07-22 Thread Rodrigo Moraes
Hi Jay,
This was also posted on Google Plus:

https://plus.google.com/111042085517496880918/posts/exjJoZwygq1

Until there're brand pages on g+, and then the weekly update could be posted 
on a 'App Engine' profile, you can follow Johan using the link above.

-- rodrigo

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/lBsHKUaKDiUJ.
To post to this group, send email to google-appengine@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: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Matthew Blain
That's a clever way to update the appid. I do not know if it works for
all cases (e.g. it may not work for all reference properties (stored
keys)) but is a neat trick.

Another way to deal with it is to use the  --default_partition= flag
rather than using an older version of the sdk.

--Matthew

On Jul 22, 12:17 pm, c h how...@umich.edu wrote:
 hi all,

 i *think* that it is honoring your datastore location (though the log
 message is incorrect), but the change to rename your application to
 dev~your appname in development has just rendered all of our test data
 useless.

 after re-importing my test data it does look like it is stored where i ask
 it to be, but under the new application name.

 if you are lucky enough to be using sqlite you can connect to the db and
 rename some tables to get it to work:

 sqlite3 local_appname_dev_sqlite.datastore
 sqlite .tables
 Apps                                          
 IdSeq                                        
 Namespaces                                    
 appname!!Entities                        
 appname!!EntitiesByProperty              
 appname!namespace!Entities          
 appname!namespace!EntitiesByProperty
 sqlite alter table `appname!!Entities` rename to `dev~appname!!Entities`;
 sqlite alter table `appname!!EntitiesByProperty` rename to
 `dev~appname!!EntitiesByProperty`;
 sqlite alter table `appname!namespace!Entities` rename to
 `dev~appname!namespace!Entities`;
 sqlite alter table `appname!namespace!EntitiesByProperty` rename to
 `dev~appname!namespace!EntitiesByProperty`;

 where you substitute 'appname' for your application's name, and 'namespace'
 for your datanamespace.

 cfh

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: GAE starting unnecessary instances

2011-07-22 Thread Tom Phillips
The current behavior makes me suspect we are being prepared for Always-
on being replaced completely by the new scheduler knobs. Being able to
turn up the number of idle instances does make always-on somewhat
redundant, as long as the idle instances stick around for a while.

Also, if always-on instances WERE being properly utilized right now,
it would require artificial load to ascertain the effects of the new
scheduler on dynamic instances (assuming the three AO instances were
sufficient for your app previously). Many devs wouldn't learn about
the new scheduler attributes until after their app (suddenly) becomes
popular - not the best time for surprises. And Google wouldn't get as
much feedback on the features/behavior of the new scheduler.

Is Always-on going to be kept under the new model?

/Tom


On Jul 22, 10:57 am, Johan Euphrosine pro...@google.com wrote:
 HI Galoch,

 Thanks for the followup,

 I think you are experiencing a combinaison fo the two following rules
 I was pointing to in my previous email:
 ( reads as has priority for handling the incoming request)
 2/ Spawning a new Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 Applied to your example it could means that:
 Resident Instance 1:   Requests: 49     Age: 1Hr
 Resident Instance 2:   Requests: 6      Age: 1Hr
 Resident Instance 3:   Requests: 2      Age: 1Hr
 Dynamic Instance 1:   Requests: 7      Age: 2min
 Dynamic Instance 2:   Requests: 291  Age: 1Hr
 Dynamic Instance 3:   Requests: 322  Age: 1Hr

 - 1 Hours ago while all your Always On instance were busy and you had
 a burst of incoming requests and the scheduler spawned new Dynamic
 instances as per rule 2/ highlighted above.
 - After the burst and back to normal traffic the new Dynamic Instances
 were handing incoming requests in priority as per rule 4/ highlighted
 above.
 - 2 Minutes ago all your instances Always On + Dynamic were busy again
 and the scheduler spawned a new Dynamic instance that handle 7
 incoming requests.

 Hope that make more sense for you and Francois, but as I said earlier
 we are open to suggestion and I will make sure someone working on the
 scheduler team monitor this thread for your input.



 On Fri, Jul 22, 2011 at 9:09 AM, Galoch galoch...@gmail.com wrote:
  @Johan,
  The issue is not about Always On instance being busy. Its actually the
  other way ... the Always On instance is never busy ... at least that
  is what we observed in last 3-4 days. Your explanation may be partly
  true since this behavior keeps on changing.

  For e.g. I have a snapshot of instances from July 19th and here's the
  details (for some reason I can't see a link to attach the snapshot
  images here):
  Resident Instance 1:   Requests: 49     Age: 1Hr
  Resident Instance 2:   Requests: 6      Age: 1Hr
  Resident Instance 3:   Requests: 2      Age: 1Hr
  Dynamic Instance 1:   Requests: 7      Age: 2min
  Dynamic Instance 2:   Requests: 291  Age: 1Hr
  Dynamic Instance 3:   Requests: 322  Age: 1Hr

  This is under no load with only very light weight cron jobs running.
  This gets much much worse during the day under peak load with requests
  for dynamic instances reaching 1000+ in matter of minutes and resident
  instances have only 1 request served.

  As you see above Resident Instance 2 and 3 are hardly hit so I don't
  think they are busy at all. On the other hand, Dynamic Instance 2 and
  3 get most of the hits.

  Dynamic Instance 1 is what is killing us. It keeps getting killed and
  reborn within that 5 minute window!!

  We use Spring framework and it is really very expensive for us when a
  new instance starts up.

  Just to give you a background, we had gone through a real roller
  coaster ride to make this to work on GAE by breaking the loading of
  framework into many different chunks. But still spinning was out of
  control. Then we found java threads to our rescue. We worked through
  the hack to load JDO to avoid UnsupportedOperationException. We
  finally got it to work where most of our requests were served by
  Always On instances with occasional spinning of Dynamic instances. It
  was quite impressive.

  Unfortunately, this was short lived when we hit this new behavior with
  GAE. The very last thing we want GAE to do is create a new instance
  every few minutes as it could easily reach 30 second deadline during
  the day and throw critical error.

  I am not sure when the new billing will come into effect but we really
  need this thing fixed as it literally brings down our app to a
  grinding halt. So I am open to any suggestions you guys think can help
  us.

  Another thought about new scheduler is to have a configurable
  schedule. For e.g. our users are mostly business users who work during
  normal business hours. We want to be able to spin more Always On
  instances during those hours and bring the number down during nights
  and weekends. Dynamic instances won't work for us due to reason
  explained 

Re: [google-appengine] App Engine Weekly Community Update #1

2011-07-22 Thread Barry Hunter
Maybe a Google Alert for

site:groups.google.com/group/google-appengine/ intitle:App Engine
Weekly Community Update


http://www.google.com/alerts/

On Fri, Jul 22, 2011 at 5:30 PM, Jay jbaker.w...@gmail.com wrote:
 This is a really great summary, a nice service Johan. Thank you for taking
 the time.
 I missed the IRC discussion. I'm sure one of the things discussed there was
 something about the best way to publish this. Obviously this group is a
 must. I'm trying to figure out a way where I can get this topic Weekly
 Community Update in email or rss. Anyone have any ideas?
 -- Jay

 --
 You received this message because you are subscribed to the Google Groups
 Google App Engine group.
 To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine/-/N5ej2Ri4YiUJ.
 To post to this group, send email to google-appengine@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-appengine@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 Weekly Community Update #1

2011-07-22 Thread Geoffrey Spear


On Jul 22, 10:34 am, Johan Euphrosine pro...@google.com wrote:
 I'd love to track the actual resolution of questions but we miss
 metadata to check if a question has been answered.

 Maybe we (as the community) can agree on some convention were we use
 nickname++ people as a signal of the question of the current thread
 being answered, or we (community) can decide to shift those question
 to Stack Overflow and keep the group for more casual discussion.

Since you mention StackOverflow and linked to some interesting
questions in the update, I wonder if anyone with http://data.stackexchange.com
skills could produce similar metrics from the google-app-engine tag on
SO.

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Re: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread Chris Copeland
Thanks, Matthew.

I was able to update to 1.5.2 and use my existing datastore by adding that
flag.

It would have been useful if the release notes had mentioned that this would
be necessary.

-Chrsi

On Fri, Jul 22, 2011 at 2:39 PM, Matthew Blain matthew.bl...@google.comwrote:

 That's a clever way to update the appid. I do not know if it works for
 all cases (e.g. it may not work for all reference properties (stored
 keys)) but is a neat trick.

 Another way to deal with it is to use the  --default_partition= flag
 rather than using an older version of the sdk.

 --Matthew

 On Jul 22, 12:17 pm, c h how...@umich.edu wrote:
  hi all,
 
  i *think* that it is honoring your datastore location (though the log
  message is incorrect), but the change to rename your application to
  dev~your appname in development has just rendered all of our test data
  useless.
 
  after re-importing my test data it does look like it is stored where i
 ask
  it to be, but under the new application name.
 
  if you are lucky enough to be using sqlite you can connect to the db and
  rename some tables to get it to work:
 
  sqlite3 local_appname_dev_sqlite.datastore
  sqlite .tables
  Apps
  IdSeq
  Namespaces
  appname!!Entities
  appname!!EntitiesByProperty
  appname!namespace!Entities
  appname!namespace!EntitiesByProperty
  sqlite alter table `appname!!Entities` rename to
 `dev~appname!!Entities`;
  sqlite alter table `appname!!EntitiesByProperty` rename to
  `dev~appname!!EntitiesByProperty`;
  sqlite alter table `appname!namespace!Entities` rename to
  `dev~appname!namespace!Entities`;
  sqlite alter table `appname!namespace!EntitiesByProperty` rename to
  `dev~appname!namespace!EntitiesByProperty`;
 
  where you substitute 'appname' for your application's name, and
 'namespace'
  for your datanamespace.
 
  cfh

 --
 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.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-appengine@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: path/wildcards on GAE Boto get_bucket()?

2011-07-22 Thread David Cheney
Cross posting answer .. thanks to Mike @ groups.google.com/group/gs-
discussion

The REST API doesn't directly support wildcard request. You can ask
for a
prefix, (you can see documentation for this here
http://code.google.com/apis/storage/docs/reference-
headers.html#prefix)
but not (for example) gs://bucket/*.txt

gsutil has a library that does the wildcarding you want: please see
http://code.google.com/p/gsutil/source/browse/trunk/src/gslib/wildcar...

(Or if you just need to do some wildcarding from the command line, you
can
use gsutil rather than the library inside gsutil)

==

On Jul 21, 1:34 pm, David Cheney david.che...@gmail.com wrote:
 Apologies if this is a FAQ.. not found an answer via search..

 From within GAE, using python, I want to get a list of objects in a
 GSD bucket:

             uri = boto.storage_uri('mybucket','gs')
             names = ''
             for obj in uri.get_bucket():
                 names = names +   + obj.name

 This works handily but returns all items.. when what I care about is a
 subset.

 My objective is to get a list of images on a certain path as I would
 get with a /a/b/*.jpg

 I can obviously parse the list myself, but was hoping I'd missed magic
 somewhere in the libs.

 Thanks,
 DJC

-- 
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.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: SDK Upgrade 1.5.2: --datastore_path ignored?

2011-07-22 Thread c h
yup the sqlite updates don't quite seem to work.

i second that the release notes should be updated, the flag does seem to 
work for me

cfh

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/Wi0krMFaQ6MJ.
To post to this group, send email to google-appengine@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: GAE starting unnecessary instances

2011-07-22 Thread Robert Kluin
I've suspected the same thing.  So far we've seen no pricing info for
always on and questions about it have went unanswered.  Not to mention
that $2.10 / week for three always-on instances is a lot different
than $40 / week.


Robert



On Fri, Jul 22, 2011 at 15:46, Tom Phillips tphill0...@gmail.com wrote:
 The current behavior makes me suspect we are being prepared for Always-
 on being replaced completely by the new scheduler knobs. Being able to
 turn up the number of idle instances does make always-on somewhat
 redundant, as long as the idle instances stick around for a while.

 Also, if always-on instances WERE being properly utilized right now,
 it would require artificial load to ascertain the effects of the new
 scheduler on dynamic instances (assuming the three AO instances were
 sufficient for your app previously). Many devs wouldn't learn about
 the new scheduler attributes until after their app (suddenly) becomes
 popular - not the best time for surprises. And Google wouldn't get as
 much feedback on the features/behavior of the new scheduler.

 Is Always-on going to be kept under the new model?

 /Tom


 On Jul 22, 10:57 am, Johan Euphrosine pro...@google.com wrote:
 HI Galoch,

 Thanks for the followup,

 I think you are experiencing a combinaison fo the two following rules
 I was pointing to in my previous email:
 ( reads as has priority for handling the incoming request)
 2/ Spawning a new Dynamic instance  Busy Always On instance
 4/ Idle Dynamic instance  Idle Always On instance

 Applied to your example it could means that:
 Resident Instance 1:   Requests: 49     Age: 1Hr
 Resident Instance 2:   Requests: 6      Age: 1Hr
 Resident Instance 3:   Requests: 2      Age: 1Hr
 Dynamic Instance 1:   Requests: 7      Age: 2min
 Dynamic Instance 2:   Requests: 291  Age: 1Hr
 Dynamic Instance 3:   Requests: 322  Age: 1Hr

 - 1 Hours ago while all your Always On instance were busy and you had
 a burst of incoming requests and the scheduler spawned new Dynamic
 instances as per rule 2/ highlighted above.
 - After the burst and back to normal traffic the new Dynamic Instances
 were handing incoming requests in priority as per rule 4/ highlighted
 above.
 - 2 Minutes ago all your instances Always On + Dynamic were busy again
 and the scheduler spawned a new Dynamic instance that handle 7
 incoming requests.

 Hope that make more sense for you and Francois, but as I said earlier
 we are open to suggestion and I will make sure someone working on the
 scheduler team monitor this thread for your input.



 On Fri, Jul 22, 2011 at 9:09 AM, Galoch galoch...@gmail.com wrote:
  @Johan,
  The issue is not about Always On instance being busy. Its actually the
  other way ... the Always On instance is never busy ... at least that
  is what we observed in last 3-4 days. Your explanation may be partly
  true since this behavior keeps on changing.

  For e.g. I have a snapshot of instances from July 19th and here's the
  details (for some reason I can't see a link to attach the snapshot
  images here):
  Resident Instance 1:   Requests: 49     Age: 1Hr
  Resident Instance 2:   Requests: 6      Age: 1Hr
  Resident Instance 3:   Requests: 2      Age: 1Hr
  Dynamic Instance 1:   Requests: 7      Age: 2min
  Dynamic Instance 2:   Requests: 291  Age: 1Hr
  Dynamic Instance 3:   Requests: 322  Age: 1Hr

  This is under no load with only very light weight cron jobs running.
  This gets much much worse during the day under peak load with requests
  for dynamic instances reaching 1000+ in matter of minutes and resident
  instances have only 1 request served.

  As you see above Resident Instance 2 and 3 are hardly hit so I don't
  think they are busy at all. On the other hand, Dynamic Instance 2 and
  3 get most of the hits.

  Dynamic Instance 1 is what is killing us. It keeps getting killed and
  reborn within that 5 minute window!!

  We use Spring framework and it is really very expensive for us when a
  new instance starts up.

  Just to give you a background, we had gone through a real roller
  coaster ride to make this to work on GAE by breaking the loading of
  framework into many different chunks. But still spinning was out of
  control. Then we found java threads to our rescue. We worked through
  the hack to load JDO to avoid UnsupportedOperationException. We
  finally got it to work where most of our requests were served by
  Always On instances with occasional spinning of Dynamic instances. It
  was quite impressive.

  Unfortunately, this was short lived when we hit this new behavior with
  GAE. The very last thing we want GAE to do is create a new instance
  every few minutes as it could easily reach 30 second deadline during
  the day and throw critical error.

  I am not sure when the new billing will come into effect but we really
  need this thing fixed as it literally brings down our app to a
  grinding halt. So I am open to any suggestions you guys think can help
  us.

  Another thought about new