[appengine-java] Blobstore and 206 (Partial Content) responses
The BlobstoreService recently added support for serving partial byte ranges from a blob. When this method is invoked the response is generated with a HTTP 206 (Partial Content) status code. So it looks like app engine assumes that it is always serving a Range request in this case. However, in my case I have bundled many files into one blob entry and I know the byte range of each. From the client's perspective they only access a URL representing an individual file. Behind the scenes, I invoke the ByteRange based serve method on the blob store to serve the file. HTTP 200 is the more appropriate response in my case however the app engine always returns 206. Is there a way to override this behavior? (i.e. return 200 instead of 206?) Thanks, Keyur -- 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: update_indexes error
Can someone on the app engine team help me out? Thanks, Keyur On Jun 10, 5:45 pm, keyurva keyu...@gmail.com wrote: I have a Java app deployed on app engine and I use appcfg.py of the Python SDK to vacuum and update my indexes. Today I first ran vacuum_indexes and that completed successfully - i.e. it en-queued tasks to delete my existing indexes. The next step was probably a mistake on my part - I then ran update_indexes even though my previous indexes weren't yet deleted. Needless to say that my update_indexes call errored out. So much so that now when I look at my app engine console, it shows the status of all my indexes as Error. Can someone help my out of my fix?! Thanks, Keyur -- 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: update_indexes error
FWIW, I followed what was suggested in the error logs and that worked for me: 1. Empty the index.yaml file (create a backup first) 2. Run vacuum_indexes again 3. Look at your app's admin console and don't go to the next step till all your indexes are deleted. 4. Specify the indexes you want to be created in index.yaml 5. Run update_indexes 6. Look at your app's admin console and it should show that your indexes are now building. 7. Enjoy the fruits of your labor :) Cheers, Keyur On Jun 11, 9:45 am, keyurva keyu...@gmail.com wrote: Can someone on the app engine team help me out? Thanks, Keyur On Jun 10, 5:45 pm, keyurva keyu...@gmail.com wrote: I have a Java app deployed on app engine and I use appcfg.py of the Python SDK to vacuum and update my indexes. Today I first ran vacuum_indexes and that completed successfully - i.e. it en-queued tasks to delete my existing indexes. The next step was probably a mistake on my part - I then ran update_indexes even though my previous indexes weren't yet deleted. Needless to say that my update_indexes call errored out. So much so that now when I look at my app engine console, it shows the status of all my indexes as Error. Can someone help my out of my fix?! Thanks, Keyur -- 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] update_indexes error
I have a Java app deployed on app engine and I use appcfg.py of the Python SDK to vacuum and update my indexes. Today I first ran vacuum_indexes and that completed successfully - i.e. it en-queued tasks to delete my existing indexes. The next step was probably a mistake on my part - I then ran update_indexes even though my previous indexes weren't yet deleted. Needless to say that my update_indexes call errored out. So much so that now when I look at my app engine console, it shows the status of all my indexes as Error. Can someone help my out of my fix?! Thanks, Keyur -- 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] Datastore stats
I am querying the __Stat_Kind__ kind. It does not return me entities about kinds that currently exist in the datastore but it includes entities about kinds that I had deleted more than a week ago. I am not so much concerned about it returning me the non-existent kinds - the doc does mention this scenario after all. But I am concerned that it does not return me info about my current kinds. Is this a known issue or am I doing something wrong? --- Also, on the dev server neither __Stat_Kind__ nor __Stat_Total__ return any entities. Which means I need to deploy my app to appspot before I can test this behavior. It would be nice if the dev server did return some basic info. Thanks, Keyur -- 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] Dev Server: response.setHeader() has no effect
On the dev server I call setHeader() on the response but it doesn't seem to set it - coz when I call containsHeader() immediately after calling setHeader() it returns false. response.setHeader(Content-Encoding, gzip); logger.info(response.containsHeader(Content-Encoding)); //prints false Is this a known issue? It used to work in previous versions of the SDK. I'm using 1.3.4 Thanks, Keyur P.S.: I know that the production server gzips the content itself. As much as I don't like it, no I don't set the Content-Encoding header in production. -- 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] Low-level datastore api - query by key property
I'm using the low-level datastore api and I want to query by the key property and another property (let's call it category). So the query filter would be: __key__ IN [k1, k2, ..., kn] and category=foo I need to query based on a list of keys for which I'll use the IN operator. I know that the max. number of values you can provide for the IN clause is 30. I have 2 questions: 1. Does the limit of 30 IN values apply to the key property as well? 2. Do I need to create a composite index on {__key__ + category} or just on {category} for this query? Thanks, Keyur -- 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: RE : [appengine-java] Is the MemcacheService LRU?
Thanks, Ikai. On Apr 30, 5:19 pm, Ikai L (Google) ika...@google.com wrote: Yes, Memcache uses LRU to expire elements: http://en.wikipedia.org/wiki/Memcached Romain, this stands for Least Recently Used and refers to Memcache automatically throwing items out of the cache if they have not been written/read and the space is needed. What this essentially means is that you won't ever have an out-of-memory error. On Fri, Apr 30, 2010 at 12:02 PM, Romain Pelisse bela...@gmail.com wrote: Computer science is full of acromym, that are sometimes badly translated. If were you i'elle explain what you are thinking of by LRU. Le 30 avr. 2010 20:02, keyurva keyu...@gmail.com a écrit : Can someone confirm or refute if the MemcacheService is LRU or not? I'm looking to implement a sliding expiration within the memcache service but if it is already an LRU then I don't need to bother. Thanks, Keyur -- 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 Relations, Google App Engine Twitter:http://twitter.com/ikai Delicious:http://delicious.com/ikailan Google App Engine links: Blog:http://googleappengine.blogspot.com Twitter:http://twitter.com/app_engine Reddit:http://www.reddit.com/r/appengine -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Is the MemcacheService LRU?
Can someone confirm or refute if the MemcacheService is LRU or not? I'm looking to implement a sliding expiration within the memcache service but if it is already an LRU then I don't need to bother. Thanks, Keyur -- 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] BlobstoreService fetchData - 2 small fetches or 1 large fetch?
I have an interesting problem with my blob store fetches - I need to fetch 2 chunks of data 5 bytes each that are 1000 bytes apart. From the perspective of the BlobstoreService, is it more efficient for me to make 2 fetchData calls of 5 bytes each or 1 fetchData call of 1010 bytes? Thanks, Keyur -- 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: Uploading blobs and authentication
Submitted a new feature request for this: http://code.google.com/p/googleappengine/issues/detail?id=3160 == Keyur On Apr 26, 1:57 pm, keyurva keyu...@gmail.com wrote: Currently to upload blobs, the blob store service creates a unique one- time URL that a user can post blobs to. My requirement is that I only want authenticated / authorized users to post blobs in my application. I can achieve this currently if the page that includes the multipart form to upload blobs is in my application. However, I am looking to providing a REST API for my users to upload their blobs. While it is true that the one-time nature of the upload URL mitigates the chances of rogue use but it's still possible. I was wondering if the app engine team can consider a feature where developers can register an upload listener. A standard servlet filter could also potentially do the job. This will give us an opportunity to authenticate / validate / decorate requests before the request gets forwarded to the blob store service. Thanks, Keyur -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group athttp://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Uploading blobs and authentication
Currently to upload blobs, the blob store service creates a unique one- time URL that a user can post blobs to. My requirement is that I only want authenticated / authorized users to post blobs in my application. I can achieve this currently if the page that includes the multipart form to upload blobs is in my application. However, I am looking to providing a REST API for my users to upload their blobs. While it is true that the one-time nature of the upload URL mitigates the chances of rogue use but it's still possible. I was wondering if the app engine team can consider a feature where developers can register an upload listener. A standard servlet filter could also potentially do the job. This will give us an opportunity to authenticate / validate / decorate requests before the request gets forwarded to the blob store service. Thanks, Keyur -- 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: DatastoreService instances
Thanks John and Jeff. Thread-safety is a good enough reason to not keep a DS instance lying around. On Apr 1, 8:52 pm, Jeff Schnitzer j...@infohazard.org wrote: Appengine devs have said on a number of occasions that we should not assume thread-safety of any class not documented as being thread-safe. I don't see anything in the javadocs indicating that DatastoreService is thread-safe, therefore keeping an appwide instance of DS is probably risky - even if it works today. I'd suggest opening a fresh DatastoreService very time you need one. Jeff On Thu, Apr 1, 2010 at 7:07 PM, John Patterson jdpatter...@gmail.com wrote: As Ikai pointed out a DatastoreService is really very light weight so it really makes very little difference. If you are changing the config properties from place to place your only options are to cache each service by config or create a new one each time. If I were writing code by hand I would choose the simple option of creating one as needed with the options you want at the time. On 2 Apr 2010, at 08:09, keyurva wrote: In my application, I create a DatastoreService instance, maintain a reference to it and use it for the life of that instance of the application. In another discussion I learned that the cost of creating a new DatastoreService instance is negligible. Given that, is it still advisable for me to maintain a copy of the DatastoreService instance or should I create one anew every time I need to go to the datastore? Thanks, Keyur -- 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. -- 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: DatastoreService instances
Thanks John and Jeff. On Apr 1, 8:52 pm, Jeff Schnitzer j...@infohazard.org wrote: Appengine devs have said on a number of occasions that we should not assume thread-safety of any class not documented as being thread-safe. I don't see anything in the javadocs indicating that DatastoreService is thread-safe, therefore keeping an appwide instance of DS is probably risky - even if it works today. I'd suggest opening a fresh DatastoreService very time you need one. Jeff On Thu, Apr 1, 2010 at 7:07 PM, John Patterson jdpatter...@gmail.com wrote: As Ikai pointed out a DatastoreService is really very light weight so it really makes very little difference. If you are changing the config properties from place to place your only options are to cache each service by config or create a new one each time. If I were writing code by hand I would choose the simple option of creating one as needed with the options you want at the time. On 2 Apr 2010, at 08:09, keyurva wrote: In my application, I create a DatastoreService instance, maintain a reference to it and use it for the life of that instance of the application. In another discussion I learned that the cost of creating a new DatastoreService instance is negligible. Given that, is it still advisable for me to maintain a copy of the DatastoreService instance or should I create one anew every time I need to go to the datastore? Thanks, Keyur -- 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. -- 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] Low-level API and eventual consistency
I use the low-level datastore API. At runtime, I want to use the new eventual consistency on occasions and strong consistency at others. I was looking at the Query class to set the consistency option but noticed that it is only available in DatastoreServiceConfig. Is it expected that one needs to use different DatastoreService instances for different read policies? Or am I missing something obvious? Thanks, Keyur -- 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] Java bulkloader
I understand that the official docs for the Java bulkloader are currently being worked on. In the interim is it possible to get any kind of sample code that we can look at? Thanks, Keyur -- 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] EQUAL operator on string properties
This has to be the first query that works but somehow for me a simple EQUAL operator on a string property does not yield results. I'm using the low level datastore api. Now it could be that this is only a local datastore issue and once deployed on app engine it does work. But I'd like someone to confirm this for me. To give an example for my issue - a query such as: SEX = MALE does not work but SEX = MALE AND SEX MALEa does. (This first one of course translates to a query with one EQUAL filter while the second one translates to a query with 2 filters - GREATER_THAN_OR_EQUAL and LESS_THAN). Thanks, Keyur -- 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: EQUAL operator on string properties
This is where embarrassment becomes me. This issue was a false alarm. A case of corrupt data. Sorry for the trouble. == Keyur On Feb 23, 1:37 pm, keyurva keyu...@gmail.com wrote: This has to be the first query that works but somehow for me a simple EQUAL operator on a string property does not yield results. I'm using the low level datastore api. Now it could be that this is only a local datastore issue and once deployed on app engine it does work. But I'd like someone to confirm this for me. To give an example for my issue - a query such as: SEX = MALE does not work but SEX = MALE AND SEX MALEa does. (This first one of course translates to a query with one EQUAL filter while the second one translates to a query with 2 filters - GREATER_THAN_OR_EQUAL and LESS_THAN). Thanks, Keyur -- 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] SQL to Datastore Query object
This is likely a common scenario and I'm wondering if someone has already written some code to do this that I can steal. I'm using the low-level datastore API. In my app, users will be entering a SQL where clause. For instance: category = Java and rating 5 This translates to the com.google.appengine.api.datastore.Query object as such: Query q = new Query(a kind); q.addFilter(category, Query.FilterOperator.EQUAL, Java); q.addFilter(rating, Query.FilterOperator.GREATER_THAN, 5); Has anyone written a generic library that does this translation? Thanks, Keyur -- 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: SQL to Datastore Query object
Hi Vince, Thanks for sharing this. It has much more than what I need, but I'll cut a version off the addFilters() method for my use. Thanks again, Keyur On Jan 6, 12:32 pm, Vince Bonfanti vbonfa...@gmail.com wrote: I've written such a translater that implements a subset of JDOQL: https://code.google.com/p/lowlevelquery/ https://code.google.com/p/lowlevelquery/There's really no documentation other than the source code, which is a single class: https://code.google.com/p/lowlevelquery/source/browse/trunk/src/com/n... https://code.google.com/p/lowlevelquery/source/browse/trunk/src/com/n...The LowLevelQuery class contains a number of static methods that let you execute a JDOQL-like query string directly; for example: ListEntity results = LowLevelQuery.asList( select from myKind where category = 'Java' and rating 5 ); LowLevelQuery also implements the PreparedQuery interface; you can create a LowLevelQuery instance from a query string and then use it just like you would a PreparedQuery; for example: PreparedQuery myQuery = new LowLevelQuery( select from myKind where category = 'Java' and rating 5 ); ListEntity results = myQuery.asList(); Let me know what you think. Vince On Wed, Jan 6, 2010 at 3:06 PM, keyurva keyu...@gmail.com wrote: This is likely a common scenario and I'm wondering if someone has already written some code to do this that I can steal. I'm using the low-level datastore API. In my app, users will be entering a SQL where clause. For instance: category = Java and rating 5 This translates to the com.google.appengine.api.datastore.Query object as such: Query q = new Query(a kind); q.addFilter(category, Query.FilterOperator.EQUAL, Java); q.addFilter(rating, Query.FilterOperator.GREATER_THAN, 5); Has anyone written a generic library that does this translation? Thanks, Keyur -- 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.