[appengine-java] Can pm.makePersistentAll() help me write 12,000 objects?
I have been trying to write 12,000 objects in a single page request. These objects are all very small and the total amount of memory is not large. There is no index on these objects - the only GQL queries I make on them are based on the primary key. Ikai has said: That is - if you have to delete or create 150 persistent, indexed objects, you may want to rethink what problems you are trying to solve. So I have been thinking about the problems I'm trying to solve, including looking at the BuddyPoke blog and reading the GAE documentation. I'm trying to populate the database with entries relating to high school timetables. * I could do the writes asynchronously, but that looks like a lot of additional effort. On my C++ app, writing the same information to my laptop drive, this happens in under a second, because the amount of data is actually quite small, but it times out on GAE. * I am using pm.makePersistentAll(), but this doesn't help. * There is no index on the objects - I access them only through the primary key. (I'm pretty sure there's no index - but how can I confirm this via the development server dashboard?) * The objects constitute 12,000 entity groups. I could merge them into fewer entity groups, but there's no natural groupings I could use, so it could get quite complex to introduce a contrived grouping, and also this would complicate the multi-user updating of the objects. The AppEngine team seem to generally recommend using more entity groups, but it's difficult to integrate that advice with the contrary advice to use fewer entity groups for acceptable performance. * I'd be happy if the GAE database was 10 times slower than a non-cloud RDBMS, but the way I'm using it, it's currently not. Does anyone have any advice? -- 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: Local datastore is empty after migrating to 1.3.1
Same problem On Feb 23, 10:21 pm, Scott Hernandez scotthernan...@gmail.com wrote: I got a read error when I tried running with my existing (v1.3.0) data-store file; I created a new one (by renaming the old one) and restarting. I suspect the internal format is different and the old format cannot be read. Whether this is by design or a bug is another question. On Tue, Feb 23, 2010 at 10:26 AM, David turntwo...@gmail.com wrote: I just upgraded to1.3.1and also hit this issue. I hope someone from the GAE team will soon comment on this behavior. I'm also curious how common a problem this is. Have other people upgraded to1.3.1and maintained their local data store? On Feb 17, 3:06 pm, mcrady mcr...@gmail.com wrote: Same here. If I switch back to 1.3.0 the local data is still there. Any workarounds to get to1.3.1with the local data? On Feb 13, 10:45 am, Brian bwa...@gmail.com wrote: My remotedatastorekept the data, mylocalone was wiped. Pretty easy to make a script to load a DB with test data, not really a good idea to rely on yourlocaldatastore... On Feb 12, 6:32 pm, mably fm2...@mably.com wrote: Same thing happened to me. Got an emptylocaldatastoreafterupdating to1.3.1. Hopefully I didn't have much data in it. But it might not be the case for everybody. On 12 fév, 09:35, Al Murauski a.murau...@gmail.com wrote: The Development Console tells Thedatastoreisemptyafterupdating to1.3.1. Any ideas why? I need mylocaldata back. The local_db file is not emoty and contain sthe data it contained before1.3.1migration.- Hide quoted text - - Show quoted text - -- 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: way to interactively query datastore?
I can offer only listing solution, based on our free GQL dynamic parser - http://audao.spoledge.com/download.jsp The full JSP you can find here: http://vaclavb.blogspot.com/2010/02/google-app-engine-data-viewer-gql-java.html The GQL parser (class GqlDynamic) converts GQL queries into low-level datastore API calls, so the basic code of fetching entities can be: import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.spoledge.audao.parser.gql.GqlDynamic; import java.util.List; ... GqlDynamic gqld = new GqlDynamic(); gqld.setDatastoreService( DatastoreServiceFactory.getDatastoreService()); String gql = SELECT * FROM MyEntity WHERE prop1='test' ORDER BY prop2 LIMIT 10; ListEntity result = gqld.prepareQuery( gql ).asList( gqld.getFetchOptions()); Then you just need to render the result in a JSP page. The GQL parser currently does not support operators '!=' and 'IN', but we are going to launch a new version in a few days which will support all GQL features. Vaclav On Feb 23, 7:17 am, David Lam david.k.l...@gmail.com wrote: Kind of an appengine noob here... is there something like the datastore viewer (i.e.http://localhost:8080/_ah/admin/datastore), but instead lets you try out arbitrary GQL by typing it in? -- 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] Chat Time transcript for February 17, 2010
Last Wednesday, the App Engine team hosted the latest session of its bimonthly IRC office hours. A transcript of the session and a summary of the topics covered is provided below. The next session will take place next Wednesday, March 3rd from 7:00-8:00 p.m. PST in the #appengine channel on irc.freenode.net. - Jason --SUMMARY--- - Q: What are my options do move my data from my App Engine datastore in production to my PC? A: For now, you have to use the bulkloader utility that ships with the Python SDK, but you can use this with Java- based apps as well -- see http://blog.notdot.net/2009/9/Advanced-Bulk-Loading-Part-5-Bulk-Loading-for-Java for details on setting up the appropriate handlers for a Java environment. [9:12-9:16] - Q: With the index row limit raised to 5,000, does this mean that I can build queries involving multiple list properties? A: Yes. You could do this before, technically, but you had to be more careful to avoid exploding indexes, which could be caused by querying large list properties. You still have to be concerned about this, but the larger limit does give you more flexibility. [9:19-9:22] - Discussion on using memcache to lock an entity for writing -- not recommended (memcache is designed as a cache first and foremost) but feasible. All the same, this should be avoided, especially since there are no guarantees made that memcache won't be cleared periodically, and you wouldn't want this locking metadata purged without warning. [9:32-9:40] - Discussion on mitigation strategies for contention -- in general, you only need to think about sharding or other mechanisms if you expect heavy contention (generally more than one write per second consistently) on a single entity or entity group. Otherwise, even if the occasional concurrent write request comes in, the system will automatically retry the write after any failures, so you don't need to alter your models to account for this. But for heavy contention, you can look at sharding, using the task queue API, or even dropping requests. [9:40-9:41, 9:43, 9:46-9:50] - Q: When MapReduce functionality is available, will it support global transactions? A: In general, global transactions are difficult to support in a distributed system. You can achieve a weak form of global transactions today with transactional tasks, which guarantee eventual consistency. [9:55-10:01] --FULL TRANSCRIPT--- [09:08am] nickjohnson: Welcome to the bi-weekly App Engine chat time! With us today are apijason_google and myself, with others to come. [09:09am] nickjohnson: If you're having trouble sending messages to the channel, please be patient, we're working on resolving that right now. [09:10am] apijason_google: Hi Everyone. [09:10am] lurkdev: hello [09:10am] cyonyx: hello [09:11am] cresloyd: hello [09:11am] webus: hello [09:11am] apijason_google: [09:12am] webus: how i can backup my data from GAE (BigTable) to my local PC ? [09:12am] nickjohnson: webus: Java, or Python? [09:13am] webus: java [09:15am] nickjohnson: For now, you need to use the Python bulkloader to load and dump data - see http://blog.notdot.net/2009/9/Advanced-Bulk-Loading-Part-5-Bulk-Loading-for-Java for details on setting up a handler, and http://code.google.com/appengine/docs/python/tools/uploadingdata.html#Downloading_and_Uploading_All_Data for details on dump and restore [09:15am] apijason_google: webus: I think the only way right now is to use the bulkloader tool that ships with the Python SDK. It should work with Java apps too, and we're working on a better Java solution. [09:15am] nickjohnson: ** If you're still having trouble sending to the channel, please send me a PM ** [09:15am] webus: thnx! [09:16am] cresloyd: there are third-party solutions to sync data between the datastore and external databases; I don't know if Googlers would want to recommend any of them, but you're welcome to try them of course [09:18am] ryan_google: hi! [09:19am] ryan_google: aha i can talk now [09:19am] nickjohnson: Hooray! [09:19am] nickjohnson: Anyone who was trying to talk, you can try again now. [09:19am] cyonyx: now that the 5000 index limit has been set for an entity, does that mean one can use more than one list property per model as long as they stay within the 5000? [09:20am] ryan_google: cyonyx: yes [09:20am] ryan_google: i assume you've read http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Big_Entities_and_Exploding_Indexes ? [09:22am] ryan_google: *crickets* [09:22am] cyonyx: i have read that thank you. the docs are great by the way. i was playing with some code and found that the 1000 limit was removed for a list, so I tried adding more than 5000 to that list and got an error [09:23am] ryan_google: hmm [09:23am] nickjohnson: cyonyx: The limit we removed was the 1000 result limit, and is unrelated to the max entries in a list. [09:24am] ryan_google:
[appengine-java] Chat Time transcript for February 3, 2010
The high-level summary and complete transcript of the February 3rd edition of the IRC office hours is pasted below. Please join us on the first and third Wednesday of every month in the #appengine channel on irc.freenode.net. On the first Wednesday, we meet in the channel from 7:00-8:00 p.m. PST (evening hours), and on the third Wednesday, we're available from 9:00-10:00 a.m. PST (morning hours). - Jason --SUMMARY--- - Most of the chat took place in another IRC channel because the usual channel was closed to unregistered users. As a result, the chat started later than usual. The next chats should take place in the regular channel: #appengine on irc.freenode.net. If you can't post, please register your nick by following the instructions at http://freenode.net/faq.shtml#registering. [7:12-7:15] - Discussion on datastore cursors, a premiere feature of the 1.3.1 release, which enable developers to work with result sets larger than 1,000. [7:16-7:22] - Q: As a developer of an app allowing users to upload content, what level of policing should I do to make sure the uploaded content does not violate App Engine's terms of service? A: You should not encourage or openly permit content in violation of the terms of service. This means that should you spot such content, you take care to remove it, and you also take care to do the same if a member of the App Engine team contacts you about any violations. For this type of violation, we will reach out to you first to give you an opportunity to remove the content before taking your application offline. [7:22-7:25, 7:27] - Q: Are there any plans to allow for larger URL fetch requests, up to 5+ MB? A: No plans at present, but please star this issue if you're interested: http://code.google.com/p/googleappengine/issues/detail?id=2735. It's possible that we could implement this feature similar to the way we increased the maximum image data size that could be operated on via the image service functions: by allowing blob keys to be passed rather than the raw data directly. Another idea is making the URL fetch service work with a callback, similar to blobstore. [7:25-7:29, 7:31-7:33, 7:39] - If multiple writes occur in a single transaction, they must be processed sequentially. This is because a transaction can only apply to entities in the same entity group, and an entity group cannot be updated while another update is taking place. Use entity groups only when necessary -- try to keep them as small as possible to maximize write throughput. [7:30-7:31, 7:33-7:34] - Follow-up on index inconsistency issues (issue 2481): we are taking this issue very seriously, and have devoted many hours so far tracking down the cause. For most apps that we have identified as being affected, we have manually corrected the problem indexes, but we're still working on the root cause. The team is making substantial progress and the timeline for a fix is weeks and not months. If you continue to see this problem, please add a comment to http://code.google.com/p/googleappengine/issues/detail?id=2481. [7:35, 7:38-7:40] - Discussion on google.appengine.tools.bulkloader.IncrementId implementation, whether it's hardened enough to prevent conflicts of auto-generated IDs, and whether a better implementation is coming. [7:42, 7:46] - Discussion on authentication using the Google Accounts service, how it's implemented and security mechanisms in place. [7:44-7:48] - Q: What are transactional tasks? A: Simply put, tasks that are added to queues when there is an active datastore transaction will be automatically enlisted in the datastore transaction so most of the time you won't actually need to get ahold of the active com.google.appengine.api.datastore.Transaction. [7:49, 7:53] - Discussion on pre-releases and need for a production sandbox where new back-ends can be released and tested without (potentially) breaking production apps. [7:54-7:55, 7:57] - Cool app which compares the performance of the different Java datastore APIs: http://gaejava.appspot.com/. The low-level API outperforms JDO/JPA, even though JDO and JPA are technically using the same underlying implementation as the low-level API, likely due to the ORM-layer overhead. [7:58-8:04, 8:10-8:11] - Poll: For developer-to-developer support, do you prefer Google Groups or Stack Overflow? [8:05-8:11] --FULL TRANSCRIPT--- [7:11pm] apijason_google: Ha ha. Anyway, we'll be here for the next 50 minutes at least. Ikai and I are here, Wesley is coming soon. Sorry for the technical difficulties. [7:12pm] _tmatsuo: perhaps you can register your nick on the net. [7:12pm] _tmatsuo: *on freenode.net [7:13pm] apijason_google: Yeah, after today's incident, we just might do that. [7:13pm] ikai_google: registered, no dice [7:13pm] ikai_google: I still can't post in the other forum [7:13pm] ikai_google: err channel [7:13pm] lambo4jos: hello everyone
[appengine-java] Re: cron jobs
Hi, I am trying to send email for every hour. i write the code of cron.xml like above.But now the admin console shows status as follows. Cron Job Schedule/Last Run/Last Status (All times are UTC) /emailing repeated every one hour every 1 hours (UTC) 2010-02-24 12:28:02 on time Too many continues anybody help me, Am i set sny extra setting in any fike.Please help me. thanks Lakshmi. On Feb 23, 11:41 am, lakshmi sowji.ap...@gmail.com wrote: Thanks for your reply, ok i will try it. Thanks, Lakshmi. On Feb 22, 11:52 pm, bimbo jones bimbojone...@gmail.com wrote: Hi, If you want to receive the 'cron' word every 1 minute try logging the result instead of printing, or sending a email to you. 2010/2/22 lakshmi sowji.ap...@gmail.com Hi, Thanks for your reply. The output for my present program is,the word a'cron' is printing only one time. But i want to print it for every minute. Please help me to get that result. Thanks, Lakshmi. On Feb 18, 7:10 pm, bimbo jones bimbojone...@gmail.com wrote: Hi, if you want it to be printed on the browser you should use pw.println(cron); pw.close(); instead of System.out.println(cron); 2010/2/18 Sowji sowji.ap...@gmail.com Hi, Please help me in cron jobs,in google app engine. My program main code is as follows. -- import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; import java.util.Timer; import java.util.TimerTask; import javax.jdo.PersistenceManager; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RepeatedResults extends HttpServlet { public PersistenceManager pm=PMF.getInstance().getPersistenceManager(); ListManager list; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType(text/plain); PrintWriter pw=resp.getWriter(); System.out.println(cron); } } this code i wrote for printing a word like cron nuber of times. My cron.xml is as follows. -- ?xml version=1.0 encoding=UTF-8? cronentries cron url/repeated/url descriptionrepeated every one minutes/description scheduleevery 1 minutes/schedule /cron /cronentries It was saved in war\WEB_INF My servlet for repeatedResults is as follws servlet servlet-nameRepeated/servlet-name servlet-classgoalsmanagement.RepeatedResults/servlet-class /servlet servlet-mapping servlet-nameRepeated/servlet-name url-pattern/repeated/url-pattern /servlet-mapping I access this url from a html file. but result is print only one time.not repeatedly. My cron job status in admin console is as follows cron Job Schedule/Last Run/Last Status (All times are UTC) /repeated repeated every one minutes every 1 minutes (UTC) 2010-02-18 08:54:49 on time Success could you please help me what was my mistake. thanks, Lakshmi. -- 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 google-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.-Hide quoted text - - Show quoted text - -- 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.-Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - -- 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
Re: [appengine-java] How to Install Google App Plugin for Eclipse Galileo
The following link explains how to install from zips: http://code.google.com/eclipse/docs/install-from-zip.html. On Tue, Feb 23, 2010 at 11:43 PM, Ashish Mishra ashish.mishr...@gmail.comwrote: Hi, I want to know, how can i install the plugin manually of Google App Engine. Since on my machine Eclipse is not able to install any plugin. It is giving some exception like this : Message: Unhandled event loop exception Exception Stack Trace: java.lang.IllegalStateException: Profile not locked due to exception: D:\eclipse 3.5\p2\org.eclipse.equinox.p2.engine\profileRegistry \SDKProfile.profile\.lock (Access is denied) at org.eclipse.equinox.internal.p2.engine.ProfileLock.lock(ProfileLock.java: 106) at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.restore(SimpleProfileRegistry.java: 371) at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.getProfileMap(SimpleProfileRegistry.java: 241) at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.internalGetProfile(SimpleProfileRegistry.java: 201) at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.getProfile(SimpleProfileRegistry.java: 134) at org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil.getProfile(ProvisioningUtil.java: 217) at org.eclipse.equinox.internal.p2.ui.sdk.ProvSDKUIActivator.getSelfProfileId(ProvSDKUIActivator.java: 161) at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.execute(PreloadingRepositoryHandler.java: 49) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java: 294) at org.eclipse.core.commands.Command.executeWithChecks(Command.java: 476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java: 508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java: 169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java: 241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java: 770) at org.eclipse.ui.menus.CommandContributionItem.access $10(CommandContributionItem.java:756) at org.eclipse.ui.menus.CommandContributionItem $5.handleEvent(CommandContributionItem.java:746) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java: 3880) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java: 332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java: 493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java: 149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java: 113) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java: 194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java: 110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java: 79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) Is there any way from where we can download the plugin at my machine and extract it and copy it to plugins and features? Since in past I have done for other plugins. Thanks for your replies in advance Regards, Ashish Mishra -- 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. -- Miguel -- 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
[appengine-java] Help needed with Error
I have been getting this error since my last deployment. Everything works fine in my local setup but on the server it throws this exception. Caused by: java.io.NotSerializableException: org.datanucleus.store.appengine.query.DatastoreQuery$2 at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.ArrayList.writeObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.HashMap.writeObject(Unknown Source) Check out www.medavakkam.com/eGrocery On click of Create new Order I get this error. The same datastore calls are made in another flow and that is working fine. Thanks Regards, Sandeep -- 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: Help needed with Error
Hi, This might be useful. Follow this thread: http://groups.google.com/group/google-appengine/browse_thread/thread/685d2e9db4063a69 Please confirm. thanks. On 2月24日, 午後11:25, Sandeep sandeep.ba...@gmail.com wrote: I have been getting this error since my last deployment. Everything works fine in my local setup but on the server it throws this exception. Caused by: java.io.NotSerializableException: org.datanucleus.store.appengine.query.DatastoreQuery$2 at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.ArrayList.writeObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.HashMap.writeObject(Unknown Source) Check outwww.medavakkam.com/eGrocery On click of Create new Order I get this error. The same datastore calls are made in another flow and that is working fine. Thanks Regards, Sandeep -- 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] Deployment with Eclipse plug-in
Hey, guys. Currently I've got this message during deployment. java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=caretransferapacversion=1; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html How does it be processed? Best regards, Alexander. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Deployment with Eclipse plug-in
Same here, haven't been able to deploy my updated app too. java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=mdvk-chnversion=1; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java: 143) at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java: 81) at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java: 522) at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java: 339) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: 111) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 56) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 271) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Also note: http://appengine.google.com/ is throwing 500 Internal Errors. I do not think this is your app problem. Regards, Sandeep On Feb 24, 9:00 pm, dominity domin...@gmail.com wrote: Hey, guys. Currently I've got this message during deployment. java.io.IOException: Error posting to URL:http://appengine.google.com/api/appversion/create?app_id=caretransfer... 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html How does it be processed? Best regards, Alexander. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Help needed with Error
Couldn't derive anything useful from the other thread. I believe the problem is with something on the server end and not the code. Something that has been working for the last 4 weeks cannot crash so abruptly in one screen and continue working on the other. Right now, it seems like the entire datastore is down and I am facing this issue in all my screens :(. Only the home page and static pages are working. Thanks for the pointer though. Regards, Sandeep On Feb 24, 8:50 pm, seleronm seler...@gmail.com wrote: Hi, This might be useful. Follow this thread:http://groups.google.com/group/google-appengine/browse_thread/thread/... Please confirm. thanks. On 2月24日, 午後11:25, Sandeep sandeep.ba...@gmail.com wrote: I have been getting this error since my last deployment. Everything works fine in my local setup but on the server it throws this exception. Caused by: java.io.NotSerializableException: org.datanucleus.store.appengine.query.DatastoreQuery$2 at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.ArrayList.writeObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.HashMap.writeObject(Unknown Source) Check outwww.medavakkam.com/eGrocery On click of Create new Order I get this error. The same datastore calls are made in another flow and that is working fine. Thanks Regards, Sandeep- Hide quoted text - - Show quoted text - -- 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] GAE Alternatives?
Are there any good alternatives to Google App Engine out there? I am finding that I cannot rely on GAE for a production quality environment. -- 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: Will a solution to the Java load latency come in Q2?
Hi, One of the suggestions I have seen is to keep your home page as a static HTML and as light as possible. This should enable loading app within a couple of seconds even if the app is not loaded on any server. Offcourse, if the kind of service provided through your site and the user base demands faster first time load then what you are asking is truly desirable. Regards, Sandeep On Feb 24, 9:56 am, Timofey Koolin timo...@koolin.ru wrote: Hello, for fast first load applications for user I set shedule for get main page of my application every minute. On Feb 23, 6:30 pm, Locke locke2...@gmail.com wrote: I plan on going live with my app in Q2, however, I can't subject my users to App Engine's Java loading delays. I recall that there has been talk of giving paying users the ability to keep at least one instance of their Java apps hot at all times. What are the chances of such a solution becoming available by the end of Q2? If this solution or some other solution to this problem is unlikely to be available in the next few months, I will reluctantly have to begin porting my app to another platform. Anyone know the status of this issue? Any info on the topic is appreciated. Thanks.- Hide quoted text - - Show quoted text - -- 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] GAE Alternatives?
Nope, but one *imagines* that others (Spring/VMWare, JBoss/RedHat, Oracle/Sun/Tangasol, Terracotta, Gigaspaces and Intalio/Jetty) are part way through delivery, or are planning, or finding partners. There's a huge attraction to the tiny resource requirement to maintain a WAR file deployment versus the large requirements of a EC2 style VM. Presuming the servlet container is shared amongst many apps of course. One wonders why Sun did not do this ten years ago. - Paul On Wed, Feb 24, 2010 at 10:39 AM, A1programmer derrick.simp...@gmail.comwrote: Are there any good alternatives to Google App Engine out there? I am finding that I cannot rely on GAE for a production quality environment. -- 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] [OT] Re: GAE Alternatives?
I think Sun didn't have clear ideas on what was possible and what clients wanted. They didn't separate their business in hardware and JavaSoft apart and that bad management decision took its toll. Microsoft is doing the same mistake: Is it a toy maker or a hardware maker or an operating system maker or a service provider like Google? I find today GAE is similar to the old Apple II in 1975. It took 5 years for IBM to catch up with the IBM PC, haven't it created a more powerful system and open sourced its design, we would all be using Motorola's CPUs... The main advantage GAE provides now is potentially unlimited scalability (only limited by hardware). Since hardware is going to get really cheap in the following decade, with SSDs and multicore CPUs everywhere, customers will not want to continue managing thousands of computers by hand, but let cloud companies provide almost free services like this. Now Java belongs to Oracle, so I bet Oracle will want to produce some competng product/service...without ruining the DB market it already has... On 24 feb, 13:57, Paul Hammant p...@hammant.org wrote: Nope, but one *imagines* that others (Spring/VMWare, JBoss/RedHat, Oracle/Sun/Tangasol, Terracotta, Gigaspaces and Intalio/Jetty) are part way through delivery, or are planning, or finding partners. There's a huge attraction to the tiny resource requirement to maintain a WAR file deployment versus the large requirements of a EC2 style VM. Presuming the servlet container is shared amongst many apps of course. One wonders why Sun did not do this ten years ago. - Paul On Wed, Feb 24, 2010 at 10:39 AM, A1programmer derrick.simp...@gmail.comwrote: Are there any good alternatives to Google App Engine out there? I am finding that I cannot rely on GAE for a production quality environment. -- 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] Store List of own objects in datastore
Hi, if I wanted to have a product which contains reviews to it, and Product is a class and Review as well, how would I do that? I tried @Persistent(defaultFetchGroup = true) private LinkedListReview reviews = new LinkedListReview(); in class Product. I would like to get the attached objects when loading it. With the configuration above I get The datastore does not support joins and therefore cannot honor requests to place related objects in the default fetch group. Is there any way to auto fetch? This also does not work with serialized = true. Kind regards, Marcel -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Google App Engine down or just my app?
Hey, Trying to reach: https://appengine.google.com/ Get an internal server error (500). In addition, can't deploy my app from eclipse. Following error: eclipse.buildId=M20090917-0800 java.version=1.6.0_18 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US Framework arguments: -product org.eclipse.epp.package.jee.product Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product Error Wed Feb 24 18:35:02 IST 2010 Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=webhinge-guestbookversion=2500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html See the deployment console for more details com.google.appengine.tools.admin.AdminException: Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=webhinge-guestbookversion=2; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 62) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 271) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Caused by: java.io.IOException: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=webhinge-guestbookversion=2; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java: 149) at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java: 82) at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java: 532) at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java: 349) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: 111) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 56) ... 4 more What seems to be the problem? Ronen -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: why my app on GAE first access is so slow
Any valid answers for this question yet? On Jan 6, 7:33 pm, Jorge athenas...@gmail.com wrote: It´s been a lot of discussion about this topic lately. See for instance Tragedy of the Commons, and Cold Starts. I own dedicated servers with other hosts and what I´ve been doing is automatically generating http request to my GAE app every 40 seconds. I started with 60 seconds and that became insufficient. Nevertheless, the Tragedy of the Commons seams to be real, because now 40 seconds is not enough to keep the app warm. My hope is Google will come up with a satisfactory solution soon. Maybe a fee to keep your application warm. I agree the cold startup time is absolutely unacceptable. Jorge Gonzalez On Nov 12 2009, 6:56 am, DrMorten morten.dalgaard.niel...@gmail.com wrote: 1 minute works for me, I used a commercial service that tracks uptime to check it. Trouble is that the commercial service checks randomly from different locations all over the world. meaning that the application loads out of memory because its hosted in different locations, effectivly killing my CPU qouta. On Nov 12, 3:36 am, zhiw...@gmail.com zhiw...@gmail.com wrote: i only test it in my country, i don't know whether it is still effective for request that from a foreign country. but to me it is enough On Nov 12, 10:30 am, zhiw...@gmail.com zhiw...@gmail.com wrote: i turn it to 1min, the cron job access a servlet that do nothing just for active the app. every 24h it only used 1% of the free cpu-time . now at least when i access my app, it was notslowlike before. but sometime the app still be inactive, although the cron job active the app, when i access sush as mainpage, it still took sometime to load the servlet. gae doc wrote: load-on-start doesn't work , the servlet will be load on first accessed. i think use cron job to access mainpage is better. now i have not try ths. On Nov 12, 5:04 am, James H james.hollier...@gmail.com wrote: So, 1-3 minute intervals seem to do the trick? Is this technique still working for you? On Nov 10, 8:24 pm, zhiw...@gmail.com zhiw...@gmail.com wrote: i think the gae cloud envrionment does not have the region concept. every app run on a virtual server , the cron job is used to make the virtual server active. if the virtual server is active, when access the app, there is no need to reinit such asspringlistener etc, so delay time is short, that is so simple i think. On Nov 10, 7:30 am, James H james.hollier...@gmail.com wrote: How would a single cron task really help in an environment where multitudes of app servers are involved based on demand, geography, etc? So, how will the task that just ran help someone in U.S. and simultaneously help someone in Russia on the same app? I assume they are potentially running on different app servers. On Nov 10, 1:51 am, m seleron seler...@gmail.com wrote: Thank you for useful information. Though various situations are thought I think that a detailed analysis might be necessary to decrease the CPU TIME. thunks 2009/11/10 zhiw...@gmail.com zhiw...@gmail.com: now i set the schedule time to 3min, it seems work, every time i access my app, i can hardly feelslow. my cron job access a servlet that do nothing and just for active my app. set the schedule time to 1min is better i think,although it will take some cpu time. On Nov 9, 11:31 pm, m seleron seler...@gmail.com wrote: I'm sorry very much. It examined. ServletContextListener#contextDestoryed was not called. It was necessary to examine it accurately. Nichole. Thank you for advice. Does not the page access speed become early? When you access that I think access speed is open in since the second times always because by the thing that keeps being accessed with cron If the display speed is stillslow, the cause might be different. thanks, On Nov 9, 11:30 pm, zhiw...@gmail.com zhiw...@gmail.com wrote: i set the time to 5min , but i can still find the contextInitialized info, seems gae's time-out is very short, now i test set it to 3min On Nov 9, 10:18 pm, Joseph Stano joseph.st...@gmail.com wrote: have you noticed if that solves the timeout issue? On Mon, Nov 9, 2009 at 5:04 AM, zhiw...@gmail.com zhiw...@gmail.com wrote: it seems only contextInitialized method can be executed, and contextDestroyed never be executed. so i can not get the time my app alive after it was actived. i have use cron job to
[appengine-java] org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed
Why does the code below result in org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed? The exception appears to be thrown at query.getResultList(). I'm using Spring JPA. bean id=entityManagerFactory class=org.springframework.orm.jpa.LocalEntityManagerFactoryBean lazy- init=true property name=persistenceUnitName value=transactions- optional/ /bean public final void removeUserTokens(final String username) { final Query query = entityManager.createQuery( SELECT p FROM PersistentLogin p WHERE username = :username); query.setParameter(username, username); for (Object token : query.getResultList()) { entityManager.remove(token); } } Exception: org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed at org.datanucleus.ObjectManagerImpl.assertIsOpen(ObjectManagerImpl.java: 3876) at org.datanucleus.ObjectManagerImpl.getFetchPlan(ObjectManagerImpl.java: 376) at org.datanucleus.store.query.Query.getFetchPlan(Query.java:497) at org.datanucleus.store.appengine.query.DatastoreQuery $6.apply(DatastoreQuery.java:611) at org.datanucleus.store.appengine.query.DatastoreQuery $6.apply(DatastoreQuery.java:610) at org.datanucleus.store.appengine.query.LazyResult.resolveNext(LazyResult.java: 94) at org.datanucleus.store.appengine.query.LazyResult $LazyAbstractListIterator.computeNext(LazyResult.java:215) at org.datanucleus.store.appengine.query.AbstractIterator.tryToComputeNext(AbstractIterator.java: 132) at org.datanucleus.store.appengine.query.AbstractIterator.hasNext(AbstractIterator.java: 127) at org.datanucleus.store.appengine.query.LazyResult $AbstractListIterator.hasNext(LazyResult.java:169) at com.mystuff.service.auth.PersistentTokenRepositoryImpl.removeUserTokens(PersistentTokenRepositoryImpl.java: 90) -- 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: Will a solution to the Java load latency come in Q2?
There are dozens of threads with this topic and the discussions go on and on. Many ask, many complain, and nobody answers with commitment (Google). Some suggest the stupid solution of pinging your app every so often. No offense, Timofy Koolin, I use the same stupid solution myself!!! Me too I'm planning on going live on Q2 and I am really concerned about the feasibility of that because of the long latency on cold starts and worst, the servlets (e.g. cron jobs) dieing because of that. I think many of us see this as a major issue. I wish there was a clear commitment with goals and dates from Google. Jorge Gonzalez On Feb 23, 10:56 pm, Timofey Koolin timo...@koolin.ru wrote: Hello, for fast first load applications for user I set shedule for get main page of my application every minute. On Feb 23, 6:30 pm, Locke locke2...@gmail.com wrote: I plan on going live with my app in Q2, however, I can't subject my users to App Engine's Java loading delays. I recall that there has been talk of giving paying users the ability to keep at least one instance of their Java apps hot at all times. What are the chances of such a solution becoming available by the end of Q2? If this solution or some other solution to this problem is unlikely to be available in the next few months, I will reluctantly have to begin porting my app to another platform. Anyone know the status of this issue? Any info on the topic is appreciated. 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] Re: App Engine and Spring slow start up
Has the above mentioned offline precompilatio in 1.3.1 been able to solve your issue, I plan to use Spring on Java for my Business App which is complex and could be based on SOA. Kindly let me know if your issue was resolved or reduced by using the above fix. On Feb 20, 12:05 am, luijar luis.j.aten...@gmail.com wrote: I believe my development environment was on 1.3.0. That might be something to look at, although it seems that probably it's a very small overhead, do you have any metrics that would give some evidence as to how much overhead is offline precompilation adding? Thanks On Feb 18, 2:04 pm, Don Schwarz schwa...@google.com wrote: Have you deployed your application with the 1.3.1 SDK? That release turned on offline precompilation by default, which is an optimization that may help. On Thu, Feb 18, 2010 at 7:59 AM, Alex chasov...@gmail.com wrote: Hi, It appeared that long init problem is well known for Grails users: http://jira.codehaus.org/browse/GRAILSPLUGINS-1736 I wasted couple of weeks to create app I cannot run. Hope that SpringSource and Google can solve the issue. On Feb 17, 7:41 pm, Stephan Hartmann hartm...@metamesh.de wrote: The problem is that the initialization of your app takes longer than 30 seconds. Pinging your app doesn't help when the app is restarted due to redeployment or maintenance, or when high traffic demands a second instance. You should try to reduce your startup time. regards, Stephan 2010/2/17 luijar luis.j.aten...@gmail.com Great, all of our projects areSpringenabled lol. But I guess it's good that we are not the only ones seeing this, hopefully it gets a little more visibility. We have a cron job (1 min) that tries to keep our application alive by hitting a URL, but it does not do a very good job. It's frustrating and we don't even have access to the 500 page to tell the user to retry or go somewhere else. On Feb 17, 11:21 am, oth other...@gmail.com wrote: Yes we have seen this problem a lot. Per our tests, an application becomes idle after a minute of non activity. So, the unfortunate reality is that you need to keep your app alive by simulating activity on it. Or go the nonSpringroute. Thanks On Feb 16, 4:14 pm, luijar luis.j.aten...@gmail.com wrote: Hello Google App Engine forum, We have been seeing ever since we deployed our applications (currently 3 of them) that when our application instances become idle (they have not been hit for x amount of seconds) subsequent requests return with a 500 response. Logs show a hard deadline exceeded error com.google.apphosting.runtime.HardDeadlineExceededError: This request (32306ebe63b71ab0) started at 2010/02/12 20:39:11.984 UTC and was still executing at 2010/02/12 20:39:41.225 UTC. at com.google.appengine.runtime.Request.process-32306ebe63b71ab0(Request.java) And the first line of the log message has the following : 02-12 12:39PM 14.088 javax.servlet.ServletContext log: InitializingSpringroot WebApplicationContext Question: Has anyone else seen this behavior? How long does it take for an application instance to become idle? Thanks -- You received this message because you are subscribed to the Google Groups Google App Engine forJava 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 google-appengine-java%2bunsubscr...@googlegroups.comgoogle-appengine-java%252bunsubscr...@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 forJava 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: Help needed with Error
If you are trying to put the reult of a query directly into memcache then you should read http://groups.google.com/group/google-appengine-java/msg/1d835ac8245d1d48. -- 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] Read-only mode exceptions
I'm trying to make my app robust to survive through these read-only modes that we seem to be in fairly often lately. All calls to the cache were surrounded with a try-catch for MemcacheServiceException as spelled out here (even though I don't use a StrictErrorHandler, during the last maintenance it was still failing): http://code.google.com/appengine/docs/java/howto/maintenance.html But now during this maintenance, I'm receiving a GCacheException on all cache.put() calls causing my app to still be down. Is that expected? Are there other exceptions I may need to catch? If it's expected, an update to that page would be nice. Thanks, -C -- 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 Alternatives?
On Feb 24, 10:39 am, A1programmer derrick.simp...@gmail.com wrote: Are there any good alternatives to Google App Engine out there? I am finding that I cannot rely on GAE for a production quality environment. I am very excited about the future of Google App Engine, but I am in the same boat, Derrick. I am working with a startup that tried to get up and running on Google App Engine, but we have since migrated to Spring Cloud Foundry, which runs on Amazon's EC2 architecture. It is a heavier-weight environment, and the monthly costs are higher, but the development costs are much, much cheaper, and we have far fewer unexpected Production problems. There's a huge attraction to the tiny resource requirement to maintain a WAR file deployment versus the large requirements of a EC2 style VM. I agree, but for me there is an even larger attraction to having predictable behavior in our Production environment, and we can't currently get that from GAE. Some people are happy with BigTable as a general persistence solution, but we are not. The whitelisted classloader makes every attempt to integrate with third-party libraries an adventure. And the nature of GAE's on-demand provisioning makes it difficult to guarantee the response times we want for our customers. The crushing blow to our morale is code that runs perfectly in our development environment, but breaks when deployed to GAE. I have a lot of faith in the Google team, and I can't wait to see what GAE looks like a year from now. But right now, I can only recommend it for the simplest of internal apps, nothing client-facing. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: solution to the Java load latency
The correct solution is to drive more traffic to your application, and we discourage pinging. We're working on solutions that will reduce load times all around. The issue with pinging your application, as some users do, is that it decreases resources from the global pool and increases the amount of application cycling that happens. A more subtle effect of this is this affects our instrumentation and causes your application to be grouped in our reporting with applications that are seeing normal cycling - the % of your requests that are loading requests drops significantly, and it tells us that your application is fine when it is not. On Tue, Feb 23, 2010 at 1:45 PM, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Does any one have a way to test this? I've been doing tests manually against my app and it takes between 6 to 8 secs to load, just the landing page. After that, it has subsecond performance. Nice! I've read that you can have the one app in python access the same data store as another app in Java. Would that break the GAE contract? It sure would fix this problem while GAE fix this issue. Cheers, Guillermo. On Tue, Feb 23, 2010 at 4:44 PM, Locke locke2...@gmail.com wrote: Some Java load times are here. When using the database, these times can be worse, of course. http://groups.google.com/group/google-appengine/browse_thread/thread/11b2f2b425e10e38/c8564e0eb61de1ed?lnk=gstq=benchmarks#c8564e0eb61de1ed On Feb 23, 12:23 pm, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Dear all, I've read some of you are having load latency issues. How much time you have to wait for your applications to load? I ask this because I haven't noticed any delay in my applications so I was wondering what it could be. Cheers, Guillermo. -- 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. -- Saludos cordiales, Guillermo Schwarz Sun Certified Enterprise Architect -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] Google App Engine down or just my app?
Yes, there was an outage, but this should have been resolved. You may want to subscribe to this mailing list: http://groups.google.com/group/google-appengine-downtime-notify On Wed, Feb 24, 2010 at 9:00 AM, Ronen rbabay...@gmail.com wrote: Hey, Trying to reach: https://appengine.google.com/ Get an internal server error (500). In addition, can't deploy my app from eclipse. Following error: eclipse.buildId=M20090917-0800 java.version=1.6.0_18 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US Framework arguments: -product org.eclipse.epp.package.jee.product Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product Error Wed Feb 24 18:35:02 IST 2010 Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=webhinge-guestbookversion=2500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html See the deployment console for more details com.google.appengine.tools.admin.AdminException: Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=webhinge-guestbookversion=2; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 62) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 271) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Caused by: java.io.IOException: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=webhinge-guestbookversion=2; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java: 149) at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java: 82) at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java: 532) at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java: 349) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: 111) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 56) ... 4 more What seems to be the problem? Ronen -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: Deployment with Eclipse plug-in
This is likely related to the unscheduled outage earlier today. See http://code.google.com/status/appengine Keith On Wed, Feb 24, 2010 at 11:28 AM, Sandeep sandeep.ba...@gmail.com wrote: Same here, haven't been able to deploy my updated app too. java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=mdvk-chnversion=1; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java: 143) at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java: 81) at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java: 522) at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java: 339) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: 111) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 56) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 271) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Also note: http://appengine.google.com/ is throwing 500 Internal Errors. I do not think this is your app problem. Regards, Sandeep On Feb 24, 9:00 pm, dominity domin...@gmail.com wrote: Hey, guys. Currently I've got this message during deployment. java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=caretransfer... 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF=http:// code.google.com/appengine/community.htmlreport/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html How does it be processed? Best regards, Alexander. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.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] Re: Problem with persistance
http://code.google.com/appengine/docs/java/datastore/relationships.html#Owned_One_to_One_Relationships You create a bidirectional one-to-one relationship using fields on both classes, with an annotation on the child class's field to declare that the fields represent a bidirectional relationship. The field of the child class must have a @Persistent annotation with the argument mappedBy = ..., where the value is the name of the field on the parent class. From what I see, you have it backwards, with the annotation in the parent class. Jake On Feb 24, 4:26 am, Anton Klotz dipl.ing.akl...@googlemail.com wrote: Hi, could please somebody tell me, what I'm doing wrong here? Here is one child datastructure I want to persist: @PersistenceCapable public class OfferDetails { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key mId; @Persistent private String mOfferDescription; @Persistent private Offer mOffer; public OfferDetails () { } public OfferDetails (String offerDesc) { this (); mOfferDescription = offerDesc; } } And here is the parent @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable=true) public class Offer { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key mId; @Persistent(mappedBy=mOffer) private OfferDetails mOfferDetails; public Offer( OfferDetails offerDetails) { this(); mOfferDetails = offerDetails; } } Here is the presistance routine: public class OfferDataAccess { private static final long serialVersionUID = -7037344095742126014L; private PersistenceManager pm; public OfferDataAccess () { pm = PMF.get().getPersistenceManager(); } public void persistOffer (Offer offer) { pm.currentTransaction().begin(); try { pm.makePersistent(offer); pm.currentTransaction().commit(); } finally { if (pm.currentTransaction().isActive()) pm.currentTransaction().rollback(); pm.close(); } } And here is the call of the persistance routine: class CreateOfferActionCommand { public void execute() { mOfferDB = new OfferDataAccess (); mOffer = new Offer (mOfferDetails); mOfferDB.persistOffer (mOffer); } } Now if I run this code, I get following errormessage: java.lang.IllegalStateException: Primary key for object of type OfferDetails is null. at org.datanucleus.store.appengine.EntityUtils.getPkAsKey(EntityUtils.java: 152) at org.datanucleus.store.appengine.DatastoreFieldManager.getKeyForObject(DatastoreFieldManager.java: 625) at org.datanucleus.store.appengine.DatastoreFieldManager.getParentKeyFromParentField(DatastoreFieldManager.java: 634) at org.datanucleus.store.appengine.DatastoreFieldManager.establishEntityGroup(DatastoreFieldManager.java: 591) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPreProcess(DatastorePersistenceHandler.java: 338) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(DatastorePersistenceHandler.java: 246) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java: 235) at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateManagerImpl.java: 3185) at org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl.java: 3161) at org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java: 1298) at org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java: 1175) at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java: 669) at org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java: 694) at com.sparradar.server.datamodel.offer.OfferDataAccess.persistOffer(OfferDataAccess.java: 29) at com.sparradar.server.action.actioncommands.CreateOfferActionCommand.execute(CreateOfferActionCommand.java: 60) at info.rk.vaadinapp.manager.urldispatching.URLActionDispatcher.handleURI(URLActionDispatcher.java: 90) at com.vaadin.ui.Window.handleURI(Window.java:358) at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleURI(AbstractCommunicationManager.java: 1830) at com.vaadin.terminal.gwt.server.CommunicationManager.handleURI(CommunicationManager.java:
Re: [appengine-java] Can pm.makePersistentAll() help me write 12,000 objects?
I think this is actually an interesting question, and brings up a discussion worth having: Is datastore performance reasonable? I don't want to make this a discussion of reliability, which is a separate issue. It just seems to me that the datastore is actually kinda pokey, taking seconds to write a few hundred entities. When people benchmark Tokyo Tyrant, I hear numbers thrown around like 22,000 writes/second sustained across 1M records: http://blog.hunch.se/2009/02/28-tokyo-cabinet You might argue that the theoretical scalability of BigTable's distributed store is higher... but we're talking about two full orders of magnitude difference. Will I ever near the 100-google-server equivalent load? Could I pay for it if I did? 100 CPUs (measured) running for 1 month is about $7,200. Actual CPU speed is at least twice the measured rate, so a single Tokyo Tyrant is theoretically equivalent to almost $15,000/month of appengine hosting. Ouch. Maybe this isn't an apples to apples comparison. Sure, there aren't extra indexes on those Tyrant entities... but to be honest, few of my entities have extra indexes. What other factors could change this analysis? Thoughts? BTW Tim, you may very well have quite a few indexes on your entities. In JDO, nearly all single fields are indexed by default. You must explicitly add an annotation to your fields to make them unindexed. With Objectify, you can declare your entity as @Indexed or @Unindexed and then use the same annotation on individual fields to override the default. Jeff On Wed, Feb 24, 2010 at 12:43 AM, Tim Cooper tco...@gmail.com wrote: I have been trying to write 12,000 objects in a single page request. These objects are all very small and the total amount of memory is not large. There is no index on these objects - the only GQL queries I make on them are based on the primary key. Ikai has said: That is - if you have to delete or create 150 persistent, indexed objects, you may want to rethink what problems you are trying to solve. So I have been thinking about the problems I'm trying to solve, including looking at the BuddyPoke blog and reading the GAE documentation. I'm trying to populate the database with entries relating to high school timetables. * I could do the writes asynchronously, but that looks like a lot of additional effort. On my C++ app, writing the same information to my laptop drive, this happens in under a second, because the amount of data is actually quite small, but it times out on GAE. * I am using pm.makePersistentAll(), but this doesn't help. * There is no index on the objects - I access them only through the primary key. (I'm pretty sure there's no index - but how can I confirm this via the development server dashboard?) * The objects constitute 12,000 entity groups. I could merge them into fewer entity groups, but there's no natural groupings I could use, so it could get quite complex to introduce a contrived grouping, and also this would complicate the multi-user updating of the objects. The AppEngine team seem to generally recommend using more entity groups, but it's difficult to integrate that advice with the contrary advice to use fewer entity groups for acceptable performance. * I'd be happy if the GAE database was 10 times slower than a non-cloud RDBMS, but the way I'm using it, it's currently not. Does anyone have any advice? -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: solution to the Java load latency
I'm glad you understand some of the challenges we are facing. We have several proposed solutions, but each solution has a tradeoff. Sun's investment in the JVM is massive, and they focused on building a virtual machine that pays a bit more of an upfront cost for a bigger performance benefit over the long run (startime time, JIT). At times, this is at odds with some of the requirements of building a flexible cloud system: we need to assume lifespans are ephemeral, we need to teardown and startup new app instances quickly, we need to sandbox applications for security. I can understand quick and dirty. I just try to discourage people from doing it as much as possible. On Wed, Feb 24, 2010 at 11:04 AM, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Ikai, I agree wholehartedly with you. Nevertheless, I think what Locke needs is a quick and dirty solution before the correct one you mention is implemented (which can take a while, because it is the correct one). At the same time, that solution needs to not interfere with other applications. The poll initiative using cron would be of that kind. I suppose Locke could load a static page somewhere (I think that is possible right now in GAE, but I'm not sure) and inside that page have a link (let's say an image) that is hosted with the rest of the app. This way the application would the pinged whenever a user enters the page and everyone would be happy. Cheers, Guillermo. On 24 feb, 15:29, Ikai L (Google) ika...@google.com wrote: The correct solution is to drive more traffic to your application, and we discourage pinging. We're working on solutions that will reduce load times all around. The issue with pinging your application, as some users do, is that it decreases resources from the global pool and increases the amount of application cycling that happens. A more subtle effect of this is this affects our instrumentation and causes your application to be grouped in our reporting with applications that are seeing normal cycling - the % of your requests that are loading requests drops significantly, and it tells us that your application is fine when it is not. On Tue, Feb 23, 2010 at 1:45 PM, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Does any one have a way to test this? I've been doing tests manually against my app and it takes between 6 to 8 secs to load, just the landing page. After that, it has subsecond performance. Nice! I've read that you can have the one app in python access the same data store as another app in Java. Would that break the GAE contract? It sure would fix this problem while GAE fix this issue. Cheers, Guillermo. On Tue, Feb 23, 2010 at 4:44 PM, Locke locke2...@gmail.com wrote: Some Java load times are here. When using the database, these times can be worse, of course. http://groups.google.com/group/google-appengine/browse_thread/thread/. .. On Feb 23, 12:23 pm, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Dear all, I've read some of you are having load latency issues. How much time you have to wait for your applications to load? I ask this because I haven't noticed any delay in my applications so I was wondering what it could be. Cheers, Guillermo. -- 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 google-appengine-java%2bunsubscr...@googlegroups.comgoogle-appengine-java%252bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- Saludos cordiales, Guillermo Schwarz Sun Certified Enterprise Architect -- 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 google-appengine-java%2bunsubscr...@googlegroups.comgoogle-appengine-java%252bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- Ikai Lan Developer Programs Engineer, Google App Enginehttp:// googleappengine.blogspot.com|http://twitter.com/app_engine -- 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
[appengine-java] Datanucleus log
Probably a simple, easy question but... I am getting this error message when datanucleus enhancement takes place: DataNucleus Enhancer completed with an error. Please review the enhancer log for full details. Some classes may have been enhanced but some caused errors DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details It is not immediately apparent (to me anyway) where the log is. So, can someone point me to the log itself? The real problem I am having is with this code (using JPA): @Entity(name = IndirectContactEmail) public class IndirectContactEmail { //key of the entity @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key id; //simple data members private String first; private String last; private Email emailId; //reference members //unowned one-to-many, these are back links to the 'ones' private Key indirectContactListKey; private Key directContactKey; public static ListIndirectContactEmail get(ListKey keysOfIndirectContactEmails) { return null; } ... If I comment out the get() method everything is fine, with it in (even completely empty) I get datanucleus enhancement errors: Errors were encountered when loading the specified MetaData files and classes. See the nested exceptions for details org.datanucleus.exceptions.NucleusUserException: Errors were encountered when loading the specified MetaData files and classes. See the nested exceptions for details at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java: 426) at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java: 743) at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java: 545) at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java: 1252) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java: 57) at com.google.appengine.tools.enhancer.Enhance.init(Enhance.java: 60) at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:41) Caused by: java.lang.NullPointerException at org.datanucleus.jpa.metadata.JPAAnnotationReader.processMemberAnnotations(JPAAnnotationReader.java: 853) at org.datanucleus.metadata.annotations.AbstractAnnotationReader.getMetaDataForClass(AbstractAnnotationReader.java: 159) at org.datanucleus.metadata.annotations.AnnotationManagerImpl.getMetaDataForClass(AnnotationManagerImpl.java: 136) at org.datanucleus.metadata.MetaDataManager.loadAnnotationsForClass(MetaDataManager.java: 2278) at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java: 385) ... 10 more Nested Throwables StackTrace: java.lang.NullPointerException at org.datanucleus.jpa.metadata.JPAAnnotationReader.processMemberAnnotations(JPAAnnotationReader.java: 853) at org.datanucleus.metadata.annotations.AbstractAnnotationReader.getMetaDataForClass(AbstractAnnotationReader.java: 159) at org.datanucleus.metadata.annotations.AnnotationManagerImpl.getMetaDataForClass(AnnotationManagerImpl.java: 136) at org.datanucleus.metadata.MetaDataManager.loadAnnotationsForClass(MetaDataManager.java: 2278) at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java: 385) at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java: 743) at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java: 545) at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java: 1252) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java: 57) at com.google.appengine.tools.enhancer.Enhance.init(Enhance.java: 60) at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:41) DataNucleus Enhancer completed with an error. Please review the enhancer log for full details. Some classes may have been enhanced but some caused errors DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details -- You received this message because you are subscribed to the Google Groups Google App Engine for Java
[appengine-java] Re: Datanucleus log
Rename your get() method to getXXX or something else. Sadly GAE/J uses an ancient version of DataNucleus. -- 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: Datanucleus log
Aah... I see, that worked. get() is a loaded name, I should have known better. I am still curious about the location of the log file mentioned in the error, can you provide some help there? Thanks! On Feb 24, 1:48 pm, datanucleus andy_jeffer...@yahoo.com wrote: Rename your get() method to getXXX or something else. Sadly GAE/J uses an ancient version of DataNucleus. -- 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] uniqueness control ideas
I've been trying to devise a way to maintain uniqueness among different entities by storing some kind of UUID based on the fields I want unique for that entity Using JDO, and a GenericDAO (groovy) Here is the method for put() in my GenericDAO: def put(Object object) { Collection objects = list(); Boolean exists = false; objects.each {if(it.getUniqueKey() == object.getUniqueKey()) {exists = true}} if(!exists) { PersistenceManager pm = getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); pm.makePersistent(object); tx.commit(); } finally { if (tx.isActive()) { tx.rollback(); } pm.close(); } } } Where the uniqueKey field is a *unique string based on fields I need to be unique*. My question is what is good way to create this unique key string using for example multiple string fields that will be consistent? My first inclination was to use an MD5 but I see that datanucleus provides value generators that might work better? Ideas? Or am I just going about this the wrong way? -- 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: Can pm.makePersistentAll() help me write 12,000 objects?
Ikai, Maybe you are right. Maybe not. I'm not an expert in datastore internals, but here is my point of view. This paper claims that Berkeley DB Java edition can insert about 15,000 records per second. http://www.oracle.com/database/docs/bdb-je-architecture-whitepaper.pdf The graphic is on page 22. The main reason they claim to be able to do that is that they don't need to actually sync the write to disk, they can queue the write, update in-memory data and write a log file. Writing the log file is for transactional purposes and it is the only write really needed.That is pretty fast. Cheers, Guillermo. On 24 feb, 16:51, Ikai L (Google) ika...@google.com wrote: I also remember hearing (and this is not verified so don't quote me on this or come after me if I'm wrong) from a friend of mine running KV stores in production that there were issues with certain distributed key/value stores that actually managed to slow down as a function of the number of objects in the store - and Tokyo Tyrant was on his list. A key property of scalable stores is that the opposite of this is true. 12,000 synchronous, serialized writes in a single sub-second request is pretty serious. I am not aware of a single website in the world that does this. On Wed, Feb 24, 2010 at 11:35 AM, Jeff Schnitzer j...@infohazard.orgwrote: I think this is actually an interesting question, and brings up a discussion worth having: Is datastore performance reasonable? I don't want to make this a discussion of reliability, which is a separate issue. It just seems to me that the datastore is actually kinda pokey, taking seconds to write a few hundred entities. When people benchmark Tokyo Tyrant, I hear numbers thrown around like 22,000 writes/second sustained across 1M records: http://blog.hunch.se/2009/02/28-tokyo-cabinet You might argue that the theoretical scalability of BigTable's distributed store is higher... but we're talking about two full orders of magnitude difference. Will I ever near the 100-google-server equivalent load? Could I pay for it if I did? 100 CPUs (measured) running for 1 month is about $7,200. Actual CPU speed is at least twice the measured rate, so a single Tokyo Tyrant is theoretically equivalent to almost $15,000/month of appengine hosting. Ouch. Maybe this isn't an apples to apples comparison. Sure, there aren't extra indexes on those Tyrant entities... but to be honest, few of my entities have extra indexes. What other factors could change this analysis? Thoughts? BTW Tim, you may very well have quite a few indexes on your entities. In JDO, nearly all single fields are indexed by default. You must explicitly add an annotation to your fields to make them unindexed. With Objectify, you can declare your entity as @Indexed or @Unindexed and then use the same annotation on individual fields to override the default. Jeff On Wed, Feb 24, 2010 at 12:43 AM, Tim Cooper tco...@gmail.com wrote: I have been trying to write 12,000 objects in a single page request. These objects are all very small and the total amount of memory is not large. There is no index on these objects - the only GQL queries I make on them are based on the primary key. Ikai has said: That is - if you have to delete or create 150 persistent, indexed objects, you may want to rethink what problems you are trying to solve. So I have been thinking about the problems I'm trying to solve, including looking at the BuddyPoke blog and reading the GAE documentation. I'm trying to populate the database with entries relating to high school timetables. * I could do the writes asynchronously, but that looks like a lot of additional effort. On my C++ app, writing the same information to my laptop drive, this happens in under a second, because the amount of data is actually quite small, but it times out on GAE. * I am using pm.makePersistentAll(), but this doesn't help. * There is no index on the objects - I access them only through the primary key. (I'm pretty sure there's no index - but how can I confirm this via the development server dashboard?) * The objects constitute 12,000 entity groups. I could merge them into fewer entity groups, but there's no natural groupings I could use, so it could get quite complex to introduce a contrived grouping, and also this would complicate the multi-user updating of the objects. The AppEngine team seem to generally recommend using more entity groups, but it's difficult to integrate that advice with the contrary advice to use fewer entity groups for acceptable performance. * I'd be happy if the GAE database was 10 times slower than a non-cloud RDBMS, but the way I'm using it, it's currently not. Does anyone have any advice? -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post
Re: [appengine-java] Re: Can pm.makePersistentAll() help me write 12,000 objects?
Simple key-only writes can definitely do it, but there's a few places where you can introduce overhead: - serialization - network I/O - indexes My point wasn't necessarily that it wasn't possible. makePersistentAll does use a batch write, and there are definitely sites that can do 12,000+ writes a second (and well above that), but I don't know of any that will attempt to do that in a single request. While it's an interesting thought exercise to see if BigTable can do it through App Engine's interface (hint: it can, globally, easily), I can't think of a single use case for a site to need to do this all the time and with the sub-second requirement. I think it's reasonable to ask why this design exists and why the requirements exist and rethink one or the other. On Wed, Feb 24, 2010 at 12:35 PM, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Ikai, Maybe you are right. Maybe not. I'm not an expert in datastore internals, but here is my point of view. This paper claims that Berkeley DB Java edition can insert about 15,000 records per second. http://www.oracle.com/database/docs/bdb-je-architecture-whitepaper.pdf The graphic is on page 22. The main reason they claim to be able to do that is that they don't need to actually sync the write to disk, they can queue the write, update in-memory data and write a log file. Writing the log file is for transactional purposes and it is the only write really needed.That is pretty fast. Cheers, Guillermo. On 24 feb, 16:51, Ikai L (Google) ika...@google.com wrote: I also remember hearing (and this is not verified so don't quote me on this or come after me if I'm wrong) from a friend of mine running KV stores in production that there were issues with certain distributed key/value stores that actually managed to slow down as a function of the number of objects in the store - and Tokyo Tyrant was on his list. A key property of scalable stores is that the opposite of this is true. 12,000 synchronous, serialized writes in a single sub-second request is pretty serious. I am not aware of a single website in the world that does this. On Wed, Feb 24, 2010 at 11:35 AM, Jeff Schnitzer j...@infohazard.org wrote: I think this is actually an interesting question, and brings up a discussion worth having: Is datastore performance reasonable? I don't want to make this a discussion of reliability, which is a separate issue. It just seems to me that the datastore is actually kinda pokey, taking seconds to write a few hundred entities. When people benchmark Tokyo Tyrant, I hear numbers thrown around like 22,000 writes/second sustained across 1M records: http://blog.hunch.se/2009/02/28-tokyo-cabinet You might argue that the theoretical scalability of BigTable's distributed store is higher... but we're talking about two full orders of magnitude difference. Will I ever near the 100-google-server equivalent load? Could I pay for it if I did? 100 CPUs (measured) running for 1 month is about $7,200. Actual CPU speed is at least twice the measured rate, so a single Tokyo Tyrant is theoretically equivalent to almost $15,000/month of appengine hosting. Ouch. Maybe this isn't an apples to apples comparison. Sure, there aren't extra indexes on those Tyrant entities... but to be honest, few of my entities have extra indexes. What other factors could change this analysis? Thoughts? BTW Tim, you may very well have quite a few indexes on your entities. In JDO, nearly all single fields are indexed by default. You must explicitly add an annotation to your fields to make them unindexed. With Objectify, you can declare your entity as @Indexed or @Unindexed and then use the same annotation on individual fields to override the default. Jeff On Wed, Feb 24, 2010 at 12:43 AM, Tim Cooper tco...@gmail.com wrote: I have been trying to write 12,000 objects in a single page request. These objects are all very small and the total amount of memory is not large. There is no index on these objects - the only GQL queries I make on them are based on the primary key. Ikai has said: That is - if you have to delete or create 150 persistent, indexed objects, you may want to rethink what problems you are trying to solve. So I have been thinking about the problems I'm trying to solve, including looking at the BuddyPoke blog and reading the GAE documentation. I'm trying to populate the database with entries relating to high school timetables. * I could do the writes asynchronously, but that looks like a lot of additional effort. On my C++ app, writing the same information to my laptop drive, this happens in under a second, because the amount of data is actually quite small, but it times out on GAE. * I am using pm.makePersistentAll(), but this doesn't help. * There is no index on
Re: [appengine-java] Re: way to interactively query datastore?
On Wed, Feb 24, 2010 at 1:37 AM, vbart vaclav.barta...@spolecne.cz wrote: I can offer only listing solution, based on our free GQL dynamic parser - http://audao.spoledge.com/download.jsp The full JSP you can find here: http://vaclavb.blogspot.com/2010/02/google-app-engine-data-viewer-gql-java.html The GQL parser (class GqlDynamic) converts GQL queries into low-level datastore API calls, so the basic code of fetching entities can be: import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.spoledge.audao.parser.gql.GqlDynamic; import java.util.List; ... GqlDynamic gqld = new GqlDynamic(); gqld.setDatastoreService( DatastoreServiceFactory.getDatastoreService()); String gql = SELECT * FROM MyEntity WHERE prop1='test' ORDER BY prop2 LIMIT 10; ListEntity result = gqld.prepareQuery( gql ).asList( gqld.getFetchOptions()); Then you just need to render the result in a JSP page. The GQL parser currently does not support operators '!=' and 'IN', but we are going to launch a new version in a few days which will support all GQL features. Vaclav hmm thanks for the tip! i actually was unaware the way to do something like this was to build a google datastore.Query to represent the GQL statement... -- 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: problem with Unowned relationship beetwen a Root entity and a Entity of an EntityGroup
Nobody helps :( NM El feb 23, 2010 11:08 a.m., nicolas melendez nfmelen...@gmail.com escribió: Hi, i have an Unowned relationship beetwen a *Root entity* and a Entity of an EntityGroup. *Root entity *isn't part of the* *entity group. So, to the Entity of an EntityGroup i set the key of my *Root Entity* and I persist. Then when a do the getKey of the *Root Entity* to the Entity of the EntityGroup, y get a null, and then when i use it a Null pointer exception. Anybody, knows why? I am missing something? Thanks NM -- 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] custom authentication when using Google Apps domain
We need users to be able to access our app on our domain, so I went into my Dashboard and clicked Add New URL to set this up, and then added a CNAME at GoDaddy. We use Google Apps for our domain internally, but do not want the users of our App Engine app accessing Mail, Documents, Sites, etc. However, my understanding is that the only way I could point a subdomain at our App Engine app was to use Google Apps and Add New URL. We're going to have an installed desktop application access our app via ClientLogin, and it's fine if that needs to talk to myapp.appspot.com in order to use HTTPS. The plan is for the installed application to hide the credentials it uses to safely communicate with our App Engine application behind the scenes. The only time our users will directly interact with the App Engine app is when they login via a web browser. For that, we'd like to use custom authentication because I don't want to have to pay $50/user/ year for them to access via a Google Apps Premier account. But it sounds like this means we can't safeguard portions of the site with the deployment descriptor if we're using custom authentication: http://code.google.com/appengine/docs/java/config/webxml.html#Security_and_Authentication Is this true? How can we handle this? -- 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: Can pm.makePersistentAll() help me write 12,000 objects?
my experience with a relatively simple application via JDO makePersistentAll() was that I got DataStore Operation Timeout exceptions with batch sizes of approx 200-300 objects ... On Feb 24, 1:48 pm, Guillermo Schwarz guillermo.schw...@gmail.com wrote: I think we can safely assume that the programmer was trying to speed up things a little by writing 12 thousand objects in a single operation. Now if that gets to be faster or slower than writing each object separately, it is a matter of the internal implementation of the data store. I prefer to do no hacks, but OTOH it is better sometimes to be clear bout what you want (API wise). The point here is that the programmer wants to insert 15 thousand objects in a second, you seem to imply that is possible. While it's an interesting thought exercise to see if BigTable can do it through App Engine's interface (hint: it can, globally, easily). I rest my case ;-) Do we need to do anything to test that? Is there anything we could do to help? Cheers, Guillermo. On 24 feb, 18:06, Ikai L (Google) ika...@google.com wrote: Simple key-only writes can definitely do it, but there's a few places where you can introduce overhead: - serialization - network I/O - indexes My point wasn't necessarily that it wasn't possible. makePersistentAll does use a batch write, and there are definitely sites that can do 12,000+ writes a second (and well above that), but I don't know of any that will attempt to do that in a single request. While it's an interesting thought exercise to see if BigTable can do it through App Engine's interface (hint: it can, globally, easily), I can't think of a single use case for a site to need to do this all the time and with the sub-second requirement. I think it's reasonable to ask why this design exists and why the requirements exist and rethink one or the other. On Wed, Feb 24, 2010 at 12:35 PM, Guillermo Schwarz guillermo.schw...@gmail.com wrote: Ikai, Maybe you are right. Maybe not. I'm not an expert in datastore internals, but here is my point of view. This paper claims that Berkeley DB Java edition can insert about 15,000 records per second. http://www.oracle.com/database/docs/bdb-je-architecture-whitepaper.pdf The graphic is on page 22. The main reason they claim to be able to do that is that they don't need to actually sync the write to disk, they can queue the write, update in-memory data and write a log file. Writing the log file is for transactional purposes and it is the only write really needed.That is pretty fast. Cheers, Guillermo. On 24 feb, 16:51, Ikai L (Google) ika...@google.com wrote: I also remember hearing (and this is not verified so don't quote me on this or come after me if I'm wrong) from a friend of mine running KV stores in production that there were issues with certain distributed key/value stores that actually managed to slow down as a function of the number of objects in the store - and Tokyo Tyrant was on his list. A key property of scalable stores is that the opposite of this is true. 12,000 synchronous, serialized writes in a single sub-second request is pretty serious. I am not aware of a single website in the world that does this. On Wed, Feb 24, 2010 at 11:35 AM, Jeff Schnitzer j...@infohazard.org wrote: I think this is actually an interesting question, and brings up a discussion worth having: Is datastore performance reasonable? I don't want to make this a discussion of reliability, which is a separate issue. It just seems to me that the datastore is actually kinda pokey, taking seconds to write a few hundred entities. When people benchmark Tokyo Tyrant, I hear numbers thrown around like 22,000 writes/second sustained across 1M records: http://blog.hunch.se/2009/02/28-tokyo-cabinet You might argue that the theoretical scalability of BigTable's distributed store is higher... but we're talking about two full orders of magnitude difference. Will I ever near the 100-google-server equivalent load? Could I pay for it if I did? 100 CPUs (measured) running for 1 month is about $7,200. Actual CPU speed is at least twice the measured rate, so a single Tokyo Tyrant is theoretically equivalent to almost $15,000/month of appengine hosting. Ouch. Maybe this isn't an apples to apples comparison. Sure, there aren't extra indexes on those Tyrant entities... but to be honest, few of my entities have extra indexes. What other factors could change this analysis? Thoughts? BTW Tim, you may very well have quite a few indexes on your entities. In JDO, nearly all single fields are indexed by default. You must explicitly add an annotation to your fields to make them unindexed. With Objectify, you can declare your entity as
[appengine-java] Re: GAE Alternatives?
I have to concur with Corby on this ... I was initially attracted to the end-to-end solution that GAE offered integrated as it is with Eclipse. In practice I have found it very frustrating to develop on GAE because of: - the class white list and 3rd party framework usage (i.e Spring) - the truly frustrating metering exceptions that the Datastore and Servlet container throw, coding around those is painful... you have to invent your own transaction compensation... - the lack of any Java based bullk load facility for DS (I had to write my own) (which is when you trip up over the metering exceptions...) - the limitations of mapping BigTable under JPA/JDO - the paucity of debugging on the production server (the log WUI is woeful for this) We have reached the stage with our app where we will probably move it off GAE and onto EC2 where despite the additional work involved in dealing with AMI lifecycle vs .war we are more in control of the underlying environment (although I am sure there are a similar, but different, set of hiccups and hurdles awaiting us ...) - Larry On Feb 24, 10:17 am, Corby cep...@gmail.com wrote: On Feb 24, 10:39 am, A1programmer derrick.simp...@gmail.com wrote: Are there any good alternatives to Google App Engine out there? I am finding that I cannot rely on GAE for a production quality environment. I am very excited about the future of Google App Engine, but I am in the same boat, Derrick. I am working with a startup that tried to get up and running on Google App Engine, but we have since migrated to Spring Cloud Foundry, which runs on Amazon's EC2 architecture. It is a heavier-weight environment, and the monthly costs are higher, but the development costs are much, much cheaper, and we have far fewer unexpected Production problems. There's a huge attraction to the tiny resource requirement to maintain a WAR file deployment versus the large requirements of a EC2 style VM. I agree, but for me there is an even larger attraction to having predictable behavior in our Production environment, and we can't currently get that from GAE. Some people are happy with BigTable as a general persistence solution, but we are not. The whitelisted classloader makes every attempt to integrate with third-party libraries an adventure. And the nature of GAE's on-demand provisioning makes it difficult to guarantee the response times we want for our customers. The crushing blow to our morale is code that runs perfectly in our development environment, but breaks when deployed to GAE. I have a lot of faith in the Google team, and I can't wait to see what GAE looks like a year from now. But right now, I can only recommend it for the simplest of internal apps, nothing client-facing. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] How expensive is a memcache instance?
The memcache is a really important feature to increase performance. However I am not sure how to design my application in regards of how to use memcache in the best way to cache various kinds of objects. Often you have the need to cache different types of objects in an application. It would be most convenient to create one memcache instance for each kind. However I am not sure what happens in the background if I create multiple instances using CacheManager.getInstance().getCacheFactory().createCache(). Is this an expensive operation? To clarify here an example: Lets assume I have a web shop. Probably I would like to put the shopping carts in the cache but also maybe the most frequently bought articles. The most easy way would be to have one memcache instance for the shopping carts and a separate one for the articles. So I don't have to deal with potential conflicts for the keys and the cast of object types I get back. But would it we advisable to use only one cache instance in this case to save resources? I can imagine that for larger application you end up with a whole bunch of cache instances. Thanks for any hint. I believe that the answer is useful for many other developers. -- 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] How expensive is a memcache instance?
Nope, this is cheap. Do it as many times as you need. You're not instantiating a Memcache instance. You're instantiating a client instance. On Wed, Feb 24, 2010 at 3:24 PM, Mouseclicker jens.h...@googlemail.comwrote: The memcache is a really important feature to increase performance. However I am not sure how to design my application in regards of how to use memcache in the best way to cache various kinds of objects. Often you have the need to cache different types of objects in an application. It would be most convenient to create one memcache instance for each kind. However I am not sure what happens in the background if I create multiple instances using CacheManager.getInstance().getCacheFactory().createCache(). Is this an expensive operation? To clarify here an example: Lets assume I have a web shop. Probably I would like to put the shopping carts in the cache but also maybe the most frequently bought articles. The most easy way would be to have one memcache instance for the shopping carts and a separate one for the articles. So I don't have to deal with potential conflicts for the keys and the cast of object types I get back. But would it we advisable to use only one cache instance in this case to save resources? I can imagine that for larger application you end up with a whole bunch of cache instances. Thanks for any hint. I believe that the answer is useful for many other developers. -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: GAE Alternatives?
It depends on your app. For small business app, you may check out force.com, which offers free developer account. I use both GAE and force.com because I'm excited about connecting google cloud with salesforce cloud. but, GAE's current state of reliability and performance is a bit concern. Hope GAE grows up faster. -aj On Wed, Feb 24, 2010 at 3:20 PM, Larry Cable larry.ca...@gmail.com wrote: I have to concur with Corby on this ... I was initially attracted to the end-to-end solution that GAE offered integrated as it is with Eclipse. In practice I have found it very frustrating to develop on GAE because of: - the class white list and 3rd party framework usage (i.e Spring) - the truly frustrating metering exceptions that the Datastore and Servlet container throw, coding around those is painful... you have to invent your own transaction compensation... - the lack of any Java based bullk load facility for DS (I had to write my own) (which is when you trip up over the metering exceptions...) - the limitations of mapping BigTable under JPA/JDO - the paucity of debugging on the production server (the log WUI is woeful for this) We have reached the stage with our app where we will probably move it off GAE and onto EC2 where despite the additional work involved in dealing with AMI lifecycle vs .war we are more in control of the underlying environment (although I am sure there are a similar, but different, set of hiccups and hurdles awaiting us ...) - Larry On Feb 24, 10:17 am, Corby cep...@gmail.com wrote: On Feb 24, 10:39 am, A1programmer derrick.simp...@gmail.com wrote: Are there any good alternatives to Google App Engine out there? I am finding that I cannot rely on GAE for a production quality environment. I am very excited about the future of Google App Engine, but I am in the same boat, Derrick. I am working with a startup that tried to get up and running on Google App Engine, but we have since migrated to Spring Cloud Foundry, which runs on Amazon's EC2 architecture. It is a heavier-weight environment, and the monthly costs are higher, but the development costs are much, much cheaper, and we have far fewer unexpected Production problems. There's a huge attraction to the tiny resource requirement to maintain a WAR file deployment versus the large requirements of a EC2 style VM. I agree, but for me there is an even larger attraction to having predictable behavior in our Production environment, and we can't currently get that from GAE. Some people are happy with BigTable as a general persistence solution, but we are not. The whitelisted classloader makes every attempt to integrate with third-party libraries an adventure. And the nature of GAE's on-demand provisioning makes it difficult to guarantee the response times we want for our customers. The crushing blow to our morale is code that runs perfectly in our development environment, but breaks when deployed to GAE. I have a lot of faith in the Google team, and I can't wait to see what GAE looks like a year from now. But right now, I can only recommend it for the simplest of internal apps, nothing client-facing. -- 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. -- AJ Chen, PhD Chair, Semantic Web SIG, sdforum.org http://web2express.org @web2express on twitter Palo Alto, CA, USA 650-283-4091 *Monitoring social media in real time* -- 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: Problem whit upload form multipart
Ok muchas gracias por sus respuestas, efectivamente habia 2 versiones de fileupload y common-io en el path build\web\WEB-INF\lib, esto es extraño porque edite las librerias de struts de mi proyecto y quite las mas antiguas, sin embargo Netbeans quitaba las referencias pero los archivos seguian en el build. Bueno el problema se soluciono simplemente borrando estos jar. Gracias por su tiempo. On 17 feb, 00:01, John Patterson jdpatter...@gmail.com wrote: Do you have a different version of the jar in your lib directory to the one on your build path? On 17 Feb 2010, at 09:11, NIko Judo wrote: Hola he probado el codigo siguiente para recibir un formulario multipart en mi aplicacion : Test folowing code import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.io.InputStream; import java.io.IOException; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FileUpload extends HttpServlet { private static final Logger log = Logger.getLogger(FileUpload.class.getName()); public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try { ServletFileUpload upload = new ServletFileUpload(); res.setContentType(text/plain); FileItemIterator iterator = upload.getItemIterator(req); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (item.isFormField()) { log.warning(Got a form field: + item.getFieldName()); } else { log.warning(Got an uploaded file: + item.getFieldName() + , name = + item.getName()); // You now have the filename (item.getName() and the // contents (which you can read from stream). Here we just // print them back out to the servlet output stream, but you // will probably want to do something more interesting (for // example, wrap them in a Blob and commit them to the // datastore). int len; byte[] buffer = new byte[8192]; while ((len = stream.read(buffer, 0, buffer.length)) != -1) { res.getOutputStream().write(buffer, 0, len); } } } } catch (Exception ex) { throw new ServletException(ex); } } �...@override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } el caso es que simpre me da un error cuando envio el formulario con image folowing error : Error for /FileUpload java.lang.NoSuchMethodError: org .apache .commons.fileupload.servlet.ServletFileUpload.getItemIterator(Ljavax/ servlet/http/HttpServletRequest;)Lorg/apache/commons/fileupload/ FileItemIterator; at com.ubicacion.servlet.FileUpload.doPost(FileUpload.java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1093) at com .google .apphosting .utils .servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java: 97) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com .google .apphosting .runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java: 35) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com .google .apphosting .utils .servlet .TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 360) at org .mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com .google .apphosting .runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: 238) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506)
[appengine-java] Re: Problem with persistance
Hi Jake, thanks a lot for your answer. After changing the mappedBy statement to child like this: @Persistent(mappedBy = mOfferDetails) private Offer mOffer; and removing mappedBy from parent, Offer object seems to be persisted. But when I get this object from the database with: public Offer getOfferWithId (long id) { return pm.getObjectById(Offer.class, id); } and try to access child with System.out.printf(String.format (Title %s, mOffer.getOfferDetails().getOfferDescription() )); I get following error: java.lang.NullPointerException at com.sparradar.server.action.actioncommands.ShowOfferDetailsActionCommand.execute(ShowOfferDetailsActionCommand.java: 41) at info.rk.vaadinapp.manager.urldispatching.URLActionDispatcher.handleURI(URLActionDispatcher.java: 90) at com.vaadin.ui.Window.handleURI(Window.java:358) at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleURI(AbstractCommunicationManager.java: 1830) at com.vaadin.terminal.gwt.server.CommunicationManager.handleURI(CommunicationManager.java: 311) at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.handleURI(AbstractApplicationServlet.java: 912) at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java: 471) at com.vaadin.terminal.gwt.server.GAEApplicationServlet.service(GAEApplicationServlet.java: 231) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1093) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java: 51) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java: 121) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java: 70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at com.google.appengine.tools.development.JettyContainerService $ApiProxyHandler.handle(JettyContainerService.java:352) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506) at org.mortbay.jetty.HttpConnection $RequestHandler.headerComplete(HttpConnection.java:830) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 396) at org.mortbay.thread.BoundedThreadPool $PoolThread.run(BoundedThreadPool.java:442) I don't get the error if I try to access eg mOffer.getId(). So my interpretation of this error is that either the child object was not saved in the database, or it was not fetched from the database. I don't know how to verify this. Thanks, Anton On 24 Feb., 20:17, Jake jbrooko...@cast.org wrote: http://code.google.com/appengine/docs/java/datastore/relationships.ht... You create a bidirectional one-to-one relationship using fields on both classes, with an annotation on the child class's field to declare that the fields represent a bidirectional relationship. The field of the child class must have a @Persistent annotation with the argument mappedBy = ..., where the value is the name of the field on the parent class. From what I see, you have it backwards, with the annotation in the parent class. Jake On Feb 24, 4:26 am, Anton Klotz dipl.ing.akl...@googlemail.com wrote: Hi, could please somebody tell me, what I'm doing wrong here? Here is one child datastructure I want to persist: @PersistenceCapable public class OfferDetails { @PrimaryKey @Persistent(valueStrategy =
Re: [appengine-java] news on remote_api for java ?
You should be able to connect this: ?xml version=1.0 encoding=utf-8? web-app !-- Add this to your web.xml to enable remote API on Java. -- servlet servlet-nameremoteapi/servlet-name servlet-classcom.google.apphosting.utils.remoteapi.RemoteApiServlet/servlet-class /servlet servlet-mapping servlet-nameremoteapi/servlet-name url-pattern/remote_api/url-pattern /servlet-mapping security-constraint web-resource-collection web-resource-nameremoteapi/web-resource-name url-pattern/remote_api/url-pattern /web-resource-collection auth-constraint role-nameadmin/role-name /auth-constraint /security-constraint /web-app I'll dig for some sample code for the Java bulkloader. We're working on official docs. On Tue, Feb 9, 2010 at 1:22 AM, emerix rafa...@gmail.com wrote: Hi, Does anybody have some news on the remote_api for java ? It would be great to be able to use our JDO/JPA objects to interact with the datastore without having to upload a version to appengine ! Thanx :) emerix -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] Deleting Entities By Query or the PersistenceManager's deletePersistentAll()
I'm not certain there's a big benefit either way, as you still have to remove all the indexes related to the entities. What have your benchmarks reported? On Wed, Feb 17, 2010 at 12:06 PM, Shai levys...@gmail.com wrote: Hi When I delete entities by query am I limited to 500 entities like when I am using PersistenceManager.deletePersistentAll() ? Also, if we ignore the object fetch time - what would consume less CPU time ? Can someone estimate if making many delete queries of smaller amounts of data would be better than getting all the data to for a big pm.deletePersistentAll() opertaion ? Thanks, Shai -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] Ghost rows in Datastore - cant get some rows in a queries until I resave them in the Datastore viewer
Were you able to resolve this? What's your app-id? On Wed, Feb 17, 2010 at 2:18 PM, Shai levys...@gmail.com wrote: HI, I encountered something strange when running queries in my application so I went to the Datastore Viewer and reproduced it in there, maybe someone can help me out: I have a table with a string column named 'owner' and + int column names 'seesionId' (+ some irrelevant columns) Everything is reproducing in datastore viewer: When I make the query SELECT * FROM table where owner = '[owner]' I can see a row with the owner and a sessionId with value 7 So I tried: SELECT * FROM table where owner = '[owner]' and sessionId = 7 And the row didn't return ! So I open the row, didn't (!) change any thing and saved it. Now the same query did return the row I really don't understand it Can any one point me to what went wrong ? I have a lot of rows with the same problem and I really need to clean my datastore -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] java.lang.RuntimeException: Version not ready.
I've seen this issue with certain deploys where we may not report the correct error message, but I'm assuming you wrote a simple application that wouldn't have had any of those issues. This likely coincided with a maintenance period. You should be able to deploy. If you can't, please let us know your application ID. On Wed, Feb 17, 2010 at 6:56 PM, Swiki software.wikipe...@gmail.com wrote: Hi, I just signed up for google app engine and installed the Eclipse plugin. I did not add any other code to the default app and am able to run the app in my local eclipse env without any problem. I get error while deploying the app to google server my app id is : twittermutuality Here is console output when tried second time: Compiling module test.Test Compiling 6 permutations Compiling permutation 0... Compiling permutation 1... Compiling permutation 2... Compiling permutation 3... Compiling permutation 4... Compiling permutation 5... Compile of permutations succeeded Linking into C:\Workspaces\Personal\Test\war\test. Link succeeded Compilation succeeded -- 16.828s Creating staging directory Scanning for jsp files. Scanning files on local disk. Initiating update. Cloning 32 static files. Cloning 56 application files. Uploading 0 files. Initializing precompilation... Deploying new version. Will check again in 1 seconds Will check again in 2 seconds Will check again in 4 seconds Will check again in 8 seconds Will check again in 16 seconds Will check again in 32 seconds Will check again in 64 seconds Will check again in 128 seconds Rolling back the update. java.lang.RuntimeException: Version not ready. Below are the logs: --- Unable to update: java.lang.RuntimeException: Version not ready. at com.google.appengine.tools.admin.AppVersionUpload.commit(AppVersionUpload.java: 466) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: 127) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 56) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 271) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Any help will be appreciated. -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] java.lang.RuntimeException: Version not ready.
Er, excuse me, the app-id is in the original email. In any case, please let us know if this has worked for you. On Wed, Feb 24, 2010 at 5:02 PM, Ikai L (Google) ika...@google.com wrote: I've seen this issue with certain deploys where we may not report the correct error message, but I'm assuming you wrote a simple application that wouldn't have had any of those issues. This likely coincided with a maintenance period. You should be able to deploy. If you can't, please let us know your application ID. On Wed, Feb 17, 2010 at 6:56 PM, Swiki software.wikipe...@gmail.comwrote: Hi, I just signed up for google app engine and installed the Eclipse plugin. I did not add any other code to the default app and am able to run the app in my local eclipse env without any problem. I get error while deploying the app to google server my app id is : twittermutuality Here is console output when tried second time: Compiling module test.Test Compiling 6 permutations Compiling permutation 0... Compiling permutation 1... Compiling permutation 2... Compiling permutation 3... Compiling permutation 4... Compiling permutation 5... Compile of permutations succeeded Linking into C:\Workspaces\Personal\Test\war\test. Link succeeded Compilation succeeded -- 16.828s Creating staging directory Scanning for jsp files. Scanning files on local disk. Initiating update. Cloning 32 static files. Cloning 56 application files. Uploading 0 files. Initializing precompilation... Deploying new version. Will check again in 1 seconds Will check again in 2 seconds Will check again in 4 seconds Will check again in 8 seconds Will check again in 16 seconds Will check again in 32 seconds Will check again in 64 seconds Will check again in 128 seconds Rolling back the update. java.lang.RuntimeException: Version not ready. Below are the logs: --- Unable to update: java.lang.RuntimeException: Version not ready. at com.google.appengine.tools.admin.AppVersionUpload.commit(AppVersionUpload.java: 466) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: 127) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: 56) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java: 271) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java: 148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java: 38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Any help will be appreciated. -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] NullPointerException while running a new app
What's your application ID? On Fri, Feb 19, 2010 at 12:05 AM, Alberty Pascal alberty.pas...@gmail.comwrote: Hi all, while updating my application, I got the following stack for all request made on it. I try to deploy a really simple new application (created with Eclipse and its plugin) and got the same stack. Any idea ? Thanks Pascal java.lang.NullPointerException at com.google.appengine.runtime.Request.process-7d335e6a040b96cc(Request.java) at org.apache.jsp.index_jsp._jspService(index_jsp.java:44) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) at javax.servlet.http.HttpServlet.service(HttpServlet.java:693) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1093) at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java: 97) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java: 35) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: 238) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506) at org.mortbay.jetty.HttpConnection $RequestHandler.headerComplete(HttpConnection.java:830) at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java: 76) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java: 135) at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java: 235) at com.google.apphosting.base.RuntimePb$EvaluationRuntime $6.handleBlockingRequest(RuntimePb.java:5485) at com.google.apphosting.base.RuntimePb$EvaluationRuntime $6.handleBlockingRequest(RuntimePb.java:5483) at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java: 24) at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: 363) at com.google.net.rpc.impl.Server$2.run(Server.java:837) at com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java: 56) at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java: 536) at com.google.net.rpc.impl.Server.startRpc(Server.java:792) at com.google.net.rpc.impl.Server.processRequest(Server.java:367) at com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java: 448) at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java: 319) at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java: 290) at com.google.net.async.Connection.handleReadEvent(Connection.java: 474) at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java: 774) at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java: 205)
Re: [appengine-java] Performance testing my App
You should fill out the following form: http://code.google.com/support/bin/request.py?contact_type=AppEngineBillingSupport On Fri, Feb 19, 2010 at 4:53 AM, Sandeep sandeep.ba...@gmail.com wrote: Hi, I wanted to know what is the procedure/notifications that need to be followed to communicate to Google App support team in case I want to run a performance test where I am going to be putting a load of 1000 users with 50 concurrent users. Any inputs are appreciated! Thanks in advance, Sandeep -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] Child objects not stored on GEA using JDO from Scala code
You might want to ask on the Scala groups because I don't see a lot of Scala questions asked on this group. That being said, I've fiddled with Scala on App Engine before with some success. A few tips from what I've learned: - You don't need to create a Key. JDO will acquire a unique key for you. Even with nanotime, there is a chance of a collision. You're doing unnecessary work. - The Persistent Annotation on Criteria may require a MappedBy parameter: http://code.google.com/appengine/docs/java/datastore/relationships.html In general, I've found that it makes more sense to define the data models using Java, since sometimes the class enhancement works unexpectedly with Scala generated bytecode. On Sat, Feb 20, 2010 at 5:47 AM, Gero Vermaas kivanot...@gmail.com wrote: Hi, I'm have a parent-child relation between 2 classes, but the child objects are never stored. I do get an warning: org.datanucleus.store.appengine.MetaDataValidator checkForIllegalChildField: Unable to validate relation net.vermaas.kivanotify.model.UserCriteria.internalCriteria but it is unclear to me why this occurs. Already tried several alternatives without luck. The parent class is UserCriteria which has a List of Criteria as children. The classes are defined as follows (Scala): class UserCriteria(tu: String, crit: Map[String, String]) extends LogHelper { @PrimaryKey @Persistent{val valueStrategy = IdGeneratorStrategy.IDENTITY} var id = KeyFactory.createKey(UserCriteria, System.nanoTime) @Persistent var twitterUser = tu @Persistent var internalCriteria: java.util.List[Criteria] = flatten(crit) def flatten(crits: Map[String, String]) : java.util.List[Criteria] = { val list = new java.util.ArrayList[Criteria] for (key - crits.keySet) { list.add(new Criteria(this, key, crits(key))) } list } def criteria: Map[String, String] = { val crits = mutable.Map.empty[String, String] for (i - 0 to internalCriteria.size-1) { crits(internalCriteria.get(i).name) = internalCriteria.get(i).value } Map.empty ++ crits } // Stripped the equals, canEquals, hashCode, toString code to keep the code snippet short... } @PersistenceCapable @EmbeddedOnly class Criteria(uc: UserCriteria, nm: String, vl: String) { @Persistent var userCriteria = uc @Persistent var name = nm @Persistent var value = vl override def toString = { Criteria name: + name + value: + value } } Any ideas why the childs are not stored? Or why I get the error message? Regards, Gero -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: problem with Unowned relationship beetwen a Root entity and a Entity of an EntityGroup
Can you post code and a stack trace? If you have a JUnit test case that'd be helpful as well. On Wed, Feb 24, 2010 at 2:30 PM, nicolas melendez nfmelen...@gmail.comwrote: Nobody helps :( NM El feb 23, 2010 11:08 a.m., nicolas melendez nfmelen...@gmail.com escribió: Hi, i have an Unowned relationship beetwen a *Root entity* and a Entity of an EntityGroup. *Root entity *isn't part of the* *entity group. So, to the Entity of an EntityGroup i set the key of my *Root Entity* and I persist. Then when a do the getKey of the *Root Entity* to the Entity of the EntityGroup, y get a null, and then when i use it a Null pointer exception. Anybody, knows why? I am missing something? Thanks NM -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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] Citical Security error in Accounts Java API: request.getUserPrincipal() gets wrong username/email
Probably OAuth, though I'm not sure how that will work with a gadget. In most places gadgets will include a user ID with the makeRequest. On Tue, Feb 23, 2010 at 12:23 PM, Thomas Schnocklake thomas.schnockl...@googlemail.com wrote: Thank you for your answer. So what would you suppose to use for authentication for a gadget that is places in google apps (e.g. gmail, google sites ) ? thanks thomas 2010/2/18 Ikai L (Google) ika...@google.com Yes, this seems to make sense. Being logged into Google Apps is independent of being logged into an App Engine application. They don't use the same cookie. App Engine's User service allows you to use Google logins, but not the Google Apps session. On Tue, Feb 16, 2010 at 3:29 AM, tsschnoc thomas.schnockl...@googlemail.com wrote: Hello, I use App Engine in my Google Apps domain and restricted the authentification of app engine to my apps domain. (see http://code.google.com/appengine/articles/auth.html ) I developed a widget and use this in multiple accounts of my google apps domain. When i switch from one account (of my apps domain) to the other, the former account is displayed in the widget (Java: request.getUserPrincipal().getName() ). So the gadget placed on my Google Apps Inbox displays data of a user different to the user logged in to google apps. I noticed that the problems goes away when i wait some minutes ( session expiration ?? ). see picture: http://picasaweb.google.com/lh/photo/QDcR2Lgk2xI2-UQ77BoGXw?feat=directlink -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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.comgoogle-appengine-java%2bunsubscr...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: problem with Unowned relationship beetwen a Root entity and a Entity of an EntityGroup
Ok i will do one. Thanks. Nm El feb 24, 2010 10:32 p.m., Ikai L (Google) ika...@google.com escribió: Can you post code and a stack trace? If you have a JUnit test case that'd be helpful as well. On Wed, Feb 24, 2010 at 2:30 PM, nicolas melendez nfmelen...@gmail.com wrote: Nobody helps :( NM El feb 23, 2010 11:08 a.m., nicolas melendez nfmelen...@gmail.com ... -- 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. -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/app_engine -- 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.