Re: [appengine-java] Re: GAE commercial use!
Yes, I have started reading it now, it looks good :) thanks. Any comment on commercial grade system deployment using appengine for java? On Wed, Jun 16, 2010 at 6:33 AM, Didier Durand durand.did...@gmail.comwrote: Hi, Go for this book http://www.amazon.com/Programming-Google-App-Engine-Infrastructure/dp/059652272X/ref=sr_1_1?ie=UTF8s=booksqid=1276659135sr=1-1 Great (written by a googler) especially on datastore didier On Jun 15, 10:42 am, Muhammad Ijaz Khan aija...@gmail.com wrote: Hi, Is there a commercial big sized service running on appengine platform? It will be highly appreciable if someone can link to a book for google appengine for java too. Thanks. regards, Ijaz -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] updating 2-3 entities
Hi All, I have roughly the following entities for the accounting application Invoice { @id double amount } Payment { @id double amount @embedded InvoiceApplied[] } InvoiceApplied { Long invoiceId double appliedamount } I get the Payment amount, then I apply the payment amount to various invoices in the embeded 'InvoiceApplied'. I want to update the status of the Invoice as 'PAID', if the amount is fully applied for the invoice. The Invoice and Payment entities are not in the same entitygroup. For simplicity, I have shown only two entities, but there are 1-2 more entities which need to be updated as well. I am not making them as part of the same entity group (by using a common parent). I am refraining to create them with a common parent key for now, because of the limitations of the writes/sec on the entitygroup. What choices I have, to guarantee that the data is updated in all the entities? -Aswath -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: SecurityException with Hessian on google app engine
I posted a new bug report to the Hessian people: http://bugs.caucho.com/view.php?id=4080 There is also some information about this bug here: http://groups.google.com/group/google-appengine-java/browse_thread/thread/ccb9d0ff6b88545/ On Jun 8, 10:31 am, Matija matija.jerko...@gmail.com wrote: Any news about this SecurityException ? Matija. On Jun 5, 4:46 pm, dilbert dilbert.elbo...@gmail.com wrote: I am having trouble with Hessian on Google App Engine. First I will describe the setup. I have a persistent class MessageDb declared as (It contains a String and an arraylist of strings): @PersistenceCapable public class MessageDb { @PrimaryKey private String user; @Persistent private ArrayListString words = new ArrayListString(); /* getters and setters ...*/ } I have the following service interface: public interface IService { ArrayListString testMessage(); /* Some other methods ... */ } The Service is implemented on App engine in the following way: public class Service extends HessianServlet implements IService { private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory(transactions-optional); @Override public ArrayListString testMessage() { PersistenceManager pm = null; try { pm = pmfInstance.getPersistenceManager(); MessageDb messageDb; try { messageDb = pm.getObjectById(MessageDb.class, testMessage); } catch (JDOObjectNotFoundException e) { return null; } return messageDb.getWords(); //return new ArrayListString(messageDb.getWords()); } finally { if (pm != null) pm.close(); } } } The service simply retrieves an MessageDb object by key and returns the object's ArrayListString. This code works fine on the local development server but it fails when deployed on remote Google servers with the following exception: java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on private int java.util.ArrayList.size at com.google.appengine.runtime.Request.process-0c4ab611241850c6(Request.java) at java.lang.reflect.Field.setAccessible(Field.java:166) at com.caucho.hessian.io.JavaSerializer.introspect(JavaSerializer.java: 122) at com.caucho.hessian.io.JavaSerializer.init(JavaSerializer.java: 81) at com.caucho.hessian.io.JavaSerializer.create(JavaSerializer.java: 95) at com.caucho.hessian.io.SerializerFactory.getDefaultSerializer(SerializerFact ory.java: 348) at com.caucho.hessian.io.SerializerFactory.loadSerializer(SerializerFactory.ja va: 278) at com.caucho.hessian.io.SerializerFactory.getSerializer(SerializerFactory.jav a: 224) at com.caucho.hessian.io.SerializerFactory.getObjectSerializer(SerializerFacto ry.java: 197) at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java: 418) at com.caucho.hessian.io.AbstractHessianOutput.writeReply(AbstractHessianOutpu t.java: 558) at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java: 323) at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java: 202) at com.caucho.hessian.server.HessianServlet.invoke(HessianServlet.java: 389) at com.caucho.hessian.server.HessianServlet.service(HessianServlet.java: 369) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlo bUploadFilter.java: 97) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionF ilter.java: 35) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans actionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 418) at
[appengine-java] Re: SecurityException with Hessian on google app engine
I posted a new bug report to the Hessian people: http://bugs.caucho.com/view.php?id=4080 There is also some information about this bug here: http://groups.google.com/group/google-appengine-java/browse_thread/thread/ccb9d0ff6b88545/ On Jun 8, 10:31 am, Matija matija.jerko...@gmail.com wrote: Any news about this SecurityException ? Matija. On Jun 5, 4:46 pm, dilbert dilbert.elbo...@gmail.com wrote: I am having trouble with Hessian on Google App Engine. First I will describe the setup. I have a persistent class MessageDb declared as (It contains a String and an arraylist of strings): @PersistenceCapable public class MessageDb { @PrimaryKey private String user; @Persistent private ArrayListString words = new ArrayListString(); /* getters and setters ...*/ } I have the following service interface: public interface IService { ArrayListString testMessage(); /* Some other methods ... */ } The Service is implemented on App engine in the following way: public class Service extends HessianServlet implements IService { private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory(transactions-optional); @Override public ArrayListString testMessage() { PersistenceManager pm = null; try { pm = pmfInstance.getPersistenceManager(); MessageDb messageDb; try { messageDb = pm.getObjectById(MessageDb.class, testMessage); } catch (JDOObjectNotFoundException e) { return null; } return messageDb.getWords(); //return new ArrayListString(messageDb.getWords()); } finally { if (pm != null) pm.close(); } } } The service simply retrieves an MessageDb object by key and returns the object's ArrayListString. This code works fine on the local development server but it fails when deployed on remote Google servers with the following exception: java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on private int java.util.ArrayList.size at com.google.appengine.runtime.Request.process-0c4ab611241850c6(Request.java) at java.lang.reflect.Field.setAccessible(Field.java:166) at com.caucho.hessian.io.JavaSerializer.introspect(JavaSerializer.java: 122) at com.caucho.hessian.io.JavaSerializer.init(JavaSerializer.java: 81) at com.caucho.hessian.io.JavaSerializer.create(JavaSerializer.java: 95) at com.caucho.hessian.io.SerializerFactory.getDefaultSerializer(SerializerFact ory.java: 348) at com.caucho.hessian.io.SerializerFactory.loadSerializer(SerializerFactory.ja va: 278) at com.caucho.hessian.io.SerializerFactory.getSerializer(SerializerFactory.jav a: 224) at com.caucho.hessian.io.SerializerFactory.getObjectSerializer(SerializerFacto ry.java: 197) at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java: 418) at com.caucho.hessian.io.AbstractHessianOutput.writeReply(AbstractHessianOutpu t.java: 558) at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java: 323) at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java: 202) at com.caucho.hessian.server.HessianServlet.invoke(HessianServlet.java: 389) at com.caucho.hessian.server.HessianServlet.service(HessianServlet.java: 369) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlo bUploadFilter.java: 97) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionF ilter.java: 35) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans actionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 418) at
[appengine-java] Re: What is the best option for RPC (web services) on App engine?
I posted a new bug report: http://bugs.caucho.com/view.php?id=4080 I would like to move further discussion about this issue to the proper place: http://groups.google.com/group/google-appengine-java/browse_thread/thread/c4fb4f414c425ca1 D. On Jun 16, 12:12 am, Jeff Schnitzer j...@infohazard.org wrote: I would close the old issue and create a new one cut down to just the exception issue. *Are* there any serious RPC alternatives right now? Sounds like gwt-syncproxy isn't quite ready for prime time (and makes me nervous since it's not using a published protocol), the *-WS stuff is a trainwreck, and *-RS is not really convenient as an RPC layer. I would like alternatives. Jeff On Tue, Jun 15, 2010 at 2:41 PM, dilbert dilbert.elbo...@gmail.com wrote: At the time I thought the issues were connected since they threw the same exception so I posted them together. So should I post the issue with exceptions again on the Caucho bug tracker? If this issue is solved I would recommend Hessian as the best RPC mechanism for GAE at this time. Apologies to other readers for the offtopic with bugs. D. On Jun 15, 11:24 pm, Jeff Schnitzer j...@infohazard.org wrote: I think you did yourself a disservice by wrapping these two issues into a single message - it ends up being way too much text to read and otherwise eager volunteers just skip it. The first issue looks like you're not detaching your entities before serializing them. This is a JDO issue. I suggest dropping JDO and using something simpler like Objectify ;-) The issue with exceptions looks more serious. This is something that will need to be fixed in Hessian (or your custom serializer). If you cut down your issue to just this, you might get better results from Caucho. Jeff On Tue, Jun 15, 2010 at 1:55 PM, dilbert dilbert.elbo...@gmail.com wrote: Hi Jeff. I was hoping to hear from You since I saw that You solved some GAE issues on the hessian-interest list. I already posted the issue on the hessian-interest list here: http://maillist.caucho.com/pipermail/hessian-interest/2010-June/00090... I also posted several forum questions: http://forum.caucho.com/showthread.php?t= http://groups.google.com/group/google-appengine-java/browse_thread/th... And a few bug reports: http://bugs.caucho.com/view.php?id=4061 http://code.google.com/p/googleappengine/issues/detail?id=3305 The posts actually describe two issues one with arraylist serialization and the other with exception serialization. The posts also include test projects with code that reproduces the issues. I also managed to solve the issue today by using a custom serializer. Here is how. First the Serializer: public class ThrowableSerializer extends AbstractSerializer { �...@override public void writeObject(Object obj, AbstractHessianOutput out) throws IOException { if (obj != null) { final Class cl = obj.getClass(); if (out.addRef(obj)) return; int ref = out.writeObjectBegin(cl.getName()); Throwable tr = (Throwable) obj; ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); try { oos.writeObject(tr); if (ref -1) { out.writeString(value); out.writeBytes(bos.toByteArray()); out.writeMapEnd(); } else { if (ref == -1) { out.writeInt(1); out.writeString(value); out.writeObjectBegin(cl.getName()); } out.writeBytes(bos.toByteArray()); } } finally { oos.close(); bos.close(); } } else out.writeNull(); } } The other class we need is the Deserializer: public class ThrowableDeserializer extends AbstractDeserializer { //private static final Logger l = Logger.getLogger(ThrowableDeserializer.class.getName()); �...@override public Class getType() { return Throwable.class; } �...@override public Object readMap(AbstractHessianInput in) throws IOException { int ref = in.addRef(null); byte[] initValue = null; while (!in.isEnd()) { String key = in.readString(); if (key.equals(value)) initValue = in.readBytes(); else in.readString(); } in.readMapEnd(); ByteArrayInputStream bis = new ByteArrayInputStream(initValue); ObjectInputStream ois = new ObjectInputStream(bis); try { Object value = ois.readObject(); in.setRef(ref,
[appengine-java] Memcache namespace - setNamespace() deprecated in 1.3.4
In SDK 1.3.4 the method MemcacheService.setNamespace(String ns) was deprecated. Instead of that one should use MemcacheServiceFactory.getMemcacheService(String ns). When using the new one, the name of the namespace is validated against pattern, but this validation is not done when calling the old (deprecated) method: String namespace = TEST:One; MemcacheService msOld = MemcacheServiceFactory.getMemcacheService(); // deprecation warning by compiler, but OK at runtime: msOld.setNamespace( namespace ); // no warning by compiler, but throws exception at runtime: MemcacheService msNew = MemcacheServiceFactory.getMemcacheService( namespace ); The exception is: java.lang.IllegalArgumentException: Namespace 'TEST:One' does not match pattern '[0-9A-Za-z._-]{0,100}'. I think that this behaviour should be documented in low-level API at least. Thanks Vaclav -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Intermittent Issue with Datastore Writes
Here is the code for reference. For background, there is a class called OMRUser which is a user class, and there is Location3 class. There is a one to many owned relationship between a user and locations snippet of USER class: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class OmrUser { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private User gaeuser; @Persistent(mappedBy = omruser) @Element(dependent = true) private ListLocation3 userlocs; @Persistent(mappedBy = omruser) @Element(dependent = true) private ListDriver userdrivers; @Persistent private String accounttype; snippet of Location class: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Location3 implements ComparableLocation3 { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private OmrUser omruser; snippet of servlet to save locations PersistenceManager pm = PMF.get().getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); String select_query = select from + OmrUser.class.getName(); Query query = pm.newQuery(select_query); query.setFilter(gaeuser == paramAuthor); query.declareParameters(java.lang.String paramAuthor); ListOmrUser omruserquery = (ListOmrUser) pm.newQuery(query).execute(user); if(omruserquery.iterator().hasNext()) { OmrUser thisomruser = omruserquery.iterator().next(); if(thisomruser.getNumlocs()MaxSaveLocs){ thisomruser.addSingleLoc(location); location.setOmruser(thisomruser); pm.makePersistent(location); log.info(Adding Location to existing OMR User); } else { msg = You have exceeded the maximum number of locations you can save, please delete a location first.; log.info(FAIL - Exceed max num locs); } } else { OmrUser newuser = new OmrUser(user, Basic); newuser.addSingleLoc(location); pm.makePersistent(newuser); location.setOmruser(newuser); log.info(Created new user + newuser.getGaeuser().getEmail()); } tx.commit(); } finally { if (tx.isActive()) { tx.rollback(); } } On Jun 15, 9:39 pm, shaz ssh...@gmail.com wrote: Hi, I have a functioning app and recently have had intermittent problems writing to the datastore. I did not make any relevant code changes, however in the last few days my attempts to write to the datastore sometimes work and sometimes don't. I am trying to save an object that is in a many to one relationship with an existing persisted parent. So, the logic works like this: - Parent pulled from the datastore - Child created / instantiated using constructor - Parent.addSingleChild(child); // the addSingleChild method just adds the object argument to the collection of children - child.setParent(Parent); // sets the Parent object to the parent field I am using transactions as explained in the documentation ending with finally {if (tx.isActive()) {tx.rollback(); } } When the servlet is called, the parent is called from the datastore and the child object is created and added to the many to one mapping to the pre-existing parent. The child should automatically be persisted, since the parent is already persistent, and the child is added to the collection of children that map to the parent. And it worked this way in the past. However, to be sure, i did add a pm.makePersistent(child). Doesn't seem to help, still have the intermittent problem. Any suggestions would be appreciated, and if you need to see the actual code I can post. Thanks appid is omrtest -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] SAX Parser not working
Dear All, I am taking an RSS file as an inputstream and trying to parse it using Sax Parser. I want the title the description to be stored in an array list. The code is working perfectly as a Java Application but when implemented in App Engine it doesn't give me the result. The Code for the same is as below : parser.parse(inStream); out.println(handler.getList().size()); //Handler is an object of NewsHandler which extends DefaultHandler for(int i = 1 ; i=handler.list.size(); i++) { out.println(i); out.println(handler.list.get(i).getDescription()); } Please help. Thanks!! -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] JSP compilation gets stuck with simple Spring Roo project with dummy.jsp
I created project with Spring Roo: project --topLevelPackage my.tryouts persistence setup --provider DATANUCLEUS --database GOOGLE_APP_ENGINE entity --class ~.domain.MyEntity field string --fieldName name controller all --package ~.web perform eclipse No I added empty dummy.jsp to src\main\webapp\WEB-INF\views to make google app engine to compile jspx-files in that directory. mvn clean gae:deploy This gives me: ... [INFO] Webapp assembled in [682 msecs] [INFO] Building war: C:\Users\Tomi\workspace\springRoo\last\target \lauber-0.1.0-SNAPSHOT.war [INFO] [gae:deploy {execution: default-cli}] [INFO] Updating Google App Engine Server... There is a new version of the SDK available. --- Latest SDK: Release: 1.3.4 Timestamp: Sat May 15 00:26:11 EEST 2010 API versions: [1.0] --- Your SDK: Release: 1.3.2 Timestamp: Wed Mar 17 21:19:29 EET 2010 API versions: [1.0] --- Please visit http://code.google.com/appengine for the latest SDK. Reading application configuration data... Jun 16, 2010 10:13:49 AM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml INFO: Successfully processed C:/Users/Tomi/workspace/springRoo/last/ target/lauber-0.1.0-SNAPSHOT\WEB-INF/appengine-web.xml Jun 16, 2010 10:13:49 AM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml INFO: Successfully processed C:/Users/Tomi/workspace/springRoo/last/ target/lauber-0.1.0-SNAPSHOT\WEB-INF/web.xml Beginning server interaction for laubertea... 0% Creating staging directory 5% Scanning for jsp files. 8% Compiling jsp files. And I see this jsp compilation phase for hours. To make sure that the older SDK-version does not interfere compilation I deployed this with appcfg.cmd update of SDK 1.3.4. Still the same result. Spring Roo generated JSP-files take advantage of custom taglibs following way: xmlns:page=urn:jsptagdir:/WEB-INF/tags/form When I remove all the references to these custom taglibs the deploying will get message: 2010-06-16 10:17:20,402 [main] ERROR DataNucleus.Plugin - Bundle org.datanucleus.store.appengine requires org.datanucleus version [1.0.4, 1.1.5.f inal) but the resolved bundle has version 1.0.7.final which is outside the expected range. However jsp compilation works without tagdir references. How can I get this working with custom tagdirs? I have tested to set used Java SDK excplicitely in appcfg.cmd and copied Java SDK tools.jar to appengine-java-sdk-1.3.4\lib\shared, but this does not have any effect. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Prerelease SDK 1.3.5 is out!
Hey developers! We've release the prerelease SDK for 1.3.5. Get it here: http://code.google.com/p/googleappengine/downloads/list If you want to try out new features locally before they go live, here's your chance. We welcome any feedback you have. Release notes for Java are below: Version 1.3.5 = - Ability to configure the Task Queue storage limit with the total-storage-limit field in the queue.xml file. - Task Queues now support up to 50 qps per queue, up from 50 qps per app. - Developers can programmatically access Blobs with BlobstoreInputStream, which provides an InputStream view of a blob in Blobstore - Content-range headers for Blobs are supported. - Bulkloader transform helpers for lists and hierarchical keys were added. - Remote API commands can be sent over HTTPS or HTTP. - Admin Console logs now include information on request time latency. - Fixed an issue where requesting /appstats would not properly direct to /appstats/. - Fixed an issue with inconsistent URL mappings between the SDK and production. http://code.google.com/p/googleappengine/issues/detail?id=2598 -- 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 -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: GAE commercial use!
Check this out: http://code.google.com/appengine/business Stephen On Jun 16, 3:07 am, Muhammad Ijaz Khan aija...@gmail.com wrote: Yes, I have started reading it now, it looks good :) thanks. Any comment on commercial grade system deployment using appengine for java? On Wed, Jun 16, 2010 at 6:33 AM, Didier Durand durand.did...@gmail.comwrote: Hi, Go for this book http://www.amazon.com/Programming-Google-App-Engine-Infrastructure/dp... Great (written by a googler) especially on datastore didier On Jun 15, 10:42 am, Muhammad Ijaz Khan aija...@gmail.com wrote: Hi, Is there a commercial big sized service running on appengine platform? It will be highly appreciable if someone can link to a book for google appengine for java too. Thanks. regards, Ijaz -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2B unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: GAE deployments high rate of failures
Hi Don, Now that is a good incentive to upgrade :-) (we are still on 1.3.2 indeed). Jerome On Jun 16, 5:18 pm, Don Schwarz schwa...@google.com wrote: Try upgrading to the 1.3.4 SDK. On Wed, Jun 16, 2010 at 10:14 AM, Jerome jerome.mou...@gmail.com wrote: Same here, for the past few weeks, deploying our application to GAE often take 5 or more attempts (we are very happy when we can deploy on the 2nd try). The issues we are getting rotate between: - failure after Will check again in 128 seconds - a message that we have too many versions (even though we have been keeping our versions to 3-5 these past few weeks) - a 500 on the deployment Is this a general issue acknowledged by Google, or is there something to be tweaked on our app settings by Google? Jerome On Jun 11, 10:23 am, Miroslav Genov mgenov.j...@gmail.com wrote: Still encountering the same problem in the last 4-5 days. I don't know whether this is connected with the last datastore outage, but it's really annoying that I must wait 15 minutes to upload a new version. 40% Uploading 0 files. 52% Initializing precompilation... 90% Deploying new version. 95% Will check again in 1 seconds 98% Will check again in 2 seconds 99% Will check again in 4 seconds 99% Will check again in 8 seconds 99% Will check again in 16 seconds 99% Will check again in 32 seconds 99% Will check again in 64 seconds 99% Will check again in 128 seconds 99% Rolling back the update. Regards, Miroslav On 06/02/2010 10:53 PM, Miroslav Genov wrote: Today all day I get the same error when trying to upload an updated version of my application. I try to remove one existing version (currently I have 5 version of my app) but the administrative panel is failing with the following error: A server error has occurred.. Any idea what is causing it ? Also I wanna mention that the upload of my application is really slow and I have to wait several minutes to upload only 1 file change. Regards, Miroslav On 05/06/2010 03:20 PM, Tim Yates wrote: Hiya! For the past 3 hours, been trying to update my app engine java instance, but have been getting the error: Error posting to URL: https://appengine.google.com/api/appversion/deploy?app_id=check-email... 403 Forbidden Too Many Versions (403) The application already has the maximum number of versions. I see on the system status that things are under investigation http://code.google.com/status/appengine/ Is this one of the things being investigated? Tim PS: I only have a single version deployed, and this version is set to be the default -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Prerelease SDK 1.3.5 is out!
Why are not included all the demos of the svn? For example: autoshoppehttp://www.google.com/codesearch/p?hl=es#Qx8E-7HUBTk/trunk/java/demos/autoshoppe/q=junit%20package:http://googleappengine%5C.googlecode%5C.com . Thanks. 2010/6/16 Ikai L (Google) ika...@google.com Hey developers! We've release the prerelease SDK for 1.3.5. Get it here: http://code.google.com/p/googleappengine/downloads/list If you want to try out new features locally before they go live, here's your chance. We welcome any feedback you have. Release notes for Java are below: Version 1.3.5 = - Ability to configure the Task Queue storage limit with the total-storage-limit field in the queue.xml file. - Task Queues now support up to 50 qps per queue, up from 50 qps per app. - Developers can programmatically access Blobs with BlobstoreInputStream, which provides an InputStream view of a blob in Blobstore - Content-range headers for Blobs are supported. - Bulkloader transform helpers for lists and hierarchical keys were added. - Remote API commands can be sent over HTTPS or HTTP. - Admin Console logs now include information on request time latency. - Fixed an issue where requesting /appstats would not properly direct to /appstats/. - Fixed an issue with inconsistent URL mappings between the SDK and production. http://code.google.com/p/googleappengine/issues/detail?id=2598 -- 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 -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] AppEngineConfigException: XML error validating on Uploading files using Deploy App Enginer Project
Hi, What steps will reproduce the problem? 1. On my local machine, I have a text ssma_stud.txt under folder WEB-INF/ ssma_std.txt. I read this text file, validate data. Its working fine. 2. After successful testing on local machine, while deploying it using Deploy App Enginer Project , plug-in on eclipse, I got following error What is the expected output? What do you see instead? Here is the error logs... com.google.apphosting.utils.config.AppEngineConfigException: XML error validating C:\NC\Eclipse_Proj\LGDesign\war\WEB-INF\appengine-web.xml against C:\eclipse_Galileo\plugins \com.google.appengine.eclipse.sdkbundle. 1.3.4_1.3.4.v201005212032\appengine-java-sdk-1.3.4\docs\appengine- web.xsd at com.google.appengine.tools.admin.Application.validateXml(Application.java: 336) at com.google.appengine.tools.admin.Application.init(Application.java: 89) at com.google.appengine.tools.admin.Application.readApplication(Application.java: 127) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.createAppAdmin(AppEngineBridgeImpl.java: 204) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 265) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 145) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'system-properties'. One of '{http://appengine.google.com/ns/1.0:static-files, http:// appengine.google.com/ns/1.0:resource-files, http:// appengine.google.com/ns/1.0:env-variables, http:// appengine.google.com/ns/1.0:ssl-enabled, http:// appengine.google.com/ ns/1.0:sessions-enabled, http://appengine.google.com/ns/1.0:user- permissions, http://appengine.google.com/ns/1.0:public-root, http:// appengine.google.com/ns/1.0:inbound-services, http:// appengine.google.com/ns/1.0:precompilation-enabled, http:// appengine.google.com/ns/1.0:admin-console}' is expected. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java: 195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java: 131) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java: 384) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java: 318) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator $XSIErrorReporter.reportError(XMLSchemaValidator.java:410) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java: 3165) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java: 1777) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java: 685) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java: 400) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java: 648) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java: 140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java: 510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java: 807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java: 737) at com.sun.org.apache.xerces.internal.jaxp.validation.StreamValidatorHelper.validate(StreamValidatorHelper.java: 144) at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java: 107) at javax.xml.validation.Validator.validate(Validator.java:127) at com.google.appengine.tools.admin.Application.validateXml(Application.java: 333) ... 7 more What version of the product are you using? On what operating system? - App Engine SDK-1.3.4, - whereas same application was previously uploaded to websteeldes...@gmail.com with SDK-1.3.2 ( older application was without reading text file) Additional information: Mr Ikai from google help me read text filem where he asked to move text file from folder war to WEB-INF (Re: [appengine-java] Need help on java.security.AccessControlException: access denied) -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For
[appengine-java] Re: Prerelease SDK 1.3.5 is out!
What is Remote API commands? On Jun 16, 2:06 pm, Ikai L (Google) ika...@google.com wrote: Hey developers! What We've release the prerelease SDK for 1.3.5. Get it here: http://code.google.com/p/googleappengine/downloads/list If you want to try out new features locally before they go live, here's your chance. We welcome any feedback you have. Release notes for Java are below: Version 1.3.5 = - Ability to configure the Task Queue storage limit with the total-storage-limit field in the queue.xml file. - Task Queues now support up to 50 qps per queue, up from 50 qps per app. - Developers can programmatically access Blobs with BlobstoreInputStream, which provides an InputStream view of a blob in Blobstore - Content-range headers for Blobs are supported. - Bulkloader transform helpers for lists and hierarchical keys were added. - Remote API commands can be sent over HTTPS or HTTP. - Admin Console logs now include information on request time latency. - Fixed an issue where requesting /appstats would not properly direct to /appstats/. - Fixed an issue with inconsistent URL mappings between the SDK and production. http://code.google.com/p/googleappengine/issues/detail?id=2598 -- 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 -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: GAE deployments high rate of failures
had the same problem... all deployment issues went away with 1.3.4 (and you can now have 100 versions per app - someone said ... neat) On Jun 16, 2:13 pm, Jerome jerome.mou...@gmail.com wrote: Hi Don, Now that is a good incentive to upgrade :-) (we are still on 1.3.2 indeed). Jerome On Jun 16, 5:18 pm, Don Schwarz schwa...@google.com wrote: Try upgrading to the 1.3.4 SDK. On Wed, Jun 16, 2010 at 10:14 AM, Jerome jerome.mou...@gmail.com wrote: Same here, for the past few weeks, deploying our application to GAE often take 5 or more attempts (we are very happy when we can deploy on the 2nd try). The issues we are getting rotate between: - failure after Will check again in 128 seconds - a message that we have too many versions (even though we have been keeping our versions to 3-5 these past few weeks) - a 500 on the deployment Is this a general issue acknowledged by Google, or is there something to be tweaked on our app settings by Google? Jerome On Jun 11, 10:23 am, Miroslav Genov mgenov.j...@gmail.com wrote: Still encountering the same problem in the last 4-5 days. I don't know whether this is connected with the last datastore outage, but it's really annoying that I must wait 15 minutes to upload a new version. 40% Uploading 0 files. 52% Initializing precompilation... 90% Deploying new version. 95% Will check again in 1 seconds 98% Will check again in 2 seconds 99% Will check again in 4 seconds 99% Will check again in 8 seconds 99% Will check again in 16 seconds 99% Will check again in 32 seconds 99% Will check again in 64 seconds 99% Will check again in 128 seconds 99% Rolling back the update. Regards, Miroslav On 06/02/2010 10:53 PM, Miroslav Genov wrote: Today all day I get the same error when trying to upload an updated version of my application. I try to remove one existing version (currently I have 5 version of my app) but the administrative panel is failing with the following error: A server error has occurred.. Any idea what is causing it ? Also I wanna mention that the upload of my application is really slow and I have to wait several minutes to upload only 1 file change. Regards, Miroslav On 05/06/2010 03:20 PM, Tim Yates wrote: Hiya! For the past 3 hours, been trying to update my app engine java instance, but have been getting the error: Error posting to URL: https://appengine.google.com/api/appversion/deploy?app_id=check-email... 403 Forbidden Too Many Versions (403) The application already has the maximum number of versions. I see on the system status that things are under investigation http://code.google.com/status/appengine/ Is this one of the things being investigated? Tim PS: I only have a single version deployed, and this version is set to be the default -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2B unsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Unable to URL Fetch Google chart
A URL Fetch of a Google chart fails. Attempting w/ the low level API in the development environment... String chart = http://chart.apis.google.com/chart?chs=250x100chd=t: 60,40cht=p3chl=Hello|World; FetchOptions options = FetchOptions.Builder.disallowTruncate().followRedirects(); HTTPRequest request = new HTTPRequest(new URL(chart), HTTPMethod.GET, options); HTTPResponse response = URLFetchServiceFactory.getURLFetchService().fetch(request); [java] java.lang.IllegalArgumentException: Invalid uri 'http:// chart.apis.google.com/chart?chs=250x100chd=t:60,40cht=p3chl=Hello| World': Invalid query [java] at org.apache.commons.httpclient.HttpMethodBase.init(Unknown Source) [java] at org.apache.commons.httpclient.methods.GetMethod.init(Unknown Source) What am I'm missing? Or perhaps this is a known issue or limitation? thanks! -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [google-appengine] Re: NeedIndexException - in production server
There isn't a solid time line for this, but it's on my short list ;-) (which actually doesn't seem to be that short as of late). Something to keep in mind though: Removing these limits won't make your query run faster. So it's a trade off between write vs read latency and cost (although adding more indexes should only affect write cost) and most web applications are read heavy. So you may still want to have these indexes once the limit is removed. When the limit is removed the only real difference will be the lack of an exception to force your hand (instead you would have to rely on appstats to figure out which queries to optimize). Once the limit is removed a really pathological query could have your users waiting up to 30 seconds for results (which we think is better than no results at all). On Tue, Jun 15, 2010 at 1:06 AM, Ravi msr...@gmail.com wrote: Hi Alfred Fuller, Thanks for your information, videos gave me lot of information. As per your suggestion I have added few composite index to avoid this exception still index are getting built. As we get exception on some queries, will add those to composite index. But this will eat my lot of CPU quota. Could you please tell me when will this restriction on query will be removed because we will plan our product enhancement accordingly. Thanks, Ravi On Jun 15, 4:57 am, Alfred Fuller arfuller+appeng...@google.comarfuller%2bappeng...@google.com wrote: Yes, you can create composite indexes that contain columns that are often queried together. The merge join algorithm will use these indexes to make queries that include those specific columns more efficient. Or if you see this error more often on some queries than others, create composite indexes for those queries (or the common columns between those queries) http://www.youtube.com/watch?v=ofhEyDBpngMat time 30:30 gives an example of this. On Mon, Jun 14, 2010 at 7:58 AM, Ravi msr...@gmail.com wrote: Hi Geoffrey Spear, Thanks for your clarification. We suspected the same reason. Last few days back our data was less around 20,000 rows there was no problem. Only when more data is added we are facing this problem. Our table is too large which is around 50 fields/columns and around 50,000 rows. Query filter is also dynamically generated (user selects few fields and submits). Our servlet will query database depending on the user selected fields. In this scenario we dont know which fields will be selected by user and certainly I cant have composite index for 50 combinations. Is there any work around for this problem?? Thanks, Ravi On Jun 14, 5:59 pm, Geoffrey Spear geoffsp...@gmail.com wrote: It's not a problem with indexing, it's a problem with your data. If you don't add composite indexes, the system will attempt to serve queries that contain only equality filters using a merge-join strategy, which is less efficient than a simple index lookup (with the benefit of not needing to add the indexes, which use space and write- time CPU). If your data becomes such that the query can not be done efficiently with the merge-join anymore, you'll start to see that exception and you'll need to add a composite index. On Jun 12, 2:00 am, Ravi msr...@gmail.com wrote: Hi Google Team, All these days our application was working fine and we have not changed any datastore index or codebase of our application. Everyday we upload new set of data to our application. Today also we have uploaded new set of data but today after uploading the data we are getting very strange exception as below: com.google.appengine.api.datastore.DatastoreNeedIndexException: The built-in indices are not efficient enough for this query and your data. Please add a composite index for this query.. An index is missing but we are unable to tell you which one due to a bug in the App Engine SDK. If your query only contains equality filters you most likely need a composite index on all the properties referenced in those filters. We are worried after seeing the above exception, we dont have any complex queries, all the queries contain equals to filter (==). We tested the same set of data and query in our development environment, it is working fine. For testing purpose, we uploaded the same set of data to our other testing appengine applcation, it is working fine there also. Only in our production system, we are getting DatastoreNeedIndexException. Could you please confirm is there any problem with the datastore indexing. Data stored in our production datastore is more than 0.5 GB, will thee be any problem in indexing if there is high amount of data. Application ID: bigpaisa2.appspot.com Latest application version: http://061102.latest.bigpaisa2.appspot.com - In this
[google-appengine] Re: OpenId : unable to retrieve record with openid User
Well, I was able to solve it by myself: did a SELECT __key__ query, fetched the last entity and deleted it. My undertanding is that the problem was generated by creating and storing a User object created with a federated_identity with no email address (blogger.com, in that specific case). The application must verify that this information is passed by the federated_provider and if not, ask the user to provide it via a web form or do not attempt to store the object. Thanks Roberto On 16 Giu, 01:05, Roberto roberto.previt...@gmail.com wrote: Sorry for the repost, but I am totally stuck. There is no way of removing the corrupted entity. App Id: test-pappa-mi Entity: Commissario (corrupted entity should be the last created of its kind) this is the stack trace: Traceback (most recent call last): File /base/python_runtime/python_lib/versions/1/google/appengine/ ext/webapp/__init__.py, line 511, in __call__ handler.get(*groups) File /base/data/home/apps/test-pappa-mi/1.342696057774496084/py/ admin.py, line 419, in get for commissario in Commissario.all(): File /base/python_runtime/python_lib/versions/1/google/appengine/ ext/db/__init__.py, line 1816, in next return self.__model_class.from_entity(self.__iterator.next()) File /base/python_runtime/python_lib/versions/1/google/appengine/ api/datastore.py, line 2082, in next self.__buffer = self._Next(self.__batch_size) File /base/python_runtime/python_lib/versions/1/google/appengine/ api/datastore.py, line 2028, in _Next return self._ProcessQueryResult(result) File /base/python_runtime/python_lib/versions/1/google/appengine/ api/datastore.py, line 2058, in _ProcessQueryResult return [Entity._FromPb(e) for e in result.result_list()] File /base/python_runtime/python_lib/versions/1/google/appengine/ api/datastore.py, line 760, in _FromPb value = datastore_types.FromPropertyPb(prop) File /base/python_runtime/python_lib/versions/1/google/appengine/ api/datastore_types.py, line 1597, in FromPropertyPb federated_identity=federated_identity) File /base/python_runtime/python_lib/versions/1/google/appengine/ api/users.py, line 104, in __init__ raise UserNotFoundError UserNotFoundError Thanks Roberto On 15 Giu, 12:10, Nick Johnson (Google) nick.john...@google.com wrote: Hi Roberto, What is your App ID? -Nick Johnson On Tue, Jun 15, 2010 at 11:04 AM, Roberto roberto.previt...@gmail.comwrote: Hi all, I have a serious problem with an application using OpenId autentication. I tested the app using using blogger.com as an openid provider and stored the User object in the Datastore, in a UserProfile table. Now it is not possible to retrieve the entity containing that User, raising UserNotFoundError. Even the remote Datastore Viewer crashes with the following message when querying the entity: Server Error A server error has occurred. Any help is appreciated. Thanks Roberto -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: @Google: App Engine / GData questions
Thanks a lot for the info. I've moved my question to the GData group. UUID would be a very good approach, right now I get back the UID back from the call (or not if it times out...). On 16 Jun., 01:42, Ikai L (Google) ika...@google.com wrote: Corporate applications run on App Engine. Here's a session from IO where our Corporate Engineering team discusses their experiences:http://www.youtube.com/watch?v=IzxdL4I0xTg As for your question about idempotence: There may be, but you'll likely get a better answer for this question from the GData team: http://groups.google.com/group/google-help-dataapi Interesting that contact creation isn't idempotent. If it doesn't exist already, for your use case, at least, it could be a good GData feature request to add a UUID to write operations such that after a successful write, writes become invalid for any subsequent call tagged with that UUID. On Tue, Jun 15, 2010 at 2:32 PM, dflorey daniel.flo...@gmail.com wrote: Hi there, two quick questions: - Are there any Google apps (like calendar, contacts etc.) running on app engine? - Are there any plans to let GData services participate in a transaction? Right now it's almost impossible to create idempotent tasks when using certain GData services. Example: When creating a contact I frequently get timeout exceptions from the Google contact servers, so I have no clue whether a contact has been created or not. When the task gets executed multiple times (for whatever reason), I end up with duplicated contacts. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- 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 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: How do I model this more efficiently?
No - the MessageIndex has a list of subscribers, so you only need to create one for every, say, 500 or 1000 subscribers. -Nick Johnson 2010/6/15 Harshal p.hars...@gmail.com So essentially you are suggesting to create new MessageIndex per Message per subscriber. In case we happen to have 1 subscribers, for every message that is posted we would create 1 MessageIndex entities. Is that what you suggesting? 2010/6/16 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com Yes you can scale further. I think it is mentioned in the talk as well. Make MessageIndex a child of Message. Add multiple MessageIndex entities per Message. What I would do is create a new MessageIndex per Message on each subscriber. Then a cron job would periodically compact the MessageIndexes to maximize the number of subscribers in each of them. - alkis On Tue, Jun 15, 2010 at 10:51 PM, Harshal p.hars...@gmail.com wrote: Thanks for that info. I had seen it before posting here. The way suggested there is, class Message(db.Model): sender = db.StringProperty() body = db.TextProperty() class MessageIndex(db.Model): receivers = db.StringListProperty() If this is the best we can do, then aren't we limiting no. of receivers in list to maximum 5000? so we improved from my original model where only 30 was possible to 5000. Is there a way to scale up further? or are we hitting the glass ceiling ? Another thing that comes to mind is, every time a new message is created do we need to create 5000 (assuming 5000 entries in receivers list) new instances in form of children of new Message entity? On Wed, Jun 16, 2010 at 1:01 AM, Edward Smith edwardmsm...@gmail.comwrote: Check out this talk from IO 2009 - I believe it addresses your problem using a twitter-like example. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: Entity group question
On Tue, Jun 15, 2010 at 8:31 PM, Chris Killpack killp...@gmail.com wrote: Hi Nick, I'm a little confused - I pass in the parent instance when I create a new AnalyticsCounter inside the transaction closure, so it should be part of the same group. See the 'if counter is None' path in my code snippet. Did I miss something? I removed the transaction and using the datastore viewer and logging output, verified that the created entity's parent key matched the parent key I was creating. I'll try and post some of this to the thread later. Your sample code reads: self._parent_key = db.Key.from_path('AnalyticsCounter', 'virtual_root') self._parent_instance = AnalyticsCounter.get_or_insert(key_name='root') It looks like you're trying to modify the parent of an entity after it's created here. This isn't possible, and in any case you shouldn't be directly modifying internal properties of the model - nor should you be reading them in the transaction - use self.parent() instead. If this isn't what you're trying to do, can you provide your exact problematic code, including where you create the entities? -Nick Johnson Thanks for the QPS limit advice - I only plan on updating 10 entities every hour, so I'm hoping this isn't an issue. Technically I don't really need to use a transaction, so I can always remove it, but I'm stubborn dammit and this should work :) Chris On Jun 15, 1:15 am, Nick Johnson (Google) nick.john...@google.com wrote: Hi Chris, You need to specify the parent at creation time. There's no way to modify the parent of an entity after it's created. Bear in mind that updates to an entity group are limited to roughly 1QPS - so putting all your entities in one entity group is rarely a good idea. -Nick Johnson On Tue, Jun 15, 2010 at 4:12 AM, Chris Killpack killp...@gmail.com wrote: I have a set of entities all of the same kind, AnalyticsCounter, in my datastore. For correctness I would like to update many of these entities in a single transaction, which requires they are all in the same entity group. In my case I don't have a hierarchy, instead I just have a set of entities. My understanding is that I need to parent all of them to another AnalyticsCounter entity to achieve this. However when I tried this, I received the fateful Cannot operate on different entity groups in a transaction error.. I created the parent entity in my constructor, and then applied the parent when I created an instance of AnalyticsCounter, but the transaction fails on the put method. Interestingly the different entity groups lists both the newly created instance and the parent instance. I tried creating the parent two different ways, first just creating a key: self._parent_key = db.Key.from_path('AnalyticsCounter', 'virtual_root') and then, creating an actual instance. self._parent_instance = AnalyticsCounter.get_or_insert(key_name='root') but met the same failure on both cases. Briefly, my transaction looks like this: counters = [list of key_names] def txn(): counters = AnalyticsCounter.get_by_key_name(counters) for counter in counters: if counter is None: counter = AnalyticsCounter(parent=self._parent_instance, key_name='blah') counter.foo = 'bar' counter.put() # - dies here db.run_in_transaction(txn) Can someone shed some light on what I am doing wrong? Thanks, Chris -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com . To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send
Re: [google-appengine] Re: How do I model this more efficiently?
Ah my bad. Somehow overlooked the fact that its StringListProperty. Thanks Nick, appreciate your help. 2010/6/16 Nick Johnson (Google) nick.john...@google.com No - the MessageIndex has a list of subscribers, so you only need to create one for every, say, 500 or 1000 subscribers. -Nick Johnson 2010/6/15 Harshal p.hars...@gmail.com So essentially you are suggesting to create new MessageIndex per Message per subscriber. In case we happen to have 1 subscribers, for every message that is posted we would create 1 MessageIndex entities. Is that what you suggesting? 2010/6/16 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com Yes you can scale further. I think it is mentioned in the talk as well. Make MessageIndex a child of Message. Add multiple MessageIndex entities per Message. What I would do is create a new MessageIndex per Message on each subscriber. Then a cron job would periodically compact the MessageIndexes to maximize the number of subscribers in each of them. - alkis On Tue, Jun 15, 2010 at 10:51 PM, Harshal p.hars...@gmail.com wrote: Thanks for that info. I had seen it before posting here. The way suggested there is, class Message(db.Model): sender = db.StringProperty() body = db.TextProperty() class MessageIndex(db.Model): receivers = db.StringListProperty() If this is the best we can do, then aren't we limiting no. of receivers in list to maximum 5000? so we improved from my original model where only 30 was possible to 5000. Is there a way to scale up further? or are we hitting the glass ceiling ? Another thing that comes to mind is, every time a new message is created do we need to create 5000 (assuming 5000 entries in receivers list) new instances in form of children of new Message entity? On Wed, Jun 16, 2010 at 1:01 AM, Edward Smith edwardmsm...@gmail.comwrote: Check out this talk from IO 2009 - I believe it addresses your problem using a twitter-like example. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com . To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: Best practice? (to lock or not to lock)
Hi, On Tue, Jun 15, 2010 at 7:09 PM, coltsith conla...@gmail.com wrote: Hi Nick, thanks for responding. I understand. I think in that case I'll show an error like This game has been filled already, try refreshing to user B. I would suggest simply telling them that the game has been filled, then automatically refreshing - or at least removing the filled game - for them when they click okay. However I'd still like to lock part of my code, just to avoid race conditions and such. Could you point me in the right direction? Should I be looking into locks or transactions when read/writing the game list? There's no reason to use locks - simply use the built in support for transactions. http://code.google.com/appengine/docs/python/datastore/transactions.html -Nick Johnson Thanks On Jun 15, 5:49 pm, Nick Johnson (Google) nick.john...@google.com wrote: Hi, Locking won't help you here - consider the situation where user B fetches the list of games, and then user A 'takes' a game - say, half a second later, after user B's call completes, but before his browser finishes displaying it - you'll be left in the same situation. No matter how you handle things, there's always going to exist the possibility that immediately after you return a result set to user B, another user does something that makes that result set out of date. -Nick Johnson On Tue, Jun 15, 2010 at 3:48 PM, coltsith conla...@gmail.com wrote: Hi, I'm writing a simple game server where players can create games and browse games. I've come across the following dilemma though and want to see if my solution is a good idea. The dilemma: User A calls joinGameAndRemoveItFromList(). User B calls fetchAvailableGamesInList() at the same time. I'm concerned that User B may fetch the game that User A is joining and removing from list (since it's no longer available) My solution would be to lock the game list while User A is making his call. That way User B would wait until User A is done with the list. However, I realize that this could be very slow. Say there's thousands of players all wanting to browse the available games (hey it could happen!) and they shouldn't all have to wait for A to finish, especially if A is slow for some reason. Does anyone have any advice on if this is the right way to go, or if there's a better solution? 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.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: https://appengine.google.com
On Jun 15, 5:37 am, budaya c...@aprendelo.com wrote: It keeps telling me to create an application and even when all 10 done keeps asking and never shows me any other options. Anyone had the same problem? Try logging in at http://appengine.google.com/a/aprendelo.com -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: https://appengine.google.com
Jesus thanks, one gets used to some procedures and gets discombobulated by changes... -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] can not connect to appengine.google.com from china
i think it may be gfwed. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: MapReduce - less than half of the shards have items
Nick, It would be a great feature to allow us (developers) to define a custom partitioning function for the shards - unless you guys have some better magic in mind. It is very normal for us to see very poor distribution across our shards in practise - in fact, we've only seen poor distributions. j On Jun 15, 8:04 am, Nick Johnson (Google) nick.john...@google.com wrote: Hi Jason, The current implementation of the datastore mapper uses lexicographical sharding over keys to assign datastore shards. Unfortunately, this can lead to very inconsistent shard sizes, as you observe. -Nick Johnson On Fri, Jun 11, 2010 at 4:17 PM, Jason C jason.a.coll...@gmail.com wrote: We've been using MapReduce for App Engine for a couple of different jobs. Typically, we use 8 shards (the default), but it seems that only 3, sometime 4, of the shards have any items in them? E.g., we're currently running one job and three of the shards have 218,000 items processed, but the other 5 shards appear to have zero. I can understand that a particular key distribution would have different amounts in each shard, but with so many at zero, I suspect there is something else happening? BTW, we have applied the mapreduce-recommended __key__ DESC index, but we still see this strange shard distribution. Is anyone else seeing this? j -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: MapReduce - less than half of the shards have items
I guess this would be the magic that I'm looking for. ;) http://code.google.com/p/appengine-mapreduce/issues/detail?id=3 On Jun 15, 8:04 am, Nick Johnson (Google) nick.john...@google.com wrote: Hi Jason, The current implementation of the datastore mapper uses lexicographical sharding over keys to assign datastore shards. Unfortunately, this can lead to very inconsistent shard sizes, as you observe. -Nick Johnson On Fri, Jun 11, 2010 at 4:17 PM, Jason C jason.a.coll...@gmail.com wrote: We've been using MapReduce for App Engine for a couple of different jobs. Typically, we use 8 shards (the default), but it seems that only 3, sometime 4, of the shards have any items in them? E.g., we're currently running one job and three of the shards have 218,000 items processed, but the other 5 shards appear to have zero. I can understand that a particular key distribution would have different amounts in each shard, but with so many at zero, I suspect there is something else happening? BTW, we have applied the mapreduce-recommended __key__ DESC index, but we still see this strange shard distribution. Is anyone else seeing this? j -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: MapReduce - less than half of the shards have items
Hi Jason, It's possible to do that right now. You simply need to define your own InputReader - see the existing ones for examples how: http://code.google.com/p/appengine-mapreduce/source/browse/trunk/python/src/mapreduce/input_readers.py The best option is probably to extend the existing DatastoreInputReader, and override the split_input method. -Nick Johnson On Wed, Jun 16, 2010 at 4:17 PM, Jason C jason.a.coll...@gmail.com wrote: Nick, It would be a great feature to allow us (developers) to define a custom partitioning function for the shards - unless you guys have some better magic in mind. It is very normal for us to see very poor distribution across our shards in practise - in fact, we've only seen poor distributions. j On Jun 15, 8:04 am, Nick Johnson (Google) nick.john...@google.com wrote: Hi Jason, The current implementation of the datastore mapper uses lexicographical sharding over keys to assign datastore shards. Unfortunately, this can lead to very inconsistent shard sizes, as you observe. -Nick Johnson On Fri, Jun 11, 2010 at 4:17 PM, Jason C jason.a.coll...@gmail.com wrote: We've been using MapReduce for App Engine for a couple of different jobs. Typically, we use 8 shards (the default), but it seems that only 3, sometime 4, of the shards have any items in them? E.g., we're currently running one job and three of the shards have 218,000 items processed, but the other 5 shards appear to have zero. I can understand that a particular key distribution would have different amounts in each shard, but with so many at zero, I suspect there is something else happening? BTW, we have applied the mapreduce-recommended __key__ DESC index, but we still see this strange shard distribution. Is anyone else seeing this? j -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com . To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number: 368047 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: Datastore error:Authentication Failed while downloading data
I've the same problem with my Java application (webwinewatch). Does the bulk loader work with Federated Login ? I'm following Ikai's tutorial without success :-( Thanx for your help. On 5 mai, 15:50, suri suresh1d...@gmail.com wrote: Thanks wooble that's working now On May 4, 6:02 pm, Wooble geoffsp...@gmail.com wrote: On May 4, 5:08 am, suri suresh1d...@gmail.com wrote: Hi, I am new to Google App Engine.I am trying to download data from deployed application. but while executing download command it raised exception that 1.Exception during authentication 2.http error 404:Not Found 3.Authentication failed Do you have the: - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin stanza near the top of your app.yaml, before any catch-all handlers? -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: Datastore error:Authentication Failed while downloading data
In fact, it doesn't seem to work natively with FederatedLogin activated on your app : http://stackoverflow.com/questions/2981226/app-engine-remote-api-with-openid Will this get fixed anytime soon ? On 16 juin, 17:33, François Masurel fm2...@mably.com wrote: I've the same problem with my Java application (webwinewatch). Does the bulk loader work with Federated Login ? I'm following Ikai's tutorial without success :-( Thanx for your help. On 5 mai, 15:50, suri suresh1d...@gmail.com wrote: Thanks wooble that's working now On May 4, 6:02 pm, Wooble geoffsp...@gmail.com wrote: On May 4, 5:08 am, suri suresh1d...@gmail.com wrote: Hi, I am new to Google App Engine.I am trying to download data from deployed application. but while executing download command it raised exception that 1.Exception during authentication 2.http error 404:Not Found 3.Authentication failed Do you have the: - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin stanza near the top of your app.yaml, before any catch-all handlers? -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: Datastore error:Authentication Failed while downloading data
http://code.google.com/p/googleappengine/issues/detail?id=3258 On 16 juin, 17:33, François Masurel fm2...@mably.com wrote: I've the same problem with my Java application (webwinewatch). Does the bulk loader work with Federated Login ? I'm following Ikai's tutorial without success :-( Thanx for your help. On 5 mai, 15:50, suri suresh1d...@gmail.com wrote: Thanks wooble that's working now On May 4, 6:02 pm, Wooble geoffsp...@gmail.com wrote: On May 4, 5:08 am, suri suresh1d...@gmail.com wrote: Hi, I am new to Google App Engine.I am trying to download data from deployed application. but while executing download command it raised exception that 1.Exception during authentication 2.http error 404:Not Found 3.Authentication failed Do you have the: - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin stanza near the top of your app.yaml, before any catch-all handlers? -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Request was aborted after waiting too long to attempt to service your request
I need help my application show the next error: Request was aborted after waiting too long to attempt to service your request. This may happen sporadically when the App Engine serving cluster is under unexpectedly high or uneven load. If you see this message frequently, please contact the App Engine team. I created a cron job to keep alive the application, but the error persits, i need help to fix it. Thanks -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: https://appengine.google.com
thinks! but I got another problem, when I login dashboard I only can find six apps but cannot find another four. On 6月16日, 下午6时48分, Geoffrey Spear geoffsp...@gmail.com wrote: On Jun 15, 5:37 am, budaya c...@aprendelo.com wrote: It keeps telling me to create an application and even when all 10 done keeps asking and never shows me any other options. Anyone had the same problem? Try logging in athttp://appengine.google.com/a/aprendelo.com -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: Seeing a lot of ApplicationError 2 errors since maintenance?
I am seeing a similar error for our app. In some cases I get the response back and the status_code attribute is not populated, even though the response.content appears to be valid. Dave Tucker WebFilings On Jun 15, 8:17 am, Gavin Andresen gavinandre...@gmail.com wrote: I'm getting spuriousurlfetch.Errorexceptions that say they are ApplicationError:2 The relevant bit of python code: try: fetch_result =urlfetch.fetch(payment_server, deadline=10, method=POST, payload=secret +json_string, headers={ 'Content-Type' : 'text/ plain' }) excepturlfetch.Error, e: logging.error('make_bitcoin_request failed: '+str(e)) logging.error('Request:'+json_string) return None Log of a typicalerror: # 213.221.6.130 - - [15/Jun/2010:05:56:50 -0700] GET / HTTP/1.1 200 1391 - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/ 533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4,gzip(gfe) freebitcoins.appspot.com # E 06-15 05:56AM 50.232 make_bitcoin_request failed: ApplicationError:2 # E 06-15 05:56AM 50.233 Request:{params: [],jsonrpc:2.0,id:1276606609.99,method:getbalance} Note that the ApplicationError:2is the exception thrown by theurlfetch.fetch() call. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] APPS lost? help!
after I login to dashboard I only can find six apps but cannot find another four. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Database with google application engine
Hi, I am trying to develop and deploy a project with google application engine and for this I want to use Mysql5.0 as a database. Is it possible to use Mysql5.0 with GAE or google datastore is the only one option. If we can use Mysql5.0, how will i configure it online during the time of deployment. At localhost, I am trying to use Mysql5.0 with eclipse galileo3.5 with google eclipse plugin and sdk plugin and gwt plugin but it is giving the following error although I am using mysql- connector-java-5.0.3-bin.jar file for jdbc driver: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java: 151) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at database.dbConn.query(dbConn.java:137) at admin.AdminFunctions.verifyAdminLogin(AdminFunctions.java:16) at admin.AdminServ.doGet(AdminServ.java:46) at admin.AdminServ.doPost(AdminServ.java:112) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java: 51) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java: 122) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 418) at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java: 70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 152) at com.google.appengine.tools.development.JettyContainerService $ApiProxyHandler.handle(JettyContainerService.java:349) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 542) at org.mortbay.jetty.HttpConnection $RequestHandler.content(HttpConnection.java:938) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 409) at org.mortbay.thread.QueuedThreadPool $PoolThread.run(QueuedThreadPool.java:582) -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Is it possible to transfer an appid to a different account?
I am guessing that this is not possible, but I would like to transfer ownership of an appid to another user's account. Is that possible? Thanks, Jason -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: index building takes so long
Any chance index building could be optimized (prioritized) for new entity types? It's a shame to have to wait hours for a new index which will cover zero records and could probably be created w/ minimal effort. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Is it possible to transfer an appid to a different account?
You can add the other user as a developer, then remove yourself. On Wed, Jun 16, 2010 at 9:52 AM, Jason Rosenberg jbrosenb...@gmail.comwrote: I am guessing that this is not possible, but I would like to transfer ownership of an appid to another user's account. Is that possible? Thanks, Jason -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- 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 -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Prerelease SDK 1.3.5 is out!
Hey developers! We've release the prerelease SDK for 1.3.5. Get it here: http://code.google.com/p/googleappengine/downloads/list If you want to try out new features locally before they go live, here's your chance. We welcome any feedback you have. Release notes for Java/Python are below: Java = - Ability to configure the Task Queue storage limit with the total-storage-limit field in the queue.xml file. - Task Queues now support up to 50 qps per queue, up from 50 qps per app. - Developers can programmatically access Blobs with BlobstoreInputStream, which provides an InputStream view of a blob in Blobstore - Content-range headers for Blobs are supported. - Bulkloader transform helpers for lists and hierarchical keys were added. - Remote API commands can be sent over HTTPS or HTTP. - Admin Console logs now include information on request time latency. - Fixed an issue where requesting /appstats would not properly direct to /appstats/. - Fixed an issue with inconsistent URL mappings between the SDK and production. http://code.google.com/p/googleappengine/issues/detail?id=2598 Python = - Ability to configure the Task Queue storage limit with the total_storage_limit field in the queue.yaml file. - Task Queues now support up to 50 qps per queue, up from 50 qps per app. - Developers can programmatically access Blobs with BlobReader, a file-like interface for reading blobs. - Content-range headers for Blobs are supported. - Bulkloader transform helpers for lists and hierarchical keys were added. - Remote API commands can be sent over HTTPS or HTTP. - Admin Console logs now include information on request time latency. - Db.delete will now accept an iterable, in addition to a list of models or keys. - Fixed an issue properly handling a query with an offset that returns no results. - Fixed an issue that improperly allowed quad-dotted netmasks as subnet prefixes for the DoS API. - Fixed an issue via user submitted patch where the task queue used local time instead of UTC to compute ETA. http://code.google.com/p/googleappengine/issues/detail?id=2508 - Fixed an issue via user submitted patch in the SDK dataviewer displaying multiline StringProperties. http://code.google.com/p/googleappengine/issues/detail?id=502 -- Ikai Lan Developer Programs Engineer, Google App Enginehttp://code.google.com/p/googleappengine/issues/detail?id=502 Blog: http://code.google.com/p/googleappengine/issues/detail?id=502 http://googleappengine.blogspot.com Twitter: http://twitter.com/app_engine Reddit: http://www.reddit.com/r/appengine ppengine target=_blankhttp://www.reddit.com/r/appengine -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] OAuth Refuses to Authenticate Me
I'm working on an application that interfaces between App Engine, a Chrome Extension, and Android. I've managed to get the Chrome extension authenticating fine through OAuth (oddly, without ever using the App Engine OAuth library...? It just detected users.get_current_user()) but the Android client is giving me some trouble. I'm using Apache's HttpPost to send the request, and SignPost to sign it. My request is as follows: POST /links/add? oauth_signature=VPt6v7SEJ0xGv7TDLjPe5vtoc7E%3Doauth_token=1%2Fu0QvC- RMgDC9lq3B3PjFHjBZZ39colyxwj9q96qm-- ooauth_consumer_key=anonymousoauth_signature_method=HMAC- SHA1oauth_timestamp=1276711674oauth_nonce=-5410272903654758759 HTTP/ 1.1 with a single key/value pair attached. I keep receiving: Traceback (most recent call last): File /base/python_runtime/python_lib/versions/1/google/appengine/ ext/webapp/__init__.py, line 513, in __call__ handler.post(*groups) File /base/data/home/apps/android2cloud/1.342714137082534334/ main.py, line 44, in post elif oauth.get_current_user(): File /base/python_runtime/python_lib/versions/1/google/appengine/ api/oauth/oauth_api.py, line 86, in get_current_user _maybe_call_get_oauth_user() File /base/python_runtime/python_lib/versions/1/google/appengine/ api/oauth/oauth_api.py, line 152, in _maybe_call_get_oauth_user _maybe_raise_exception() File /base/python_runtime/python_lib/versions/1/google/appengine/ api/oauth/oauth_api.py, line 167, in _maybe_raise_exception raise InvalidOAuthParametersError InvalidOAuthParametersError Is this trying to tell me that my signature and token do not match, or am I doing something else wrong? The request is virtually identical to the Chrome extension that is working, so I can't figure out what the issue could be. Thanks, Paddy Foran -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] small query about Searchable Model
Hi, Just confirming what I have read so far about Searchable Model. If I have, Content(search.SearchableModel): content = db.StringProperty() If I got this correctly, out of all the entities that are going to get created by users only 5000 key words are available for searching. Is that the case? or I am missing something here? Thanks -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: 1 meg limit on processing images is really harshing my buz
So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: 1 meg limit on processing images is really harshing my buz
On Wed, Jun 16, 2010 at 9:32 PM, Kelly A kelly.j.ander...@gmail.com wrote: So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. The idea was to make images you can't load (due to their size) smaller so you can load them, In a way that would not bother your users. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working with images takes RAM. You want Google to buy more RAM for you but refuse to pay for it. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: Database with google application engine
Not possible. Datastore is the only option. If you want to use MySQL, you would have to host it on Amazon (or other such service) and then you'd have to set up all persistence operations to talk to the Amazon service. There is an SQL solution in the works for the Google App Engine for Business (for Google Apps domains only), but it has not been released yet. On Jun 16, 7:00 am, jitendra singh jks...@gmail.com wrote: Hi, I am trying to develop and deploy a project with google application engine and for this I want to use Mysql5.0 as a database. Is it possible to use Mysql5.0 with GAE or google datastore is the only one option. If we can use Mysql5.0, how will i configure it online during the time of deployment. At localhost, I am trying to use Mysql5.0 with eclipse galileo3.5 with google eclipse plugin and sdk plugin and gwt plugin but it is giving the following error although I am using mysql- connector-java-5.0.3-bin.jar file for jdbc driver: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(Iso latedAppClassLoader.java: 151) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at database.dbConn.query(dbConn.java:137) at admin.AdminFunctions.verifyAdminLogin(AdminFunctions.java:16) at admin.AdminServ.doGet(AdminServ.java:46) at admin.AdminServ.doPost(AdminServ.java:112) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFi lter.java: 51) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans actionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFile Filter.java: 122) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 418) at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEn gineWebAppContext.java: 70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 152) at com.google.appengine.tools.development.JettyContainerService $ApiProxyHandler.handle(JettyContainerService.java:349) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 542) at org.mortbay.jetty.HttpConnection $RequestHandler.content(HttpConnection.java:938) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 409) at org.mortbay.thread.QueuedThreadPool $PoolThread.run(QueuedThreadPool.java:582) -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: Request was aborted after waiting too long to attempt to service your request
From my understanding this error happens when a request hits an application instance but is put on a queue and becomes stale before other requests in front of it get out of the way and execute. Doesn't your cron job have to fire every second in order to keep the application alive? I thought that 1 request per second is the keep- alive boundary. It's somewhere around there. How often does your cron execute? On Jun 16, 5:51 am, Eduardo Perrino eduardo.perr...@gmail.com wrote: I need help my application show the next error: Request was aborted after waiting too long to attempt to service your request. This may happen sporadically when the App Engine serving cluster is under unexpectedly high or uneven load. If you see this message frequently, please contact the App Engine team. I created a cron job to keep alive the application, but the error persits, i need help to fix it. Thanks -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: 1 meg limit on processing images is really harshing my buz
Really bursts of RAM usage of up to 10 megs for the term of an image operation are not likely to increase RAM costs for the image API that much. The case of uploading and image is some what infrequent and they could impose quotas that would, force frequent users of large memory consumption to pay. Not to mention, the method you described uses the same amount of RAM to resize the image as my process would use. The JPEG still needs to be loaded into memory, decoded into another block of memory, resized into another bock of memory and then encoded into yet another block of memory with both processes. I am not saying that I don't want to pay, I am saying that the system should function on common data. I will happily pay when my AMOUNT of USAGE exceeds quotas, just like every other charge in Google App Engine. My specific point about turning on charging is not about paying any way, as I would not be using enough blob store to get charged, but having to go through extra steps to access something that should be considered basic functionality. The image API right now works like a building where all of the doors are too small for the average person to pass through. On Jun 16, 2:40 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Wed, Jun 16, 2010 at 9:32 PM, Kelly A kelly.j.ander...@gmail.com wrote: So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. The idea was to make images you can't load (due to their size) smaller so you can load them, In a way that would not bother your users. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working with images takes RAM. You want Google to buy more RAM for you but refuse to pay for it. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Re: 1 meg limit on processing images is really harshing my buz
Did they remove the requirement of turning on billing to access the blob store when they moved it out of beta? On Jun 16, 3:41 pm, Kelly A kelly.j.ander...@gmail.com wrote: Really bursts of RAM usage of up to 10 megs for the term of an image operation are not likely to increase RAM costs for the image API that much. The case of uploading and image is some what infrequent and they could impose quotas that would, force frequent users of large memory consumption to pay. Not to mention, the method you described uses the same amount of RAM to resize the image as my process would use. The JPEG still needs to be loaded into memory, decoded into another block of memory, resized into another bock of memory and then encoded into yet another block of memory with both processes. I am not saying that I don't want to pay, I am saying that the system should function on common data. I will happily pay when my AMOUNT of USAGE exceeds quotas, just like every other charge in Google App Engine. My specific point about turning on charging is not about paying any way, as I would not be using enough blob store to get charged, but having to go through extra steps to access something that should be considered basic functionality. The image API right now works like a building where all of the doors are too small for the average person to pass through. On Jun 16, 2:40 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Wed, Jun 16, 2010 at 9:32 PM, Kelly A kelly.j.ander...@gmail.com wrote: So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. The idea was to make images you can't load (due to their size) smaller so you can load them, In a way that would not bother your users. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working with images takes RAM. You want Google to buy more RAM for you but refuse to pay for it. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: 1 meg limit on processing images is really harshing my buz
I think you have a good point... the various 1MB limits are starting to feel rather antiquated in this day and age. Yeah, it's often possible to hack around them by chunking our data or using the blobstore or performing range requests... but bloody hell, it's a pain in the arse. Just a 2 or 3X increase would help a lot. 3MB url fetches and 3MB entities would make me breathe easier. BTW there is one issue you can't work around no matter what - while you can sometimes use range requests to download large files via the URLFetch service, there is no way to upload large files. You can't POST ranges. Jeff On Wed, Jun 16, 2010 at 1:41 PM, Kelly A kelly.j.ander...@gmail.com wrote: Really bursts of RAM usage of up to 10 megs for the term of an image operation are not likely to increase RAM costs for the image API that much. The case of uploading and image is some what infrequent and they could impose quotas that would, force frequent users of large memory consumption to pay. Not to mention, the method you described uses the same amount of RAM to resize the image as my process would use. The JPEG still needs to be loaded into memory, decoded into another block of memory, resized into another bock of memory and then encoded into yet another block of memory with both processes. I am not saying that I don't want to pay, I am saying that the system should function on common data. I will happily pay when my AMOUNT of USAGE exceeds quotas, just like every other charge in Google App Engine. My specific point about turning on charging is not about paying any way, as I would not be using enough blob store to get charged, but having to go through extra steps to access something that should be considered basic functionality. The image API right now works like a building where all of the doors are too small for the average person to pass through. On Jun 16, 2:40 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Wed, Jun 16, 2010 at 9:32 PM, Kelly A kelly.j.ander...@gmail.com wrote: So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. The idea was to make images you can't load (due to their size) smaller so you can load them, In a way that would not bother your users. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working with images takes RAM. You want Google to buy more RAM for you but refuse to pay for it. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To
[google-appengine] DataStore Viewer giving me ServerError
Hi, I've been doing refactoring for my datastore using the mapperapi which was released at Google I/O. Now when I'm going to view my data via the Dashboard - Datastore Viewer, I am more often than not getting the following error message: Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it. This also happens if I try to access : Dashboard - Datastore Statistics. If I try and refresh the DataStore Viewer page, I usually will get to the datastore viewer after 4-5 tries. I understood from Nick Johnson, this might be caused by TombStoned data entities that are no longer part of my datastore. my appid: socicount A related issue: when I'm trying to check the state of the impacted entity kind via remote console, I also get HTTP 500 error usually 4-5 times, before I'm able to query / get any entities which were impacted by refactoring of the datastore. is this something that is expected to to stay as a feature or likely going away in the future? At the moment, it's quite limiting not to have access to the datastore viewer ( even to the other entity kind's which were not affected by my refactoring ) and it's slowing down my development when I can't validate the current state of my datastore. cheers, risto -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Re: [google-appengine] Re: 1 meg limit on processing images is really harshing my buz
On Wed, Jun 16, 2010 at 10:41 PM, Kelly A kelly.j.ander...@gmail.comwrote: Really bursts of RAM usage of up to 10 megs for the term of an image operation are not likely to increase RAM costs for the image API that much. The case of uploading and image is some what infrequent and they could impose quotas that would, force frequent users of large memory consumption to pay. As for the case of uploading - image operations are not limited to uploading requests. Therefore I don't see how is frequency of uploading relevant to this. Not to mention, the method you described uses the same amount of RAM to resize the image as my process would use. The point is not to save memory during every transformation, but to help you cope with the limit when accepting images over which size you don't have control I think it is quite elegant and easy (to implement and explain) way of 1) imposing arbitraty memory-limit while 2) still giving user a way of coping with it. The image API right now works like a building where all of the doors are too small for the average person to pass through. As much as the analogy is inaccurate, the doors will always cost something and there will always be persons with above average height. Luckily for taller persons the building has another doors. (You're lucky person if opening console and enabling billing is what bothers you. :) There probably has to be some limit, so Google could have chosen way of A) simply rejecting all large uploads, B) let you access their degraded version. On Jun 16, 2:40 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Wed, Jun 16, 2010 at 9:32 PM, Kelly A kelly.j.ander...@gmail.com wrote: So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. The idea was to make images you can't load (due to their size) smaller so you can load them, In a way that would not bother your users. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working with images takes RAM. You want Google to buy more RAM for you but refuse to pay for it. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com . To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com . For more options, visit this group at
Re: [google-appengine] Re: 1 meg limit on processing images is really harshing my buz
maybe someone from Google is gonna correct me :) 2010/6/16 Jaroslav Záruba jaroslav.zar...@gmail.com On Wed, Jun 16, 2010 at 10:41 PM, Kelly A kelly.j.ander...@gmail.comwrote: Really bursts of RAM usage of up to 10 megs for the term of an image operation are not likely to increase RAM costs for the image API that much. The case of uploading and image is some what infrequent and they could impose quotas that would, force frequent users of large memory consumption to pay. As for the case of uploading - image operations are not limited to uploading requests. Therefore I don't see how is frequency of uploading relevant to this. Not to mention, the method you described uses the same amount of RAM to resize the image as my process would use. The point is not to save memory during every transformation, but to help you cope with the limit when accepting images over which size you don't have control I think it is quite elegant and easy (to implement and explain) way of 1) imposing arbitraty memory-limit while 2) still giving user a way of coping with it. The image API right now works like a building where all of the doors are too small for the average person to pass through. As much as the analogy is inaccurate, the doors will always cost something and there will always be persons with above average height. Luckily for taller persons the building has another doors. (You're lucky person if opening console and enabling billing is what bothers you. :) There probably has to be some limit, so Google could have chosen way of A) simply rejecting all large uploads, B) let you access their degraded version. On Jun 16, 2:40 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Wed, Jun 16, 2010 at 9:32 PM, Kelly A kelly.j.ander...@gmail.com wrote: So if I save an image into the blob store then load it from the blob store I can work on it as long as the result is smaller than 1 megabyte. this would be extremely inefficient in my case: 350k Jpeg stored as the primary image 10k Thumbnail created from that image I do not need to use blob store for these cases. current process: Get bits resize bits Save Bits Proposed process: Get bits save to Blob store Read from blob store resize bits save bits Since I am not storing anything larger than 1 megabyte I don't need to keep the blog store around so add in a delete to delete this temporary blob store item. The idea was to make images you can't load (due to their size) smaller so you can load them, In a way that would not bother your users. Plus I would need to turn on billing to even get this to work. so even though there is a work around here, I say it is still desirable for the Google App team to take a look at this and see that the current limitations on the Image API are not reasonable. Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working with images takes RAM. You want Google to buy more RAM for you but refuse to pay for it. On Jun 15, 3:17 pm, Jaroslav Záruba jaroslav.zar...@gmail.com wrote: On Tue, Jun 15, 2010 at 7:33 PM, Kelly A kelly.j.ander...@gmail.com wrote: Jaroslav, Yes you can save but if you call images.resize(imagebits, 100, 100) on an image that is greater than 1 megabyte it will throw RequestTooLargeError: The request to API call images.Transform() was too large.. http://code.google.com/appengine/docs/java/images/overview.html#Trans... import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesService; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.api.images.Transform; // ... BlobKey blobKey; // ... ImagesService imagesService = ImagesServiceFactory.getImagesService(); Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(200, 300); Image newImage = imagesService.applyTransform(resize, oldImage); byte[] newImageData = newImage.getImageData(); -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib e...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to