[appengine-java] Re: App Engine cold starts and overly aggressive cycling

2010-02-09 Thread mably
Seems to be the case for me too, I've been noticing instance restarts
pretty often these last 2 or 3 days.

On 8 fév, 19:02, Ikai L (Google) ika...@google.com wrote:
 Thanks for the info, Jake. Has anyone else experienced this? That is, has
 anyone else noticed improvement which has since degraded?





 On Mon, Feb 8, 2010 at 9:10 AM, Jake jbrooko...@cast.org wrote:
  Hey all,

  Since Ikai's post on January 22nd, I haven't had much trouble with my
  instance rebooting unexpectedly.  However, today the problem has
  returned.  I'm getting instance restarts within a minute or two of
  each other on a somewhat regular basis - sometimes even within a few
  seconds of each other, caused by my first request.

  Jake

  On Jan 30, 3:06 pm, Edwin Hautus ehau...@gmail.com wrote:
   I am having this problem for the last week or two after months of good
   performance and very little recycling.
   As my app start up time is around 15 seconds this is really hitting my
   user experience in a negative way.

   On Jan 16, 12:32 am, Ikai Lan i...@google.com wrote:

Hey everybody,

We've been seeing more and more reports of applications being cycled
  out
overly aggressively, resulting in some folks implementing (discouraged)
workarounds to keep their application from being cycled out.

- What is your application ID?

   salsa-amsterdam

- How do you know it is being cycled out? You'll need to insert some
  code
that only gets called when the app cold starts.

   I have some logging which is executed on startup

- How much time of inactivity does it take before your application is
  cycled
out?

   Can be as little as a minute.

- What time or days does this seem to happen?

   Seems to happen all the time.

- What frameworks or libraries are you loading?

   Just the plain Servlet API and Groovy.

Any other information you can provide would be helpful.

   Start up time of the app is about 10 seconds and involves some on the
   fly compilation of Groovy scripts.

Ikai Lan
Developer Programs Engineer, Google 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%2B 
  unsubscr...@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 
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] news on remote_api for java ?

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



Re: [appengine-java] Re: vs-accounting.appspot.com - datastore viewer error

2010-02-09 Thread aswath satrasala
Hello Toby,
thanks.
Yes, the property type email could have been empty. Further dev, I will
change them to non-empty.
Now, I cannot trace back those entities from my application, as it is being
tested and is logged in by different users and entities are created.
How can I correct this situation?

-Aswath

On Sat, Feb 6, 2010 at 1:06 AM, Toby Reyelts to...@google.com wrote:

 You have an empty property of type e-mail, and that makes the datastore
 viewer unhappy. You need to either use a different type that can be
 non-empty (like String), or have non-empty e-mails.


 On Thu, Feb 4, 2010 at 10:25 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 My application is running fine.

 I am still getting the datastore viewer error.What can we do in this
 scenario.  How can we get support?

 -Aswath


 On Mon, Feb 1, 2010 at 12:36 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Hello GAE team,
 I am still not able to use the DataStore viewer for my app-id
 'vs-accounting'

 Thanks
 -Aswath


 On Thu, Jan 28, 2010 at 11:08 AM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Local file:
 datastore-indexes

 !-- Used 2 times in query history --
 datastore-index kind=Tenant ancestor=true source=auto
 property name=tenants_INTEGER_IDX direction=asc/
 /datastore-index

 !-- Used 1 time in query history --
 datastore-index kind=Party ancestor=true source=auto
 property name=partys_INTEGER_IDX direction=asc/
 /datastore-index

 !-- Used 1 time in query history --
 datastore-index kind=SecurityGroup ancestor=true source=auto

 property name=secGrpList_INTEGER_IDX direction=asc/
 /datastore-index

 datastore-index kind=PartyRole ancestor=true source=auto
 property name=partyRoles_INTEGER_IDX direction=asc/
 /datastore-index

 /datastore-indexes


 Production:
 Party   partys_INTEGER_IDX ▲
 Includes ancestors
   *Serving*
 PartyRole   partyRoles_INTEGER_IDX ▲
 Includes ancestors
   *Serving*
 SecurityGroup   secGrpList_INTEGER_IDX ▲
 Includes ancestors
   *Serving*
 Tenant   tenants_INTEGER_IDX ▲
 Includes ancestors

 12hrs ago , the secGrpList_INTEGER_IDX  was not shown on the production
 admin console.  Now, it is showing up.

 The datastore viewer is still responding back error page.

 -Aswath


 On Thu, Jan 28, 2010 at 2:48 AM, Ikai L (Google) ika...@google.comwrote:

 What does you local indexes file look like? Can you post the indexes
 listed in your production admin console?

 On Tue, Jan 26, 2010 at 11:24 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Hello GAE team,
 Further observations made while testing the app.  I am not able to
 write entities to the datastore.  Upon examining the logs, I found the
 following error.

 com.veersoft.action.CreateTenantAction doCreate: 
 com.google.appengine.api.datastore.DatastoreNeedIndexException:

 no matching index found..
 datastore-index kind=SecurityGroup ancestor=true source=manual
 property name=secGrpList_INTEGER_IDX direction=asc/







 /datastore-index

 The application is fine on the local develpment server.

 -Aswath


 On Tue, Jan 26, 2010 at 8:51 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Hello,
 My app-id is vs-accounting.

 I login into appengine.google.com. I choose the above application.
 Then I click on the datastore viewer.
 I get the error

  Server Error

 A server error has occurred.

 Return to Applications screen » https://appengine.google.com/

 -Aswath


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

[appengine-java] Some weird exception while deploying struts

2010-02-09 Thread Saeed
Uncaught exception from servlet
java.lang.reflect.InvocationTargetException
at com.google.appengine.runtime.Request.process-
df292afe47330d6f(Request.java)
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(Method.java:43)
at
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:
441)
at
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:
280)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
243)
at
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:
165)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
87)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:
252)
at
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:
68)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
87)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:
122)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:
195)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
87)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:
195)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
87)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:
179)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:
75)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:
94)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:
235)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:
89)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:
130)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:
267)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:
126)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:
138)
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
87)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:
165)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:
164)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
237)
at
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:

[appengine-java] Re: Some weird exception while deploying struts

2010-02-09 Thread Saeed
The above happens when i use Persistence Manager (PMF) with Spring
+Struts.

On Feb 9, 4:11 pm, Saeed saee...@gmail.com wrote:
 Uncaught exception from servlet
 java.lang.reflect.InvocationTargetException
         at com.google.appengine.runtime.Request.process-
 df292afe47330d6f(Request.java)
         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(Method.java:43)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:
 441)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:
 280)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 243)
         at
 com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:
 165)
         at
 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
 87)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:
 252)
         at
 org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:
 68)
         at
 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
 87)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:
 122)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:
 195)
         at
 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
 87)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:
 195)
         at
 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
 87)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:
 179)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:
 75)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:
 94)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:
 235)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:
 89)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:
 130)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:
 267)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:
 126)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:
 138)
         at
 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:
 87)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:
 165)
         at
 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:
 237)
         at
 

[appengine-java] OutOfMemoryError

2010-02-09 Thread Lior Harsat
Hi ,

I am getting OutOfMemoryErrors. The stack trace always points to the
exact same place at the Jetty runtime. see stack trace below
has anyone experienced this?
These errors occur for the same flow in my code (sometime it succeeds
and sometime it get the OutOfMemoryError). this particular flow does
not return too much content (around 5KB).
If my app had a memory problem I would expect to get the
OutOfMemoryErrors all over the place, but, it only happens in one
flow.
please help.

java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.init(Unknown Source)
at java.nio.ByteBuffer.allocate(Unknown Source)
at
com.google.apphosting.runtime.jetty.RpcResponseGenerator.newBufferFromPool(RpcResponseGenerator.java:
213)
at
com.google.apphosting.runtime.jetty.RpcResponseGenerator.init(RpcResponseGenerator.java:
39)
at
com.google.apphosting.runtime.jetty.RpcConnection.init(RpcConnection.java:
41)
at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
99)
at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5233)
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:838)
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:793)
at com.google.net.rpc.impl.Server.processRequest(Server.java:368)
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:
466)
at
com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:
759)
at
com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:
205)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
101)
at
com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
251)
at com.google.apphosting.runtime.JavaRuntime
$RpcRunnable.run(JavaRuntime.java:394)
at java.lang.Thread.run(Unknown Source)

-- 
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.lang.VerifyError

2010-02-09 Thread Steve Shrader
I have an application that has been deployed and running for several
months.  Yesterday it began throwing the error java.lang.VerifyError.
No new deployments or changes in usage on my side.  The code throwing
the error is in this method...

/**
 * Retrieve a list of Expense depending on the Dates and
Vendor passed in.  There will be two
 * execution paths because Vendor does not need to be passed
in as a filter.
 */
@SuppressWarnings(unchecked)  //query is against
Expense.class so it will return ListExpense
public Liststeveshrader.budget.client.dto.Expense
getExpenses(Date startDate, Date endDate, String vendor) {
Liststeveshrader.budget.client.dto.Expense
dtoExpenses = new ArrayListsteveshrader.budget.client.dto.Expense();
String userId = getUserId();
if(userId != null) {
ListExpense expenses = null;

PersistenceManager pm =
PMF.get().getPersistenceManager();
Query query = pm.newQuery(Expense.class);
query.declareImports(import java.util.Date);
query.setOrdering(date asc);

String queryFilter = userId == userIdParam 
date = startDateParam  date = endDateParam;

Map queryParameters = new HashMap();
queryParameters.put(userIdParam, userId);
queryParameters.put(startDateParam,
startDate);
queryParameters.put(endDateParam, endDate);

if(vendor != null  vendor.trim().length() 
0) {  //if a vendor passed in
queryFilter = queryFilter +  
vendor == vendorParam;
queryParameters.put(vendorParam,
vendor);
}

query.setFilter(queryFilter);
expenses = (ListExpense)
query.executeWithMap(queryParameters);

for(Expense e : expenses) {
dtoExpenses.add(new
steveshrader.budget.client.dto.Expense(e.getId(), e.getDate(),
e.getAmount(), e.getVendor(), e.getExpenseType(),
e.getPaymentType()));
}

pm.close();
}
return dtoExpenses;
}

The complete stack trace is...

javax.servlet.ServletContext log: Exception while dispatching incoming
RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract java.util.List
steveshrader.budget.client.BudgetService.getExpenses(java.util.Date,java.util.Date,java.lang.String)'
threw an unexpected exception: java.lang.VerifyError: org/datanucleus/
store/appengine/query/StreamingQueryResult$1
at
com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:
360)
at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
546)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
166)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:
86)
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)
at org.mortbay.jetty.HttpConnection

Re: [appengine-java] DELETE HTTP Method not working on Google Chrome

2010-02-09 Thread Francisco Gonzalez
Hi. Thank you for responding!

Here is my code...

This is de jQuery call:

$.ajax({
type: DELETE,
url: api.getUrl(delete, username, id),
contentType: application/json,
complete: successByStatus(204, onSuccess, onError)
});

I don't see anything on the Appengine Logs after making the request. This is
the response I'm getting on Chrome:


   1. Request URL:
   (..)
   2. Request Method:
   DELETE
   3. Status Code:
   400 Bad Request
   4. Request Headers
  1. Accept:
  */*
  2. Content-Type:
  application/json
  3. Origin:
  (...)
  4. Referer:
  (...)
  5. User-Agent:
  Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML,
  like Gecko) Chrome/5.0.307.5 Safari/532.9
  6. X-Requested-With:
  XMLHttpRequest
  5. Request Payload
  1.
  undefined
  6. Response Headers
  1. Cache-Control:
  private, x-gzip-ok=
  2. Content-Length:
  1350
  3. Content-Type:
  text/html; charset=UTF-8
  4. Date:
  Tue, 09 Feb 2010 14:14:00 GMT
  5. Server:
  GFE/2.0
  6. X-XSS-Protection:
  0




htmlhead meta http-equiv=content-type content=
text/html;charset=utf-8 title400 Bad Request/title style!-- body
{font-family: arial,sans-serif} div.nav {margin-top: 1ex}div.nav A
{font-size: 10pt; font-family: arial,sans-serif} span.nav {font-size: 10pt;
font-family: arial,sans-serif; font-weight: bold} div.nav A,span.big
{font-size: 12pt; color: #cc} div.nav A {font-size: 10pt; color:
black}A.l:link {color: #6f6f6f}A.u:link
{color: green} //--/style script!--var rc=400; //-- /script
/head body
text=#00 bgcolor=#ff table border=0 cellpadding=2 cellspacing=0
width=100%trtd rowspan=3 width=1% nowrap bfont face=times color=
#0039b6 size=10G/fontfont face=times color=#c41200 size=10o/fontfont
face=times color=#f3c518 size=10o/fontfont face=times color=#0039b6 size
=10g/fontfont face=times color=#30a72f size=10l/fontfont face=times
color=#c41200 size=10e/fontnbsp;nbsp;/b tdnbsp;/td/tr trtd
bgcolor=#3366ccfont face=arial,sans-serif color=#ffbError/b
/td/tr trtdnbsp;/td/tr/table blockquote H1Bad Request
/H1 *Your client has issued a malformed or illegal request.* p
/blockquote table width=100% cellpadding=0 cellspacing=0trtd bgcolor
=#3366ccimg alt= width=1 height=4/td/tr/table /body/html

This is the signature of my Spring 3 MVC controller mapped to the URL,
though the request is not reaching this point:

@RequestMapping(method = RequestMethod.DELETE)
@ResponseBody
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public final void delete(...);


We've tried changing the method to POST and it works fine. But we need it to
be a DELETE.

Any ideas?

Thanks!

2010/2/8 Johan Vallejo jvall...@vnperu.com

 Francisco send your code for help you

 El 08/02/2010 10:55 a.m., Francisco Gonzalez escribió:

 Hi.

 I'm developing an application that receives AJAX requests to perform some
 actions. I'm using jQuery to send the requests from the client.

 One of those requests is of type HTTP DELETE.

 The problem is that this request does not work when using Google Chrome on
 the deployed app. It gets a 400 error (bad request) as response.

 It works fine on my local SDK though. Firefox works well on both SDK and
 the deployed app.

 Anyone having the same trouble? Any ideas?

 Thank you in advance!
 --
 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.



-- 
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] OutOfMemoryError

2010-02-09 Thread John Patterson

It looks like the response your RPC method is generating is too big.

On 9 Feb 2010, at 19:53, Lior Harsat wrote:


Hi ,

I am getting OutOfMemoryErrors. The stack trace always points to the
exact same place at the Jetty runtime. see stack trace below
has anyone experienced this?
These errors occur for the same flow in my code (sometime it succeeds
and sometime it get the OutOfMemoryError). this particular flow does
not return too much content (around 5KB).
If my app had a memory problem I would expect to get the
OutOfMemoryErrors all over the place, but, it only happens in one
flow.
please help.

java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.init(Unknown Source)
at java.nio.ByteBuffer.allocate(Unknown Source)
at
com
.google
.apphosting
.runtime
.jetty
.RpcResponseGenerator.newBufferFromPool(RpcResponseGenerator.java:
213)
at
com
.google
.apphosting
.runtime.jetty.RpcResponseGenerator.init(RpcResponseGenerator.java:
39)
at
com
.google
.apphosting.runtime.jetty.RpcConnection.init(RpcConnection.java:
41)
at
com
.google
.apphosting
.runtime
.jetty
.JettyServletEngineAdapter
.serviceRequest(JettyServletEngineAdapter.java:
99)
at
com
.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5233)
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:838)
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:793)
at com.google.net.rpc.impl.Server.processRequest(Server.java:368)
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:
466)
at
com
.google
.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:
759)
at
com
.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:
205)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
101)
at
com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
251)
at com.google.apphosting.runtime.JavaRuntime
$RpcRunnable.run(JavaRuntime.java:394)
at java.lang.Thread.run(Unknown Source)

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




--
You received this message because you are subscribed to the Google Groups Google 
App Engine for Java group.
To post to this group, send email to google-appengine-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: Persistence with JPA + GAE

2010-02-09 Thread Johan Vallejo




Hi Jake, 
Now i have this error

Log :

javax.persistence.PersistenceException: Transaction is still active. You should always close your transactions correctly using commit() or rollback().

this is my code :

   EntityManager cn2 =
emf.get().createEntityManager(); 
 distritos dist2 = cn2.find(distritos.class, id);
 evento e = new evento();
 e.setDistrito(dist2);
 Date fecha = new Date();
 e.setFechaCreacion(fecha);
 try{ 
 cn2.getTransaction().begin(); 
 cn2.persist(e);
 cn2.getTransaction().commit();
 response.getWriter().write("ok"); 
 }finally{
 cn2.close();
 }

Distrito :
@Entity
public class distritos implements Serializable {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Extension (vendorName="datanucleus", key="gae.encoded-pk",
value="true")
 Key id;

 --getter and setter--


El 08/02/2010 03:37 p.m., Jake escribi:

  Hello,

The Google Datastore has four ways that you can store a Primary Key
ID:  String, Long, and two variations on Google's own Key object.  If
you want to create a parent/child relationship between two persisted
objects (in your case, evento is the parent and distritos is the
child), then you need to use Google's Key object as the primary ID.
See:  http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#Keys
"If the class is used as a "child" class in a relationship, the key
field must be of a type capable of representing an entity group
parent: either a Key instance, or a Key value encoded as a string."
So, you have two options:

1.  Change your Long id values to Key id values.
2.  Instead of storing "private distritos distrito" directly in your
evento object, store a reference to the id: "private Long distrito_id"

Jake

On Feb 6, 4:06pm, chevelle jvall...@vnperu.com wrote:
  
  
Hi
I am new in the list, in these days i am trying save data between two
entity beans using JPA but without success, i am cheking the log nd
says:

Uncaught exception from servlet
javax.persistence.PersistenceException: Error in meta-data for
beans.distritos.id: Cannot have a java.lang.Long primary key and be a
child object (owning field is beans.evento.distrito).

this is my servlet:
  Long id =
Long.parseLong(request.getParameter("idDistrito"));
  response.setContentType("text/html");
  EntityManager cn = emf.get().createEntityManager();

  Query q = cn.createQuery("SELECT d FROM distritos d WHERE
d.id = :codigo");
  q.setParameter("codigo",id);
  distritos dist = (distritos) q.getSingleResult();

  EntityManager cn2 = emf.get().createEntityManager();
  cn2.getTransaction().begin();

  evento e = new evento();
  e.setDistrito(dist);
  Date fecha = new Date();
  e.setFechaCreacion(fecha);

  try{
cn2.persist(e);
response.getWriter().write("ok");
  }finally{
cn2.getTransaction().commit();
cn2.close();
  }

this is my entity bean

Evento:
@Entity
public class evento implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  Long id;

  @Temporal(javax.persistence.TemporalType.DATE)
  private Date fechaCreacion;

  @JoinColumn
  @OneToMany(cascade = CascadeType.ALL)
  private distritos distrito;

 --getter and setter--

Distrito:
@Entity
public class distritos implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  Long id;
  private String distrito;

  --getter and setter--

i hope anyone help me, Thank!

Johan

  
  
  







-- 
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: Persistence with JPA + GAE

2010-02-09 Thread Jake
Hey,

I don't play with JPA too much, but I saw this:
http://www.datanucleus.org/products/datanucleus/jpa/transactions.html

Jake

On Feb 9, 10:55 am, Johan Vallejo jvall...@vnperu.com wrote:
 Hi Jake,
 Now i have this error
 Log :javax.persistence.PersistenceException: Transaction is still active. You 
 should always close your transactions correctly using commit() or rollback().
 this is my code :
             EntityManager cn2 = emf.get().createEntityManager();   
     distritos dist2 = cn2.find(distritos.class, id);
     evento e = new evento();
     e.setDistrito(dist2);
     Date fecha = new Date();
     e.setFechaCreacion(fecha);
     try{ 
     cn2.getTransaction().begin(); 
     cn2.persist(e);
     cn2.getTransaction().commit();
     response.getWriter().write(ok);   
     }finally{
     cn2.close();
     }
 Distrito :
 @Entity
 public class distritos implements Serializable {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Extension (vendorName=datanucleus, key=gae.encoded-pk, value=true)
     Key id;
     --getter and setter--
 El 08/02/2010 03:37 p.m., Jake escribió:Hello, The Google Datastore has four 
 ways that you can store a Primary Key ID: String, Long, and two variations on 
 Google's own Key object. If you want to create a parent/child relationship 
 between two persisted objects (in your case, evento is the parent and 
 distritos is the child), then you need to use Google's Key object as the 
 primary ID. 
 See:http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#KeysIf
  the class is used as a child class in a relationship, the key field must 
 be of a type capable of representing an entity group parent: either a Key 
 instance, or a Key value encoded as a string. So, you have two options: 1. 
 Change your Long id values to Key id values. 2. Instead of storing private 
 distritos distrito directly in your evento object, store a reference to the 
 id: private Long distrito_id Jake On Feb 6, 4:06 pm, 
 chevellejvall...@vnperu.comwrote:Hi I am new in the list, in these days i 
 am trying save data between two entity beans using JPA but without success, i 
 am cheking the log nd says: Uncaught exception from servlet 
 javax.persistence.PersistenceException: Error in meta-data for 
 beans.distritos.id: Cannot have a java.lang.Long primary key and be a child 
 object (owning field is beans.evento.distrito). this is my servlet:           
   Long id = Long.parseLong(request.getParameter(idDistrito));             
 response.setContentType(text/html);             EntityManager cn = 
 emf.get().createEntityManager();             Query q = cn.createQuery(SELECT 
 d FROM distritos d WHERE d.id = :codigo);             
 q.setParameter(codigo,id);             distritos dist = (distritos) 
 q.getSingleResult();             EntityManager cn2 = 
 emf.get().createEntityManager();             cn2.getTransaction().begin();    
          evento e = new evento();             e.setDistrito(dist);            
  Date fecha = new Date();             e.setFechaCreacion(fecha);             
 try{                 cn2.persist(e);                 
 response.getWriter().write(ok);             }finally{                 
 cn2.getTransaction().commit();                 cn2.close();             } 
 this is my entity bean Evento: @Entity public class evento implements 
 Serializable {     @Id     @GeneratedValue(strategy = 
 GenerationType.IDENTITY)     Long id;     
 @Temporal(javax.persistence.TemporalType.DATE)     private Date 
 fechaCreacion;     @JoinColumn     @OneToMany(cascade = CascadeType.ALL)     
 private distritos distrito;    --getter and setter-- Distrito: @Entity public 
 class distritos implements Serializable {     @Id     
 @GeneratedValue(strategy = GenerationType.IDENTITY)     Long id;     private 
 String distrito;     --getter and setter-- i hope anyone help me, Thank! Johan

-- 
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: Google Plugin for Eclipse 1.3 plans

2010-02-09 Thread ga...@dynafocus.com
This all sounds good.  However please make sure that it plays well
with other languages, especially scala.  I opened this ticket 3 months
ago with the scala eclipse plugin team.

https://lampsvn.epfl.ch/trac/scala/ticket/2614

Thanks


On Feb 4, 2:52 pm, Keith Platfoot kplatf...@google.com wrote:
 Hey all,

 Many of you have reported incompatibilities between the Google Plugin for
 Eclipse and other build systems/project structures, most notably Maven and
 J2EE/Dynamic Web Projects.  For example, issue 1515 (Eclipse plugin requires
 fixed location for war
 directory)http://code.google.com/p/googleappengine/issues/detail?id=1515
 has
 collected well over 100 stars, and a similar one in the GWT issue tracker
 has attracted a lot of attention as well.  Based on this feedback, we've
 decided to try and address as many of the incompatibilities as possible with
 our upcoming 1.3 release of the plugin.  To deliver on that goal, we want to
 share with your our current plans, and also let you know about a preview
 build that we'll make available so you can test the changes for yourself and
 give us feedback before final release.

 Our plans for the 1.3 release include 4 changes designed to make integration
 with Maven and J2EE projects easier:

    1. The WAR directory can now be configured to be *any* project-relative
    path (e.g. src/main/webapp if you're using Maven).  You'll also be able
    to specify whether that directory is source-only (typical Maven/J2EE
    scenario), or whether it should also function as the WAR output directory
    from which to run/debug or deploy to App Engine.  If your WAR directory is
    input *and* output (which will remain the default for new Web App
    projects), the plugin will manage synchronizing the contents of WEB-INF/lib
    WEB-INF/classes with your project's build path and compiled output.
     Otherwise, we'll leave your WAR source directory alone and you'll need to
    specify your WAR output location when launching, deploying, etc (the plugin
    will remember the location once you set it the first time).
    2. The Web App launch configuration UI is being redesigned to allow you
    to see, and if necessary change, *any* of the launch arguments.
     Previously, we were waiting until launch time to set many of these
    arguments based on heuristics that were invisible and inaccessible to you.
     Now you'll be in full control of how your projects get launched.  Also,
    we're adding the capability to automatically migrate your launch
    configurations when necessary, for example, updating the -javaagent flag
    when changing App Engine SDKs.
    3. GWT/App Engine projects will no longer require our SDK library on the
    classpath.  This means Maven users will be able to pull in JAR files from
    their M2 repository as they're accustomed to and the plugin won't mind a
    bit.
    4. The severity of any problem marker generated by the plugin will be
    fully customizable via an Errors/Warnings preference page (similar to the
    Java Errors/Warnings page), letting you specify either Error, Warning, or
    Ignore.

 We'll also be including a few smaller features and bug fixes as well.

 What does everyone think about the 4 changes outlined above?  We've been
 testing the plugin against various Maven and J2EE configurations to try to
 ensure that we've eliminated the most critical roadblocks.  However, we're
 very interested in also having you folks take it for a spin before the
 official release date (slated for next month).  We're not quite ready yet,
 but stay tuned for a 1.3 preview build to be made available hopefully in a
 few weeks.  We'll distribute it as a zip file for dropin
 installationhttp://code.google.com/eclipse/docs/install-from-zip.html
 so
 it will come with the standard warnings and caveats (use with a clean
 Eclipse install and workspace, use at your risk, etc.).  However, it will
 hopefully give you a chance to give us any last-minute feedback about our
 changes before the final release.

 Thanks,

 Keith

-- 
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] OutOfMemoryError

2010-02-09 Thread Toby Reyelts
Hi Lior,

Are you allocating a large amount of memory up front? When you start writing
a response, a fixed-size heap allocation occurs to hold it. (Implementation
detail). If you've exhausted most of your JVM's memory before this point, it
won't have enough left over to allocate that buffer for your response.

On Tue, Feb 9, 2010 at 7:53 AM, Lior Harsat lior.har...@gmail.com wrote:

 Hi ,

 I am getting OutOfMemoryErrors. The stack trace always points to the
 exact same place at the Jetty runtime. see stack trace below
 has anyone experienced this?
 These errors occur for the same flow in my code (sometime it succeeds
 and sometime it get the OutOfMemoryError). this particular flow does
 not return too much content (around 5KB).
 If my app had a memory problem I would expect to get the
 OutOfMemoryErrors all over the place, but, it only happens in one
 flow.
 please help.

 java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.init(Unknown Source)
at java.nio.ByteBuffer.allocate(Unknown Source)
at

 com.google.apphosting.runtime.jetty.RpcResponseGenerator.newBufferFromPool(RpcResponseGenerator.java:
 213)
at

 com.google.apphosting.runtime.jetty.RpcResponseGenerator.init(RpcResponseGenerator.java:
 39)
at

 com.google.apphosting.runtime.jetty.RpcConnection.init(RpcConnection.java:
 41)
at

 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
 99)
at
 com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
 235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
 $6.handleBlockingRequest(RuntimePb.java:5235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
 $6.handleBlockingRequest(RuntimePb.java:5233)
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:838)
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:793)
at com.google.net.rpc.impl.Server.processRequest(Server.java:368)
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:
 466)
at

 com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:
 759)
at
 com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:
 205)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
 101)
at
 com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
 251)
at com.google.apphosting.runtime.JavaRuntime
 $RpcRunnable.run(JavaRuntime.java:394)
at java.lang.Thread.run(Unknown Source)

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



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



Re: [appengine-java] java.lang.VerifyError

2010-02-09 Thread Max Ross (Google)
Hi Steve, thanks for bringing this to our attention.  We've identified a
problem on our end and we're in the process of correcting it.  You're of
course free to continue using an older version of the SDK, but newer
versions are not susceptible to this problem.

Max

On Tue, Feb 9, 2010 at 5:56 AM, Steve Shrader steveshra...@gmail.comwrote:

 I have an application that has been deployed and running for several
 months.  Yesterday it began throwing the error java.lang.VerifyError.
 No new deployments or changes in usage on my side.  The code throwing
 the error is in this method...

/**
 * Retrieve a list of Expense depending on the Dates and
 Vendor passed in.  There will be two
 * execution paths because Vendor does not need to be passed
 in as a filter.
 */
@SuppressWarnings(unchecked)  //query is against
 Expense.class so it will return ListExpense
public Liststeveshrader.budget.client.dto.Expense
 getExpenses(Date startDate, Date endDate, String vendor) {
Liststeveshrader.budget.client.dto.Expense
 dtoExpenses = new ArrayListsteveshrader.budget.client.dto.Expense();
String userId = getUserId();
if(userId != null) {
ListExpense expenses = null;

PersistenceManager pm =
 PMF.get().getPersistenceManager();
Query query = pm.newQuery(Expense.class);
query.declareImports(import java.util.Date);
query.setOrdering(date asc);

String queryFilter = userId == userIdParam 
 date = startDateParam  date = endDateParam;

Map queryParameters = new HashMap();
queryParameters.put(userIdParam, userId);
queryParameters.put(startDateParam,
 startDate);
queryParameters.put(endDateParam, endDate);

if(vendor != null  vendor.trim().length() 
 0) {  //if a vendor passed in
queryFilter = queryFilter +  
 vendor == vendorParam;
queryParameters.put(vendorParam,
 vendor);
}

query.setFilter(queryFilter);
expenses = (ListExpense)
 query.executeWithMap(queryParameters);

for(Expense e : expenses) {
dtoExpenses.add(new
 steveshrader.budget.client.dto.Expense(e.getId(), e.getDate(),
 e.getAmount(), e.getVendor(), e.getExpenseType(),
 e.getPaymentType()));
}

pm.close();
}
return dtoExpenses;
}

 The complete stack trace is...

 javax.servlet.ServletContext log: Exception while dispatching incoming
 RPC call
 com.google.gwt.user.server.rpc.UnexpectedException: Service method
 'public abstract java.util.List

 steveshrader.budget.client.BudgetService.getExpenses(java.util.Date,java.util.Date,java.lang.String)'
 threw an unexpected exception: java.lang.VerifyError: org/datanucleus/
 store/appengine/query/StreamingQueryResult$1
at
 com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:
 360)
at
 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
 546)
at

 com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
 166)
at

 com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:
 86)
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

 

Re: [appengine-java] Re: vs-accounting.appspot.com - datastore viewer error

2010-02-09 Thread Toby Reyelts
One solution is to run some cron / task-queue based job which fixes up the
entities in the background.

On Tue, Feb 9, 2010 at 5:40 AM, aswath satrasala aswath.satras...@gmail.com
 wrote:

 Hello Toby,
 thanks.
 Yes, the property type email could have been empty. Further dev, I will
 change them to non-empty.
 Now, I cannot trace back those entities from my application, as it is being
 tested and is logged in by different users and entities are created.
 How can I correct this situation?

 -Aswath


 On Sat, Feb 6, 2010 at 1:06 AM, Toby Reyelts to...@google.com wrote:

 You have an empty property of type e-mail, and that makes the datastore
 viewer unhappy. You need to either use a different type that can be
 non-empty (like String), or have non-empty e-mails.


 On Thu, Feb 4, 2010 at 10:25 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 My application is running fine.

 I am still getting the datastore viewer error.What can we do in this
 scenario.  How can we get support?

 -Aswath


 On Mon, Feb 1, 2010 at 12:36 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Hello GAE team,
 I am still not able to use the DataStore viewer for my app-id
 'vs-accounting'

 Thanks
 -Aswath


 On Thu, Jan 28, 2010 at 11:08 AM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Local file:
 datastore-indexes

 !-- Used 2 times in query history --
 datastore-index kind=Tenant ancestor=true source=auto
 property name=tenants_INTEGER_IDX direction=asc/
 /datastore-index

 !-- Used 1 time in query history --
 datastore-index kind=Party ancestor=true source=auto
 property name=partys_INTEGER_IDX direction=asc/
 /datastore-index

 !-- Used 1 time in query history --
 datastore-index kind=SecurityGroup ancestor=true
 source=auto

 property name=secGrpList_INTEGER_IDX direction=asc/
 /datastore-index

 datastore-index kind=PartyRole ancestor=true source=auto
 property name=partyRoles_INTEGER_IDX direction=asc/
 /datastore-index

 /datastore-indexes


 Production:
 Party   partys_INTEGER_IDX ▲
 Includes ancestors
   *Serving*
 PartyRole   partyRoles_INTEGER_IDX ▲
 Includes ancestors
   *Serving*
 SecurityGroup   secGrpList_INTEGER_IDX ▲
 Includes ancestors
   *Serving*
 Tenant   tenants_INTEGER_IDX ▲
 Includes ancestors

 12hrs ago , the secGrpList_INTEGER_IDX  was not shown on the
 production admin console.  Now, it is showing up.

 The datastore viewer is still responding back error page.

 -Aswath


 On Thu, Jan 28, 2010 at 2:48 AM, Ikai L (Google) ika...@google.comwrote:

 What does you local indexes file look like? Can you post the indexes
 listed in your production admin console?

 On Tue, Jan 26, 2010 at 11:24 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Hello GAE team,
 Further observations made while testing the app.  I am not able to
 write entities to the datastore.  Upon examining the logs, I found the
 following error.

 com.veersoft.action.CreateTenantAction doCreate: 
 com.google.appengine.api.datastore.DatastoreNeedIndexException:

 no matching index found..
 datastore-index kind=SecurityGroup ancestor=true source=manual
 property name=secGrpList_INTEGER_IDX direction=asc/








 /datastore-index

 The application is fine on the local develpment server.

 -Aswath


 On Tue, Jan 26, 2010 at 8:51 PM, aswath satrasala 
 aswath.satras...@gmail.com wrote:

 Hello,
 My app-id is vs-accounting.

 I login into appengine.google.com. I choose the above application.
 Then I click on the datastore viewer.
 I get the error

  Server Error

 A server error has occurred.

 Return to Applications screen » https://appengine.google.com/

 -Aswath


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

[appengine-java] Re: Use Blobstore Java API with GWT

2010-02-09 Thread buzz_buzz
Dou you have an example source code to do this. i am bit lost in this
matter?

On Dec 19 2009, 1:28 am, Henry enricrequ...@gmail.com wrote:
 Yes, I did like this and works without problems...thank for the
 response!

 On 17 Dec, 09:42, Raphael André Bauer raphael.andre.ba...@gmail.com
 wrote:

  hey henry,

  the gwt frontend code looks like java, but it is crosscompiled. that's
  the reason why the imports cannot be found - it's technically
  something completely different.

  so what you have to do is having an RPC call to your server, that
  returns a valid form url where you can upload your files.

  basically

      BlobstoreService blobstoreService =
   BlobstoreServiceFactory.getBlobstoreService();

  must be in the servlet of your RPC and the value returned by
  then you get this url back and add it to your client code

  in .setAction

  ..

  hope that helps,

  ra

  On Thu, Dec 17, 2009 at 12:08 AM, Henry enricrequ...@gmail.com wrote:
   Hi Guys,

   Im trying to upload images using the new Blobstore API to the app
   engine with GWT.

   Ive created a FormPanel() to upload the images to the app engine, but
   when im trying to set up the action in the form using
   BlobstoreService, i cant because the import com.google.appengine
   cannot be resolved.

   My question is: how can I set up the action on the form using the
   BlobstoreService?? I've this code in the client side:

      import com.google.appengine.api.blobstore.BlobstoreService;

      FormPanel form = new FormPanel();
      form.setEncoding(FormPanel.ENCODING_MULTIPART);
      form.setMethod(FormPanel.METHOD_POST);
      BlobstoreService blobstoreService =
   BlobstoreServiceFactory.getBlobstoreService();
      form.setAction(blobstoreService.createUploadUrl(handizo/
   upload));

   error: import com.google.appengine cannot be resolved.

   Ive also tried to setup the action without the BlobstoreService, but
   when the form is read in the server side using the BlobstoreService:

          private BlobstoreService blobstoreService =
   BlobstoreServiceFactory.getBlobstoreService();

          protected void doPost(HttpServletRequest req, HttpServletResponse
   resp)
                          throws ServletException, IOException {

                  MapString, BlobKey blobs = 
   blobstoreService.getUploadedBlobs(req);
                  BlobKey blobKey = blobs.get(myFile);

                  if (blobKey == null) {
                          resp.sendRedirect(/);
                  } else {
                          resp.sendRedirect(/serve?blob-key= + 
   blobKey.getKeyString());
                  }

   I've this other error saying me that I've to set up the action using
   the BlobstoreService.

   Error: Must be called from a blob upload callback request.
          at
   com.google.appengine.api.blobstore.BlobstoreServiceImpl.getUploadedBlobs
   (BlobstoreServiceImpl.java:97)
          at com.handizo.server.service.FileUploadAnnouncementServlet.doPost
   (FileUploadAnnouncementServlet.java:23)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)

   So its possible to user the BlobstoreService with GWT by the moment??

   Thanks in advance :-)

   --

   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] makeImageFromBlob but no storeImageToBlob ?

2010-02-09 Thread Alexander Lagler
Hello,

does anyone know how to update a (image-)blob file after image
transformation via ImageService?

// LOAD
ImagesServiceFactory.makeImageFromBlob(blobKey);
// TRANSFORM
Transform resize = ImagesServiceFactory.makeResize(150, 200);
Image newImage = imagesService.applyTransform(resize, oldImage);
// UPDATE NOT POSSIBLE?
update blob?

thanks in advance
alex

-- 
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] queue.xml question

2010-02-09 Thread mlindeboom
The bucket size and rate seem to have no effect when running my
application in eclipse. The tasks added to my queue are processed at
the default rate. Is there something I need to know?


?xml version=1.0 encoding=UTF-8?
queue-entries
  queue
nameetfease/name
rate0/m/rate
bucket-size1/bucket-size
  /queue
/queue-entries

-- 
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] VerifyError on StreamingQueryResult

2010-02-09 Thread paweł majewski
Look similar to
http://groups.google.com/group/google-appengine-java/browse_thread/thread/daa540465c4605d/c155d492b8fe89c9?lnk=gstq=StreamingQueryResult%241#c155d492b8fe89c9

app id: swiatlo-czuli
gae version: 1.2.1 (?)


Uncaught exception from servlet
java.lang.VerifyError: org/datanucleus/store/appengine/query/
StreamingQueryResult$1
at
org.datanucleus.store.appengine.query.StreamingQueryResult.listIterator(StreamingQueryResult.java:
128)
at
org.datanucleus.store.appengine.query.StreamingQueryResult.iterator(StreamingQueryResult.java:
120)
at
pl.simpatico.swiatloczuli.server.supports.FolderSupport.getFoldersTree(FolderSupport.java:
179)
at org.apache.jsp.gallery_jsp._jspService(gallery_jsp.java:83)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1093)
at
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:
129)
at
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:
77)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
pl.simpatico.swiatloczuli.server.filter.CharEncodingFilter.doFilter(CharEncodingFilter.java:
44)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
360)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
238)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:830)
at
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
135)
at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5485)
at 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)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
101)
at
com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
251)
at 

[appengine-java] java.lang.NoClassDefFoundError: Could not initialize ... PMF

2010-02-09 Thread gaenoob
Error for ...
java.lang.NoClassDefFoundError: Could not initialize class dao.PMF
at  



my app got the above problems quite often. And, it will get cured by
itself after a while.

Any idea how to fix it totally?


i checked - nothing above quote limits.


-- 
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: Persistence with JPA + GAE

2010-02-09 Thread Diego Osse Fernandes
Hi Johan,

you can use the Long as PK

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;


[]'s
Diego

2010/2/9 Johan Vallejo jvall...@vnperu.com

  Hi Jake,
 Now i have this error

 Log :

 javax.persistence.PersistenceException: Transaction is still active. You 
 should always close your transactions correctly using commit() or rollback().


 this is my code :

 EntityManager cn2 = emf.get().createEntityManager();

 distritos dist2 = cn2.find(distritos.class, id);
 evento e = new evento();
 e.setDistrito(dist2);
 Date fecha = new Date();
 e.setFechaCreacion(fecha);
 try{
 cn2.getTransaction().begin();
 cn2.persist(e);
 cn2.getTransaction().commit();
 response.getWriter().write(ok);
 }finally{
 cn2.close();
 }

 Distrito :
 @Entity
 public class distritos implements Serializable {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Extension (vendorName=datanucleus, key=gae.encoded-pk,
 value=true)
 Key id;

 --getter and setter--


 El 08/02/2010 03:37 p.m., Jake escribió:

 Hello,

 The Google Datastore has four ways that you can store a Primary Key
 ID:  String, Long, and two variations on Google's own Key object.  If
 you want to create a parent/child relationship between two persisted
 objects (in your case, evento is the parent and distritos is the
 child), then you need to use Google's Key object as the primary ID.
 See:  
 http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#Keys
 If the class is used as a child class in a relationship, the key
 field must be of a type capable of representing an entity group
 parent: either a Key instance, or a Key value encoded as a string.
 So, you have two options:

 1.  Change your Long id values to Key id values.
 2.  Instead of storing private distritos distrito directly in your
 evento object, store a reference to the id: private Long distrito_id

 Jake

 On Feb 6, 4:06 pm, chevelle jvall...@vnperu.com jvall...@vnperu.com wrote:


  Hi
 I am new in the list, in these days i am trying save data between two
 entity beans using JPA but without success, i am cheking the log nd
 says:

 Uncaught exception from servlet
 javax.persistence.PersistenceException: Error in meta-data 
 forbeans.distritos.id: Cannot have a java.lang.Long primary key and be a
 child object (owning field is beans.evento.distrito).

 this is my servlet:
 Long id =
 Long.parseLong(request.getParameter(idDistrito));
 response.setContentType(text/html);
 EntityManager cn = emf.get().createEntityManager();

 Query q = cn.createQuery(SELECT d FROM distritos d WHEREd.id = 
 :codigo);
 q.setParameter(codigo,id);
 distritos dist = (distritos) q.getSingleResult();

 EntityManager cn2 = emf.get().createEntityManager();
 cn2.getTransaction().begin();

 evento e = new evento();
 e.setDistrito(dist);
 Date fecha = new Date();
 e.setFechaCreacion(fecha);

 try{
 cn2.persist(e);
 response.getWriter().write(ok);
 }finally{
 cn2.getTransaction().commit();
 cn2.close();
 }

 this is my entity bean

 Evento:
 @Entity
 public class evento implements Serializable {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 Long id;

 @Temporal(javax.persistence.TemporalType.DATE)
 private Date fechaCreacion;

 @JoinColumn
 @OneToMany(cascade = CascadeType.ALL)
 private distritos distrito;

--getter and setter--

 Distrito:
 @Entity
 public class distritos implements Serializable {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 Long id;
 private String distrito;

 --getter and setter--

 i hope anyone help me, Thank!

 Johan



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


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



Re: [appengine-java] VerifyError on StreamingQueryResult

2010-02-09 Thread Max Ross (Google)
Thanks for the report.  This is indeed the same issue.  We're testing a fix
now and hope to have this resolved very soon.

Max

On Tue, Feb 9, 2010 at 4:27 AM, paweł majewski swiatloczuli...@gmail.comwrote:

 Look similar to

 http://groups.google.com/group/google-appengine-java/browse_thread/thread/daa540465c4605d/c155d492b8fe89c9?lnk=gstq=StreamingQueryResult%241#c155d492b8fe89c9

 app id: swiatlo-czuli
 gae version: 1.2.1 (?)


 Uncaught exception from servlet
 java.lang.VerifyError: org/datanucleus/store/appengine/query/
 StreamingQueryResult$1
at

 org.datanucleus.store.appengine.query.StreamingQueryResult.listIterator(StreamingQueryResult.java:
 128)
at

 org.datanucleus.store.appengine.query.StreamingQueryResult.iterator(StreamingQueryResult.java:
 120)
at

 pl.simpatico.swiatloczuli.server.supports.FolderSupport.getFoldersTree(FolderSupport.java:
 179)
at org.apache.jsp.gallery_jsp._jspService(gallery_jsp.java:83)
at
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at
 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
 487)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1093)
at

 com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:
 129)
at

 com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:
 77)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1084)
at

 pl.simpatico.swiatloczuli.server.filter.CharEncodingFilter.doFilter(CharEncodingFilter.java:
 44)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1084)
at

 com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
 97)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1084)
at

 com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
 35)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1084)
at

 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
 43)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1084)
at
 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
 360)
at
 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
 216)
at
 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
 181)
at
 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
 712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
 405)
at

 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
 238)
at
 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
 139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at
 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
 506)
at org.mortbay.jetty.HttpConnection
 $RequestHandler.headerComplete(HttpConnection.java:830)
at

 com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
 76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at

 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
 135)
at
 com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
 235)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
 $6.handleBlockingRequest(RuntimePb.java:5485)
at 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

 

[appengine-java] DataStore Error 1000000 characters, but I'm not persisting

2010-02-09 Thread Jake
Hello,

I'm getting the following error:

java.lang.IllegalArgumentException: string property _values is too
long.  It cannot exceed 100 characters.

The trick is, I'm not persisting any Blobs and certainly none called
_values.  I do have one object with a Blob field, but I'm not
persisting anything to that field to cause the above exception.  Also,
this is a new issue and that Blob has been in my application for
awhile.  All I'm doing is viewing pages that query the datastore.  My
admin panel doesn't show any quota issues.

My newest change is that I'm uploading a 350K XML file (a book),
applying some XSLT translation using Saxon and storing the result in
an application variable, and displaying certain chunks of that file
depending on the clicked page.

I do have sessions enabled, which I fear is related, but I'm not sure
how to resolve this.

Thanks in advance for any help!

Jake

/titlepage
java.lang.IllegalArgumentException: string property _values is too
long.  It cannot exceed 100 characters.
at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:
33)
at
com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java:
60)
at com.google.appengine.api.datastore.DatastoreServiceImpl
$2.run(DatastoreServiceImpl.java:163)
at
com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java:
30)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:
151)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:
131)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:
123)
at com.google.apphosting.runtime.jetty.SessionManager
$AppEngineSession.save(SessionManager.java:162)
at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
41)
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)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
101)
at

Re: [appengine-java] Re: Google Plugin for Eclipse 1.3 plans

2010-02-09 Thread Ikai L (Google)
I'm a bit of a Scala enthusiast myself, so I'm glad to see folks using Scala
on App Engine. Last I checked, Miles was swamped, but here's hoping he can
do this!

On Tue, Feb 9, 2010 at 8:57 AM, ga...@dynafocus.com ga...@dynafocus.comwrote:

 This all sounds good.  However please make sure that it plays well
 with other languages, especially scala.  I opened this ticket 3 months
 ago with the scala eclipse plugin team.

 https://lampsvn.epfl.ch/trac/scala/ticket/2614

 Thanks


 On Feb 4, 2:52 pm, Keith Platfoot kplatf...@google.com wrote:
  Hey all,
 
  Many of you have reported incompatibilities between the Google Plugin for
  Eclipse and other build systems/project structures, most notably Maven
 and
  J2EE/Dynamic Web Projects.  For example, issue 1515 (Eclipse plugin
 requires
  fixed location for war
  directory)
 http://code.google.com/p/googleappengine/issues/detail?id=1515
  has
  collected well over 100 stars, and a similar one in the GWT issue tracker
  has attracted a lot of attention as well.  Based on this feedback, we've
  decided to try and address as many of the incompatibilities as possible
 with
  our upcoming 1.3 release of the plugin.  To deliver on that goal, we want
 to
  share with your our current plans, and also let you know about a preview
  build that we'll make available so you can test the changes for yourself
 and
  give us feedback before final release.
 
  Our plans for the 1.3 release include 4 changes designed to make
 integration
  with Maven and J2EE projects easier:
 
 1. The WAR directory can now be configured to be *any*
 project-relative
 path (e.g. src/main/webapp if you're using Maven).  You'll also be
 able
 to specify whether that directory is source-only (typical Maven/J2EE
 scenario), or whether it should also function as the WAR output
 directory
 from which to run/debug or deploy to App Engine.  If your WAR
 directory is
 input *and* output (which will remain the default for new Web App
 projects), the plugin will manage synchronizing the contents of
 WEB-INF/lib
 WEB-INF/classes with your project's build path and compiled output.
  Otherwise, we'll leave your WAR source directory alone and you'll
 need to
 specify your WAR output location when launching, deploying, etc (the
 plugin
 will remember the location once you set it the first time).
 2. The Web App launch configuration UI is being redesigned to allow
 you
 to see, and if necessary change, *any* of the launch arguments.
  Previously, we were waiting until launch time to set many of these
 arguments based on heuristics that were invisible and inaccessible to
 you.
  Now you'll be in full control of how your projects get launched.
  Also,
 we're adding the capability to automatically migrate your launch
 configurations when necessary, for example, updating the -javaagent
 flag
 when changing App Engine SDKs.
 3. GWT/App Engine projects will no longer require our SDK library on
 the
 classpath.  This means Maven users will be able to pull in JAR files
 from
 their M2 repository as they're accustomed to and the plugin won't mind
 a
 bit.
 4. The severity of any problem marker generated by the plugin will be
 fully customizable via an Errors/Warnings preference page (similar to
 the
 Java Errors/Warnings page), letting you specify either Error, Warning,
 or
 Ignore.
 
  We'll also be including a few smaller features and bug fixes as well.
 
  What does everyone think about the 4 changes outlined above?  We've been
  testing the plugin against various Maven and J2EE configurations to try
 to
  ensure that we've eliminated the most critical roadblocks.  However,
 we're
  very interested in also having you folks take it for a spin before the
  official release date (slated for next month).  We're not quite ready
 yet,
  but stay tuned for a 1.3 preview build to be made available hopefully in
 a
  few weeks.  We'll distribute it as a zip file for dropin
  installationhttp://code.google.com/eclipse/docs/install-from-zip.html
  so
  it will come with the standard warnings and caveats (use with a clean
  Eclipse install and workspace, use at your risk, etc.).  However, it will
  hopefully give you a chance to give us any last-minute feedback about our
  changes before the final release.
 
  Thanks,
 
  Keith

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

Re: [appengine-java] Re: Persistence with JPA + GAE

2010-02-09 Thread Johan Vallejo




Hi Diego
Yes, i try using Long and Key but with both i have the error

Log :

javax.persistence.PersistenceException: Transaction is still active. You should always close your transactions correctly using commit() or rollback().



El 09/02/2010 01:06 p.m., Diego Osse Fernandes escribi:
Hi Johan,
  
  
  you can use the Long as PK
  
  
  
@Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 Long id;
  
  
  
  
  []'s
  Diego
  
  2010/2/9 Johan Vallejo jvall...@vnperu.com
  
Hi Jake, 
Now i have this error

Log :

javax.persistence.PersistenceException: Transaction is still active. You should always close your transactions correctly using commit() or rollback().

this is my code :

   EntityManager cn2 =
emf.get().createEntityManager(); 
 distritos dist2 = cn2.find(distritos.class, id);
 evento e = new evento();
 e.setDistrito(dist2);
 Date fecha = new Date();
 e.setFechaCreacion(fecha);
 try{ 
 cn2.getTransaction().begin(); 
 cn2.persist(e);
 cn2.getTransaction().commit();
 response.getWriter().write("ok"); 
 }finally{
 cn2.close();
 }

Distrito :
@Entity
public class distritos implements Serializable {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Extension (vendorName="datanucleus", key="gae.encoded-pk",
value="true")
 Key id;

 --getter and setter--


El 08/02/2010 03:37 p.m., Jake escribi:

  Hello,

The Google Datastore has four ways that you can store a Primary Key
ID:  String, Long, and two variations on Google's own Key object.  If
you want to create a parent/child relationship between two persisted
objects (in your case, evento is the parent and distritos is the
child), then you need to use Google's Key object as the primary ID.
See:  http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#Keys
"If the class is used as a "child" class in a relationship, the key
field must be of a type capable of representing an entity group
parent: either a Key instance, or a Key value encoded as a string."
So, you have two options:

1.  Change your Long id values to Key id values.
2.  Instead of storing "private distritos distrito" directly in your
evento object, store a reference to the id: "private Long distrito_id"

Jake

On Feb 6, 4:06pm, chevelle jvall...@vnperu.com wrote:
  
  
Hi
I am new in the list, in these days i am trying save data between two
entity beans using JPA but without success, i am cheking the log nd
says:

Uncaught exception from servlet
javax.persistence.PersistenceException: Error in meta-data for
beans.distritos.id: Cannot have a java.lang.Long primary key and be a
child object (owning field is beans.evento.distrito).

this is my servlet:
  Long id =
Long.parseLong(request.getParameter("idDistrito"));
  response.setContentType("text/html");
  EntityManager cn = emf.get().createEntityManager();

  Query q = cn.createQuery("SELECT d FROM distritos d WHERE
d.id = :codigo");
  q.setParameter("codigo",id);
  distritos dist = (distritos) q.getSingleResult();

  EntityManager cn2 = emf.get().createEntityManager();
  cn2.getTransaction().begin();

  evento e = new evento();
  e.setDistrito(dist);
  Date fecha = new Date();
  e.setFechaCreacion(fecha);

  try{
cn2.persist(e);
response.getWriter().write("ok");
  }finally{
cn2.getTransaction().commit();
cn2.close();
  }

this is my entity bean

Evento:
@Entity
public class evento implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  Long id;

  @Temporal(javax.persistence.TemporalType.DATE)
  private Date fechaCreacion;

  @JoinColumn
  @OneToMany(cascade = CascadeType.ALL)
  private distritos distrito;

 --getter and setter--

Distrito:
@Entity
public class distritos implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  Long id;
  private String distrito;

  --getter and setter--

i hope anyone help me, Thank!

Johan

  




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







-- 
You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group.
To post to this group, send 

[appengine-java] Discussion on will-it-play-in-app-engine

2010-02-09 Thread Stevko
Has anyone tried some of the payment gateways within AppEngine?
I am looking at the Chase Orbital Secure Payment Gateway.

One issue I have from an initial look at their Developer Guide is the
requirement for an additional SSL security provider:
security.provider.3=com.sun.net.ssl.internal.ssl.Provider

-- 
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] Tag search

2010-02-09 Thread Max
I already searchedread app-engine(|-java|-python) forums for tag
search and it looks like the the best way to implement tags is
unordered relationship many to many.

I can search for object with one tag. But I would like to specify
multiple tags.

e.g. I wish objects that has all 10 tags that I specify or any of 10
tags that I specify.

I would like to generate tag cloud also.
But SELECT name, count(name) from Tags GROUP by name is not
supported

Is that possible to implement all most common tag features with app
engine?

I start thinking that it is not possible.

I will have millions of object. So I can't select all objects.

Have someone implemented tags in App Engine?

Please, tell if know that it is not possible to implement tags in App
Engine.

Thanks, Max

-- 
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] Tag search

2010-02-09 Thread John Patterson
Hi Max, you could store tags as a multi-valued property which will  
allow you to search for entities with all tags in a single query.  To  
track how common a tag is you should maintain a count entity for each  
one.


On 10 Feb 2010, at 02:23, Max wrote:


I already searchedread app-engine(|-java|-python) forums for tag
search and it looks like the the best way to implement tags is
unordered relationship many to many.

I can search for object with one tag. But I would like to specify
multiple tags.

e.g. I wish objects that has all 10 tags that I specify or any of 10
tags that I specify.

I would like to generate tag cloud also.
But SELECT name, count(name) from Tags GROUP by name is not
supported

Is that possible to implement all most common tag features with app
engine?

I start thinking that it is not possible.

I will have millions of object. So I can't select all objects.

Have someone implemented tags in App Engine?

Please, tell if know that it is not possible to implement tags in App
Engine.

Thanks, Max

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




--
You received this message because you are subscribed to the Google Groups Google 
App Engine for Java group.
To post to this group, send email to google-appengine-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: Google Plugin for Eclipse 1.3 plans

2010-02-09 Thread Miguel Méndez
I filed http://code.google.com/p/google-web-toolkit/issues/detail?id=4608.
 GPE should NPE even if the source language is Scala.

On Tue, Feb 9, 2010 at 11:57 AM, ga...@dynafocus.com ga...@dynafocus.comwrote:

 This all sounds good.  However please make sure that it plays well
 with other languages, especially scala.  I opened this ticket 3 months
 ago with the scala eclipse plugin team.

 https://lampsvn.epfl.ch/trac/scala/ticket/2614

 Thanks


 On Feb 4, 2:52 pm, Keith Platfoot kplatf...@google.com wrote:
  Hey all,
 
  Many of you have reported incompatibilities between the Google Plugin for
  Eclipse and other build systems/project structures, most notably Maven
 and
  J2EE/Dynamic Web Projects.  For example, issue 1515 (Eclipse plugin
 requires
  fixed location for war
  directory)
 http://code.google.com/p/googleappengine/issues/detail?id=1515
  has
  collected well over 100 stars, and a similar one in the GWT issue tracker
  has attracted a lot of attention as well.  Based on this feedback, we've
  decided to try and address as many of the incompatibilities as possible
 with
  our upcoming 1.3 release of the plugin.  To deliver on that goal, we want
 to
  share with your our current plans, and also let you know about a preview
  build that we'll make available so you can test the changes for yourself
 and
  give us feedback before final release.
 
  Our plans for the 1.3 release include 4 changes designed to make
 integration
  with Maven and J2EE projects easier:
 
 1. The WAR directory can now be configured to be *any*
 project-relative
 path (e.g. src/main/webapp if you're using Maven).  You'll also be
 able
 to specify whether that directory is source-only (typical Maven/J2EE
 scenario), or whether it should also function as the WAR output
 directory
 from which to run/debug or deploy to App Engine.  If your WAR
 directory is
 input *and* output (which will remain the default for new Web App
 projects), the plugin will manage synchronizing the contents of
 WEB-INF/lib
 WEB-INF/classes with your project's build path and compiled output.
  Otherwise, we'll leave your WAR source directory alone and you'll
 need to
 specify your WAR output location when launching, deploying, etc (the
 plugin
 will remember the location once you set it the first time).
 2. The Web App launch configuration UI is being redesigned to allow
 you
 to see, and if necessary change, *any* of the launch arguments.
  Previously, we were waiting until launch time to set many of these
 arguments based on heuristics that were invisible and inaccessible to
 you.
  Now you'll be in full control of how your projects get launched.
  Also,
 we're adding the capability to automatically migrate your launch
 configurations when necessary, for example, updating the -javaagent
 flag
 when changing App Engine SDKs.
 3. GWT/App Engine projects will no longer require our SDK library on
 the
 classpath.  This means Maven users will be able to pull in JAR files
 from
 their M2 repository as they're accustomed to and the plugin won't mind
 a
 bit.
 4. The severity of any problem marker generated by the plugin will be
 fully customizable via an Errors/Warnings preference page (similar to
 the
 Java Errors/Warnings page), letting you specify either Error, Warning,
 or
 Ignore.
 
  We'll also be including a few smaller features and bug fixes as well.
 
  What does everyone think about the 4 changes outlined above?  We've been
  testing the plugin against various Maven and J2EE configurations to try
 to
  ensure that we've eliminated the most critical roadblocks.  However,
 we're
  very interested in also having you folks take it for a spin before the
  official release date (slated for next month).  We're not quite ready
 yet,
  but stay tuned for a 1.3 preview build to be made available hopefully in
 a
  few weeks.  We'll distribute it as a zip file for dropin
  installationhttp://code.google.com/eclipse/docs/install-from-zip.html
  so
  it will come with the standard warnings and caveats (use with a clean
  Eclipse install and workspace, use at your risk, etc.).  However, it will
  hopefully give you a chance to give us any last-minute feedback about our
  changes before the final release.
 
  Thanks,
 
  Keith

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

Re: [appengine-java] 500 Server error when loading data into memory

2010-02-09 Thread Ikai L (Google)
There's a 10mb limit on files, but I'm wondering if we accidentally trip
this if it's a bit lower. What happens if you break the zip file up and load
it piecemeal?

On Wed, Feb 3, 2010 at 1:46 PM, Alyona medel...@gmail.com wrote:

 Hi,

 I get a 500 Server error when running my app maui-indexer.
 It might have something to do with the timeout or the quota, when a
 relatively large zipped text file (~9M) is loaded into memory, which
 is required by my app.
 I had now problems uploading using eclipse and I can't see any
 specific info in the error logs on the dashboard.

 Could you please advise what I need to do to make it work?

 Cheers
 Alyona

 -
 Error: Server Error
 The server encountered an error and could not complete your request.
 If the problem persists, please report your problem and mention this
 error message and the query that caused it.

 --
 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] Best option to scope transactions for fast RPC calls

2010-02-09 Thread Ikai L (Google)
If the Merchants are the root entity, then a transaction on the Merchant's
entity group will not trample a transaction on another Merchant's entity
group. Is this how you have things set up?

On Fri, Feb 5, 2010 at 1:16 PM, Bourke Floyd IV chb...@gmail.com wrote:

 I'm working on a RPC like service and I was wondering if I picked the
 right method to implement my classes that I'll be persisting to the
 datastore. Also note that I allow users to create their own keys used
 to lookup their data.

 Currently I have a MerchantClass Entity that holds my merchants and a
 DataWrapper Entity that holds the data they are looking for. Several
 merchants could be making requests at the same time, and as I
 understand it could cause (read/write) transactions to fail. I don't
 have any relationships at the moment because I don't want opening a
 Transaction on the MerchantClass Entity to prevent read/writes to the
 DataWrapper Entities. However, I do want to limit the scope in a more
 modular way to keep a merchants transactions from interfering with
 other merchants transactions.

 My overall goal is speed if I just need to keep it simple. Currently I
 can get a merchant and verify their status, then get their requested
 transaction without any problems. But I merchants can't register two
 transactions with the same key, and I'm a little worried that one
 merchant could interfere with the success of another merchants
 successful transactions.

 Thanks for input!

 --
 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] Error while uploading the App - Unable to update

2010-02-09 Thread Ikai L (Google)
Is there any information in that log file that the error mentioned?

On Mon, Feb 8, 2010 at 3:22 AM, mike22153 groeg...@gmx.de wrote:

 Hi,

 I just tried to upload my first App to the Google App Engine. I tried
 the Eclipse Plugin and appengine-java-sdk-1.3.0/bin/appcfg.sh.
 I have Suse Linux 10.3 and jdk1.6.0_18 installed.

 Each time I tried, I got the following error:


 --
 Reading application configuration data...
 Beginning server interaction for ...
 0% Creating staging directory
 5% Scanning for jsp files.
 20% Scanning files on local disk.
 25% Initiating update.
 Email: ...@xxx.xx
 Password for ...@xxx.xx:

 java.net.SocketException: java.security.NoSuchAlgorithmException:
 Error constructing implementation (algorithm: Default, provider:
 SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
 Unable to update app: java.security.NoSuchAlgorithmException: Error
 constructing implementation (algorithm: Default, provider: SunJSSE,
 class: sun.security.ssl.DefaultSSLContextImpl)
 Please see the logs [/tmp/appcfg55133.log] for further information.

 Has anybody an idea? On my pc, the App is running.

 Best regards,
 Michael

 --
 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] Estimated expiration average of an entity in memcache

2010-02-09 Thread Ikai L (Google)
You really aren't going to get a useful answer to this question without
doing some testing yourself. There are several factors that can influence
this:

- How many items are you putting into Memcache?
- How large are the items?
- Are you forcing the old items out via LRU?

Other applications with even only minor deviations in numbers from yours
will see significantly different results simply due to different usage
patterns.

I like the way you're approaching the problem - non-critical data that is
regularly flushed. This is the way we'd like to encourage developers to
think about how to scale their applications: differentiating between what is
critical, non-critical, what can be done synchronously versus what can be
done asynchronously. I'd toy with the cron jobs and track a miss rate as a
function of the length of the cron job interval. There's probably a stable
balance between acceptable miss rate and minimizing datastore updates you
can achieve that may very well change with time as you change the data being
saved or as your application's usage patterns shift.

On Sun, Feb 7, 2010 at 4:34 AM, a.maza andr.m...@gmail.com wrote:

 Hello,

 I am keeping non-critical data (which is updated quite often) in
 memcache. I would like to use a cronjob to fetch the data in frequent
 intervalls from memcache in order to persist it to the datastore.

 Thus, I would be interested if anyone has any experiences with the
 average expiration time of entities that are kept in memcache (and
 there quite frequentally accessed) - 5min? 10min?

 Thanks and regards,
 andr

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



[appengine-java] Re: What is the most optimal way to delete and create objects in the datastore?

2010-02-09 Thread RSN
Ikai,

First, I really would like to thank you for your response. I
appreciate the details and links you gave me on improving datastore
performance. I work on research, and somehow I need to able to update
and/or delete significant amounts of data. This is part of a setup
cost our application has to undergo in order to function properly. Our
users really do not expect to see an immediate response from the
application, but we also would like to reduce the amount of delay when
processing data. I think your links about using cache, batch
processing, and AJAX operations could help us to alleviate the setup
cost of our application. Those may be the alternative mechanisms that
we need in our data intensive operations.

Are you aware of the possibility of running computer simulations in
App Engine? Is it possible? Is there a way to keep running a process
longer than the timeout deadlines?

Thanks for your help.





On Feb 9, 3:20 pm, Ikai L (Google) ika...@google.com wrote:
 We're always looking at ways to improve datastore performance, but we really
 try to push developers towards optimizing the performance from the User's
 perspective. 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. Users have come to expect a certain level of quality of service when
 it comes to certain types of page serves, and you can fake this out by using
 Memcache and task queues for writes. True, the amount of computation still
 does not go down, but there's a net gain here from an improved experience
 and increased user retention.

 I'm not surprised that you're seeing the numbers you're seeing based on the
 data you've provided. To really scale up, think about how to make operations
 fast. There are a few tips that go a long way:

 - make as much as you can asynchronous. For some operations this may not
 make sense
 - cache heavily. Use a write-through cache when saving and task queues for
 big saves
 - write to as few indexes and entities as possible if you need to do
 anything synchronously

 This is one of my favorite articles about this subject:

 http://highscalability.com/blog/2010/1/22/how-buddypoke-scales-on-fac...

 http://highscalability.com/blog/2010/1/22/how-buddypoke-scales-on-fac...BuddyPoke
 realized early on they weren't working with a relational database and made
 full use of the fact that App Engine's datastore is build on a distributed
 key-value store with custom indexing.





 On Mon, Feb 8, 2010 at 11:37 AM, RSN romeo.sanc...@gmail.com wrote:
  Hi,

  I am kind of new to GAE, and I was wondering if someone has statistics
  or data that shows what are the most optimal (efficient) ways for
  deleting and creating objects in the Datastore.

  I did some small experiments in order to identify a more efficient
  mechanism to delete and create objects in the datastore. In these
  tests, I have a single persistent object that contains 8 persistent
  fields.

  In the first test, I have a loop of 150 instances, and at each
  iteration I create the persistent object, and I call the
  makePersistent function to add the single instance to the datastore.
  This should take much longer, and it does. It takes on average 16-17
  seconds.

  In the second test, the loop only creates the 150 objects, and then
  outside the loop, I call the makePersistentAll function, passing all
  my collection of objects. As it is mentioned in the documentation,
  this is supposed to be faster, and it is. It takes on average 1-2
  seconds.

  I have experimented only with one way for deleting objects.
  Basically, I make a query to retrieve ONLY the keys of my
  objects.
  Query query = pm.newQuery(select objectKey from  +
  objectClass.getName());
  keys = (ListKey) query.execute();

  Then, once all keys have been retrieved, I call the following service
  method:
  DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
  ds.delete(keys);

  To delete the objects. It takes on average 2-4 seconds to delete 150
  instances.

  I was just wondering if I am missing something, and if there is a more
  efficient way for deleting (or creating) objects in the datastore. I
  see also that there is a higher variance in deleting objects than in
  creating them. For example, the fastest run in my test took 1.6
  seconds to delete the 150 instances, while the slowest run took almost
  8 seconds. I do not see this variability when I create the objects
  (i.e., when I add them to GAE).

  Any advice or suggestions on alternative methods for doing these kinds
  of operations in GAE is GREATLY APPRECIATED. Or, If I am in the right
  track, please let me know.

  THANKS A LOT.

  --
  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 togoogle-appengine-j...@googlegroups.com.
  To unsubscribe from this group, send email 
  

Re: [appengine-java] 500 Server error when loading data into memory

2010-02-09 Thread Toby Reyelts
How large is your file unzipped? If it's 9M compressed, I wouldn't be
surprised if it comes out to be  100M decompressed in Java heap space
causing your heap to be blown out.

Are you sure there aren't any errors in your admin console?

On Wed, Feb 3, 2010 at 4:46 PM, Alyona medel...@gmail.com wrote:

 Hi,

 I get a 500 Server error when running my app maui-indexer.
 It might have something to do with the timeout or the quota, when a
 relatively large zipped text file (~9M) is loaded into memory, which
 is required by my app.
 I had now problems uploading using eclipse and I can't see any
 specific info in the error logs on the dashboard.

 Could you please advise what I need to do to make it work?

 Cheers
 Alyona

 -
 Error: Server Error
 The server encountered an error and could not complete your request.
 If the problem persists, please report your problem and mention this
 error message and the query that caused it.

 --
 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: What is the most optimal way to delete and create objects in the datastore?

2010-02-09 Thread RSN
Thanks again!

On Feb 9, 3:46 pm, Ikai L (Google) ika...@google.com wrote:
 For the time being, not without using task queues. We're looking at
 providing a map/reduce interface, which would likely fit your use case. It's
 on our roadmap:

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





 On Tue, Feb 9, 2010 at 3:43 PM, RSN romeo.sanc...@gmail.com wrote:
  Ikai,

  First, I really would like to thank you for your response. I
  appreciate the details and links you gave me on improving datastore
  performance. I work on research, and somehow I need to able to update
  and/or delete significant amounts of data. This is part of a setup
  cost our application has to undergo in order to function properly. Our
  users really do not expect to see an immediate response from the
  application, but we also would like to reduce the amount of delay when
  processing data. I think your links about using cache, batch
  processing, and AJAX operations could help us to alleviate the setup
  cost of our application. Those may be the alternative mechanisms that
  we need in our data intensive operations.

  Are you aware of the possibility of running computer simulations in
  App Engine? Is it possible? Is there a way to keep running a process
  longer than the timeout deadlines?

  Thanks for your help.

  On Feb 9, 3:20 pm, Ikai L (Google) ika...@google.com wrote:
   We're always looking at ways to improve datastore performance, but we
  really
   try to push developers towards optimizing the performance from the User's
   perspective. 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. Users have come to expect a certain level of quality of service
  when
   it comes to certain types of page serves, and you can fake this out by
  using
   Memcache and task queues for writes. True, the amount of computation
  still
   does not go down, but there's a net gain here from an improved experience
   and increased user retention.

   I'm not surprised that you're seeing the numbers you're seeing based on
  the
   data you've provided. To really scale up, think about how to make
  operations
   fast. There are a few tips that go a long way:

   - make as much as you can asynchronous. For some operations this may not
   make sense
   - cache heavily. Use a write-through cache when saving and task queues
  for
   big saves
   - write to as few indexes and entities as possible if you need to do
   anything synchronously

   This is one of my favorite articles about this subject:

  http://highscalability.com/blog/2010/1/22/how-buddypoke-scales-on-fac...

   http://highscalability.com/blog/2010/1/22/how-buddypoke-scales-on-fac..
  .BuddyPoke
   realized early on they weren't working with a relational database and
  made
   full use of the fact that App Engine's datastore is build on a
  distributed
   key-value store with custom indexing.

   On Mon, Feb 8, 2010 at 11:37 AM, RSN romeo.sanc...@gmail.com wrote:
Hi,

I am kind of new to GAE, and I was wondering if someone has statistics
or data that shows what are the most optimal (efficient) ways for
deleting and creating objects in the Datastore.

I did some small experiments in order to identify a more efficient
mechanism to delete and create objects in the datastore. In these
tests, I have a single persistent object that contains 8 persistent
fields.

In the first test, I have a loop of 150 instances, and at each
iteration I create the persistent object, and I call the
makePersistent function to add the single instance to the datastore.
This should take much longer, and it does. It takes on average 16-17
seconds.

In the second test, the loop only creates the 150 objects, and then
outside the loop, I call the makePersistentAll function, passing all
my collection of objects. As it is mentioned in the documentation,
this is supposed to be faster, and it is. It takes on average 1-2
seconds.

I have experimented only with one way for deleting objects.
Basically, I make a query to retrieve ONLY the keys of my
objects.
Query query = pm.newQuery(select objectKey from  +
objectClass.getName());
keys = (ListKey) query.execute();

Then, once all keys have been retrieved, I call the following service
method:
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
ds.delete(keys);

To delete the objects. It takes on average 2-4 seconds to delete 150
instances.

I was just wondering if I am missing something, and if there is a more
efficient way for deleting (or creating) objects in the datastore. I
see also that there is a higher variance in deleting objects than in
creating them. For example, the fastest run in my test took 1.6
seconds to delete the 150 instances, while the slowest run took almost
8 seconds. I do not see this variability 

Re: [appengine-java] Re: getNextID

2010-02-09 Thread Max Ross (Google)
JDO Sequences work, we just haven't publicized them.  The DataNucleus docs
should tell you everything you need to know:
http://www.datanucleus.org/products/accessplatform/jdo/sequences.html

IdGeneratorStrategy.INCREMENT is not yet implemented.  What are you looking
to use it for?

Max

On Mon, Feb 8, 2010 at 3:20 AM, Vincent TELLIER
tellier.vinc...@gmail.comwrote:

 I tried the incrementation, but I got an error saying that it was not
 implemented in the appengine datastore.


 TELLIER Vincent
 + Email : cont...@tellier-vincent.eu
 + Contact messenger (msn) : abs...@esugenus.fr


 2010/2/8 aswath satrasala aswath.satras...@gmail.com

 See if the following annotation help you.
 @Persistent(valueStrategy = IdGeneratorStrategy.INCREMENT)

 -Aswath


 On Mon, Feb 8, 2010 at 1:18 AM, datanucleus andy_jeffer...@yahoo.comwrote:

 What getNextID feature on JDO ? i.e please make reference to the JDO
 API and which particular API Method you're referring to

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


  --
 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: Spring 3.0 + Tiles 2.1.4 + GAE

2010-02-09 Thread vladjan
Hi,
try using tiles-2.1.2

Best regards,
Vladislav

On Feb 8, 12:52 pm, Arun Shanker Prasad arunshankerpra...@gmail.com
wrote:
 Hi All,

 Any suggestions/thoughts/ideas? Stuck at this now..

 Thanks,
 Arun Shanker Prasad.

 On Feb 4, 4:23 pm, Arun Shanker Prasad arunshankerpra...@gmail.com
 wrote:



  Hi All,

  I was trying to create a sample spring application with Spring 3.0
  (RELEASE)  Tiles 2.1.4, but I am getting the following error when I
  start up the dev server. Has anyone else come across this? Any work
  around?

  I had read in the forum about modifying some classes got get the
  Spring form tag to work, but that was for 2.5, anyone else tried
  Spring 3.0? What more problems can I get? I am at the initial phase of
  planning for my project and just thought to give Spring 3.0 a try
  since I don't want to learn 2.5 if 3.0 is already there ;)

  WARNING: Nested in
  org.springframework.beans.factory.BeanCreationException: Error
  creating bean with name 'tilesConfigurer' defined in ServletContext
  resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method
  failed; nested exception is java.lang.AbstractMethodError:
  javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
  ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;:
  java.lang.AbstractMethodError:
  javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
  ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
          at
  org.apache.tiles.jsp.evaluator.el.JspExpressionFactoryFactory.getExpression 
  Factory(JspExpressionFactoryFactory.java:
  62)
          at
  org.apache.tiles.evaluator.el.ELAttributeEvaluator.init(ELAttributeEvaluato 
  r.java:
  111)
          at
  org.apache.tiles.factory.TilesContainerFactory.storeContainerDependencies(T 
  ilesContainerFactory.java:
  447)
          at
  org.apache.tiles.factory.TilesContainerFactory.initializeContainer(TilesCon 
  tainerFactory.java:
  368)
          at
  org.apache.tiles.factory.TilesContainerFactory.createTilesContainer(TilesCo 
  ntainerFactory.java:
  287)
          at
  org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContain 
  erFactory.java:
  231)
          at
  org.apache.tiles.startup.BasicTilesInitializer.createContainer(BasicTilesIn 
  itializer.java:
  117)
          at
  org.apache.tiles.startup.BasicTilesInitializer.initialize(BasicTilesInitial 
  izer.java:
  53)
          at
  org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterProperties 
  Set(TilesConfigurer.java:
  203)
          at
  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
  y
  $5.run(AbstractAutowireCapableBeanFactory.java:1451)
          at java.security.AccessController.doPrivileged(Native Method)
          at
  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
  y.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:
  1449)
          at
  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
  y.initializeBean(AbstractAutowireCapableBeanFactory.java:
  1398)
          at
  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
  y.doCreateBean(AbstractAutowireCapableBeanFactory.java:
  512)
          at
  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor 
  y.createBean(AbstractAutowireCapableBeanFactory.java:
  450)
          at org.springframework.beans.factory.support.AbstractBeanFactory
  $1.getObject(AbstractBeanFactory.java:290)
          at
  org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getS 
  ingleton(DefaultSingletonBeanRegistry.java:
  222)
          at
  org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abs 
  tractBeanFactory.java:
  287)
          at
  org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstr 
  actBeanFactory.java:
  189)
          at
  org.springframework.beans.factory.support.DefaultListableBeanFactory.preIns 
  tantiateSingletons(DefaultListableBeanFactory.java:
  557)
          at
  org.springframework.context.support.AbstractApplicationContext.finishBeanFa 
  ctoryInitialization(AbstractApplicationContext.java:
  842)
          at
  org.springframework.context.support.AbstractApplicationContext.refresh(Abst 
  ractApplicationContext.java:
  416)
          at
  org.springframework.web.servlet.FrameworkServlet.createWebApplicationContex 
  t(FrameworkServlet.java:
  443)
          at
  org.springframework.web.servlet.FrameworkServlet.createWebApplicationContex 
  t(FrameworkServlet.java:
  459)
          at
  org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext( 
  FrameworkServlet.java:
  340)
          at
  org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkS 
  ervlet.java:
  307)
          at
  org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:
  127)
          at 

Re: [appengine-java] Re: UserService.createLoginURL() to a chrome extension

2010-02-09 Thread Ikai L (Google)
I actually ended up asking one of the Chrome guys for the answer to this.
This is what he tells me:

Ah, to me it sounds like GAE's createLoginURL function doesn't recognize
chrome-extension:// as a protocol.  It's appending the extension url like a
relative path.

You can tell him to redirect to something like success.html on his GAE
app, where he can set headers to redirect back to the chrome-extension URL,
although I think there may be a security precaution in Chrome to prevent
doing that.  If that's the case, the developer can inject a content script
into success.html that will notify his extension's background page and
open the appropriate URL from within the extension itself.

I'm sorry if this doesn't make sense, I'm not an expert on Chrome extension
development. Have you tried their groups?

On Tue, Feb 9, 2010 at 5:48 PM, Shai levys...@gmail.com wrote:

 I would still appreciate some pointers on this issue.

 Is the redirect limited to http://; otherwise the API thinks I'm
 trying to send to file in my application ? any suggestion how to
 overcome this ?
 Is there a way to manually create the URL ?

 Thanks


 On Feb 4, 5:10 pm, Shai levys...@gmail.com wrote:
  Hi,
 
  If I try doing a redirect to a normal http site it works fine, for
  example
  UserService.createLoginURL(http://www.somewhere.com/index.html;) ;
 
  This will let me login to my Google app account and then redirect me
  towww.somewhere.com...
 
  But if I try to redirect to html in mychromeextension:
  UserService.createLoginURL(chrome-extension://[extensionid]/
  myhtml.html) ;
 
  It redirects me to:http://[myapp].
 appspot.com/chrome-extension://[myextensionid]]/
  myhtml.html
 
  Can someone suggest a simple solution ?
  Mychromeplug-in uses Google app engine for authentication and I when
  the user is not logged in I would like to invoke a log-in page and
  give control  back to myextension

 --
 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: getNextID

2010-02-09 Thread aswath satrasala
Hello Max,
I am planning to use IdGeneratorStrategy.INCREMENT feature to assign
sequential ids for entities I am creating.  for example, Employee.

-Aswath

On Wed, Feb 10, 2010 at 5:49 AM, Max Ross (Google) 
maxr+appeng...@google.com maxr%2bappeng...@google.com wrote:

 JDO Sequences work, we just haven't publicized them.  The DataNucleus docs
 should tell you everything you need to know:
 http://www.datanucleus.org/products/accessplatform/jdo/sequences.html

 IdGeneratorStrategy.INCREMENT is not yet implemented.  What are you looking
 to use it for?

 Max


 On Mon, Feb 8, 2010 at 3:20 AM, Vincent TELLIER tellier.vinc...@gmail.com
  wrote:

 I tried the incrementation, but I got an error saying that it was not
 implemented in the appengine datastore.


 TELLIER Vincent
 + Email : cont...@tellier-vincent.eu
 + Contact messenger (msn) : abs...@esugenus.fr


 2010/2/8 aswath satrasala aswath.satras...@gmail.com

 See if the following annotation help you.
 @Persistent(valueStrategy = IdGeneratorStrategy.INCREMENT)

 -Aswath


 On Mon, Feb 8, 2010 at 1:18 AM, datanucleus andy_jeffer...@yahoo.comwrote:

 What getNextID feature on JDO ? i.e please make reference to the JDO
 API and which particular API Method you're referring to

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


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


-- 
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] Least CPU Intensive way to query?

2010-02-09 Thread Brian
 Hi guys,

I was wondering if anyone has found a less CPU intensive way to query.
I basically have a bunch of small objects in the database I want out.
I tried a few ways to get them out, including an extent and a query. I
ended up settling on this:

Query query = pm.newQuery(Post.class);
query.setOrdering(postedDate desc);
query.setRange(start, end);
ListPost posts = (ListPost) query.execute();


Doing a range of 0 to 1000.. figuring the 1000 newest items is good
enough.

I find that this tends to be pretty bad on my quota CPU.. like maybe 8
seconds of CPU time per query, if there are 1000 posts. Is this just
how it is? Or do I need to add an index to postedDate maybe?

I plan to play with it more tomorow, but if anyone has insight on
getting stuff out of the database fast (from both a time and CPU quota
standpoint), I would appreciate it. I have never seen a datbase take
 .1 seconds for such a stupid silly query, I have to be doing
something wrong.


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: Least CPU Intensive way to query?

2010-02-09 Thread Brian
I am also getting and closing a new PersistenceManager around the
query, if that matters

On Feb 9, 11:08 pm, Brian bwa...@gmail.com wrote:
  Hi guys,

 I was wondering if anyone has found a less CPU intensive way to query.
 I basically have a bunch of small objects in the database I want out.
 I tried a few ways to get them out, including an extent and a query. I
 ended up settling on this:

                         Query query = pm.newQuery(Post.class);
                         query.setOrdering(postedDate desc);
                         query.setRange(start, end);
                         ListPost posts = (ListPost) query.execute();

 Doing a range of 0 to 1000.. figuring the 1000 newest items is good
 enough.

 I find that this tends to be pretty bad on my quota CPU.. like maybe 8
 seconds of CPU time per query, if there are 1000 posts. Is this just
 how it is? Or do I need to add an index to postedDate maybe?

 I plan to play with it more tomorow, but if anyone has insight on
 getting stuff out of the database fast (from both a time and CPU quota
 standpoint), I would appreciate it. I have never seen a datbase take .1 
 seconds for such a stupid silly query, I have to be doing

 something wrong.

 Thanks!

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



Re: [appengine-java] Re: getNextID

2010-02-09 Thread Max Ross (Google)
Hi Aswath,

Unfortunately there is no way to guarantee the assignment of sequential ids
using JDO on App Engine, or even using the low-level datastore api.  This is
because ids are allocated in batches across many datastore backends, and one
request to get the next id may hit one backend while another may hit a
different backend.  Is sequential ids a hard requirement?

Max

On Tue, Feb 9, 2010 at 8:27 PM, aswath satrasala aswath.satras...@gmail.com
 wrote:

 Hello Max,
 I am planning to use IdGeneratorStrategy.INCREMENT feature to assign
 sequential ids for entities I am creating.  for example, Employee.

 -Aswath

 On Wed, Feb 10, 2010 at 5:49 AM, Max Ross (Google) 
 maxr+appeng...@google.com maxr%2bappeng...@google.com wrote:

 JDO Sequences work, we just haven't publicized them.  The DataNucleus docs
 should tell you everything you need to know:
 http://www.datanucleus.org/products/accessplatform/jdo/sequences.html

 IdGeneratorStrategy.INCREMENT is not yet implemented.  What are you
 looking to use it for?

 Max


 On Mon, Feb 8, 2010 at 3:20 AM, Vincent TELLIER 
 tellier.vinc...@gmail.com wrote:

 I tried the incrementation, but I got an error saying that it was not
 implemented in the appengine datastore.


 TELLIER Vincent
 + Email : cont...@tellier-vincent.eu
 + Contact messenger (msn) : abs...@esugenus.fr


 2010/2/8 aswath satrasala aswath.satras...@gmail.com

 See if the following annotation help you.
 @Persistent(valueStrategy = IdGeneratorStrategy.INCREMENT)

 -Aswath


 On Mon, Feb 8, 2010 at 1:18 AM, datanucleus 
 andy_jeffer...@yahoo.comwrote:

 What getNextID feature on JDO ? i.e please make reference to the JDO
 API and which particular API Method you're referring to

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


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


  --
 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] How to clear logs?

2010-02-09 Thread 时空之蕊
Thanks for your help ^ ^

My GAE Application has too mush logs!
But I don't know how to clear the logs!

-- 
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] Error; Transaction is not active.

2010-02-09 Thread 杨浩
First it 's work ok!
but after tx.commit() the transaction is complete,so you must call
tx.begin() to start a transaction before tx.commit()!

Or invoke the tx.commit out of the while block!

I'm sorray for my English!

2010/2/10 Acerezo acerezoguil...@gmail.com


 Hello all, I can´t delete records of a table

 I'm using this code:

  PersistenceManager pm =
 PersistenceManagerHelper.getPersistenceManager();

 Transaction tx = pm.currentTransaction();
 tx.begin();
 Extent ex = pm.getExtent(Robot.class, true);
 Iterator iter = ex.iterator();
 while (iter.hasNext())
 {
 Robot obj = (Robot)iter.next();
 pm.deletePersistent(obj);
 tx.commit();
 }

 And always delete only two records after I get this message in the
 log:

 Transaction is not active. You either need to define a transaction
 around this, or run your PersistenceManagerFactory with
 'NontransactionalRead' and 'NontransactionalWrite' set to 'true'


 Anyone can help me, please?

 Thanks.


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



Re: [appengine-java] How to clear logs?

2010-02-09 Thread Andrés Cerezo
I've the same problem that you and looking in the documentation of
google, I read that the logs can't be deleted.

2010/2/10 时空之蕊 skzr@gmail.com:
 Thanks for your help ^ ^

 My GAE Application has too mush logs!
 But I don't know how to clear the logs!

 --
 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] Error; Transaction is not active.

2010-02-09 Thread 杨浩
Yes!

2010/2/10 Andrés Cerezo acerezoguil...@gmail.com

 I don´t understand very well I think you are telling me:

 Transaction tx = pm.currentTransaction();
 // tx.begin(); old
 Extent ex = pm.getExtent(Robot.class, true);
 Iterator iter = ex.iterator();
 while (iter.hasNext())
 {
 tx.begin(); // new
 Robot obj = (Robot)iter.next();
 pm.deletePersistent(obj);
 tx.commit();
 }

 isn´t?

 2010/2/10 杨浩 skzr@gmail.com:
  First it 's work ok!
  but after tx.commit() the transaction is complete,so you must call
  tx.begin() to start a transaction before tx.commit()!
 
  Or invoke the tx.commit out of the while block!
 
  I'm sorray for my English!
 
  2010/2/10 Acerezo acerezoguil...@gmail.com
 
  Hello all, I can´t delete records of a table
 
  I'm using this code:
 
   PersistenceManager pm =
  PersistenceManagerHelper.getPersistenceManager();
 
  Transaction tx = pm.currentTransaction();
  tx.begin();
  Extent ex = pm.getExtent(Robot.class, true);
  Iterator iter = ex.iterator();
  while (iter.hasNext())
  {
  Robot obj = (Robot)iter.next();
  pm.deletePersistent(obj);
  tx.commit();
  }
 
  And always delete only two records after I get this message in the
  log:
 
  Transaction is not active. You either need to define a transaction
  around this, or run your PersistenceManagerFactory with
  'NontransactionalRead' and 'NontransactionalWrite' set to 'true'
 
 
  Anyone can help me, please?
 
  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.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.



-- 
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 to clear logs?

2010-02-09 Thread 杨浩
Now,there is not found the document about the logs!
Thanks Andrés Cerezo!
My solustion:
deploy another version as the default, and del the old version!
so the logs may be clear all!

2010/2/10 Andrés Cerezo acerezoguil...@gmail.com

 I've the same problem that you and looking in the documentation of
 google, I read that the logs can't be deleted.


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



[google-appengine] 500 status on apps, api changes?

2010-02-09 Thread dobee
hello

we encounter failures on some apps since about 10 hours. we can find
no log entry for those errors. are there some api changes?

we know of at least one change on how db.Model gets constructed, they
now get the key keyword argument, which is new and broke another app
of us, which we were able to fix.

but for this app it must be another problem, are there any other
changes on the internals? we have 2 apps with the same symtpoms.

curl -i http://marktplatz.a-z.ch

HTTP/1.1 500 Internal Server Error
Date: Tue, 09 Feb 2010 08:26:19 GMT
Content-Type: text/html; charset=UTF-8
Server: Google Frontend
Content-Length: 466
X-XSS-Protection: 0


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

thx in advance, bernd

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



[google-appengine] Re: 500 status on apps, api changes?

2010-02-09 Thread dobee
seems that i have found the problem, the signature of db.get has
changed, but only on appengine, we have put a wrapper around this and
this does not work anymore now

02-09 12:35AM 40.319
UNHANDLED_EXCEPTION:
Traceback (most recent call last):
  File /base/data/home/apps/mk-a-z/3.339622665704014614/packages/
django.egg/django/core/handlers/base.py, line 86, in get_response
response = callback(request, *callback_args, **callback_kwargs)
  File /base/data/home/apps/mk-a-z/3.339622665704014614/packages/
django.egg/django/views/decorators/cache.py, line 30, in
_cache_controlled
response = viewfunc(request, *args, **kw)
  File /base/data/home/apps/mk-a-z/3.339622665704014614/mkapp/
decorators.py, line 58, in wrapper
data = fxn(*args, **kwargs)
  File /base/data/home/apps/mk-a-z/3.339622665704014614/mkapp/df/
views.py, line 642, in business_view
business = Business.get_by_ident(id)
  File /base/data/home/apps/mk-a-z/3.339622665704014614/mkapp/
business.py, line 149, in get_by_ident
business = Business.get_by_key_name(key)
  File /base/python_lib/versions/1/google/appengine/ext/db/
__init__.py, line 991, in get_by_key_name
return get(keys[0], rpc=rpc)
TypeError: get_cached() got an unexpected keyword argument 'rpc'

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



[google-appengine] Re: 500 status on apps, api changes?

2010-02-09 Thread dobee
ok, we now fixed the compatibility issues on our apps, but the
development sdk still does not match the api on appengine.

it would be nice to get information about such internal changes up-
front the next time. it is always hard to explain our customers why
the site was offline for some technical reason we cannot forsee.

thx, bernd

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



Re: [google-appengine] Re: Stored data voiume is totally different on Datastore Statistics and Dashboard

2010-02-09 Thread Pavel Kaplin
No, I don't store any info in sessions, except logged in user id via Google
Users API.

On Mon, Feb 8, 2010 at 8:48 PM, Ikai L (Google) ika...@google.com wrote:

 Are you storing information in sessions? Session information can also take
 up space.


 On Mon, Feb 8, 2010 at 5:32 AM, Pavel Kaplin pavel.kap...@gmail.comwrote:

 Here's the detailed description of mentioned indexes:
  1) address (string,  100 bytes), tradePoint(String,  100 bytes),
 user (Key, generated by GAE), timestamp
  2) tradePoint, user, timestamp
  3) user, timestamp

 Entities count is about 15k. I don't understand how it might happened.

 On Feb 8, 3:25 pm, Nick Johnson (Google) nick.john...@google.com
 wrote:
  Hi Pavel,
 
  That depends on the nature of your indexes, and the entities being
 indexed.
  It's certainly possible for indexes to reach this magnitude -
 particularly
  if you're indexing list properties.
 
  -Nick Johnson
 
 
 
 
 
  On Mon, Feb 8, 2010 at 1:12 PM, Pavel Kaplin pavel.kap...@gmail.com
 wrote:
   It's hard to believe that 3 indexes (for 2, 3 and 4 fields) could eat
   9x more space than data itself.
 
   On Feb 8, 2:45 pm, Nick Johnson (Google) nick.john...@google.com
   wrote:
Hi Pavel,
 
The datastore stats include only the raw size of the entities. The
 total
space consumed is the space consumed by the entities, plus the space
consumed by all your indexes.
 
-Nick Johnson
 
On Mon, Feb 8, 2010 at 12:35 PM, Pavel Kaplin 
 pavel.kap...@gmail.com
   wrote:
 
 Hi there!
 
 My datastore stats says me Size of all entities = 51 MBytes, but
 dashboard shows 0.54 Gb as Total Stored Data.
 
 As you can see, these values differ from each other for more than
 ten
 times. Why?
 
 Application id is bayadera-tracker
 
 --
 You received this message because you are subscribed to the Google
   Groups
 Google App Engine group.
 To post to this group, send email to
 google-appengine@googlegroups.com
   .
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.com
 .
 For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.
 
--
Nick Johnson, Developer Programs Engineer, App Engine
Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
   Number:
368047
 
   --
   You received this message because you are subscribed to the Google
 Groups
   Google App Engine group.
   To post to this group, send email to
 google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.
 
  --
  Nick Johnson, Developer Programs Engineer, App Engine
  Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
 Number:
  368047

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




 --
 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 group.
 To post to this group, send email to google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.




-- 
Павел Каплин

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



Re: [google-appengine] Re: Stored data voiume is totally different on Datastore Statistics and Dashboard

2010-02-09 Thread Pavel Kaplin
I like this suggestion too. Moreover, I'd prefer detailed description of the
number called Used Space on Dashboard/Quota Details pages. E.g. indexes =
250 Mb , Entities = 500 Mb, sessions = 50 Mb and so on, plus detailed info
about indexes and sessions. What do you think?

On Mon, Feb 8, 2010 at 9:57 PM, Robert Kluin robert.kl...@gmail.com wrote:

 I like Philip's suggestion a lot.  It will help us all identify space
 intensive indexes, and _hopefully_ reduce the number of posts about
 this.

 I submitted a feature request for this issue:
 http://code.google.com/p/googleappengine/issues/detail?id=2740

 Robert




 On Mon, Feb 8, 2010 at 2:27 PM, WeatherPhilip
 philip-goo...@gladstonefamily.net wrote:
  This issue comes up about once per week. Google -- you need to address
  this. The simplest way of addressing it would be to put the size of
  *every* index on the statistics page, and show that the total
  corresponds (roughly) to the quota number.
 
  This would enable people to see which index (or indexes) was consuming
  a lot of space, and take steps to optimize -- maybe by not indexing
  that field.
 
  Philip
 
  On Feb 8, 1:48 pm, Ikai L (Google) ika...@google.com wrote:
  Are you storing information in sessions? Session information can also
 take
  up space.
 
 
 
 
 
  On Mon, Feb 8, 2010 at 5:32 AM, Pavel Kaplin pavel.kap...@gmail.com
 wrote:
   Here's the detailed description of mentioned indexes:
1) address (string,  100 bytes), tradePoint(String,  100 bytes),
   user (Key, generated by GAE), timestamp
2) tradePoint, user, timestamp
3) user, timestamp
 
   Entities count is about 15k. I don't understand how it might happened.
 
   On Feb 8, 3:25 pm, Nick Johnson (Google) nick.john...@google.com
   wrote:
Hi Pavel,
 
That depends on the nature of your indexes, and the entities being
   indexed.
It's certainly possible for indexes to reach this magnitude -
   particularly
if you're indexing list properties.
 
-Nick Johnson
 
On Mon, Feb 8, 2010 at 1:12 PM, Pavel Kaplin 
 pavel.kap...@gmail.com
   wrote:
 It's hard to believe that 3 indexes (for 2, 3 and 4 fields) could
 eat
 9x more space than data itself.
 
 On Feb 8, 2:45 pm, Nick Johnson (Google) 
 nick.john...@google.com
 wrote:
  Hi Pavel,
 
  The datastore stats include only the raw size of the entities.
 The
   total
  space consumed is the space consumed by the entities, plus the
 space
  consumed by all your indexes.
 
  -Nick Johnson
 
  On Mon, Feb 8, 2010 at 12:35 PM, Pavel Kaplin 
   pavel.kap...@gmail.com
 wrote:
 
   Hi there!
 
   My datastore stats says me Size of all entities = 51 MBytes,
 but
   dashboard shows 0.54 Gb as Total Stored Data.
 
   As you can see, these values differ from each other for more
 than
   ten
   times. Why?
 
   Application id is bayadera-tracker
 
   --
   You received this message because you are subscribed to the
 Google
 Groups
   Google App Engine group.
   To post to this group, send email to
   google-appengine@googlegroups.com
 .
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.
 
  --
  Nick Johnson, Developer Programs Engineer, App Engine
  Google Ireland Ltd. :: Registered in Dublin, Ireland,
 Registration
 Number:
  368047
 
 --
 You received this message because you are subscribed to the Google
   Groups
 Google App Engine group.
 To post to this group, send email to
 google-appengine@googlegroups.com
   .
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.com
 .
 For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.
 
--
Nick Johnson, Developer Programs Engineer, App Engine
Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
   Number:
368047
 
   --
   You received this message because you are subscribed to the Google
 Groups
   Google App Engine group.
   To post to this group, send email to
 google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.
 
  --
  Ikai Lan
  Developer Programs Engineer, Google 

Re: [google-appengine] Re: Can't access Datastore Viewer

2010-02-09 Thread 风笑雪
YouModel.all().filter('email porperty =', None).fetch(100)

You can update or delete them.

2010/2/9 Shai levys...@gmail.com:
 HI,
 Yes, I am using Email fields and URL field's.
 I am not sure if there are currently null values there but my code
 doesn't validate that option so it's a possibility.

 Either way, I can change the model to strings instead of URL/Email
 pretty quick but how can I remove the data already there ?

 The project is still in testing phase so I can remove all data, is
 there a quick reset option ?
 (I'm using the Java + eclipse plug in)


 P.S.
 Can't email/url fields be null ? is it a problem  ? is this documented
 and I missed it ?



 On Feb 9, 12:34 am, Ikai L (Google) ika...@google.com wrote:
 Datastore viewer issues are likely related to type validation issues. Are
 you using specialized types such as PhoneNumber, Email Address or URL fields
 in your model? Are these always being set, or are null or invalid values
 being set?





 On Sat, Feb 6, 2010 at 6:12 PM, Shai levys...@gmail.com wrote:
  I hardly have any records, its a new application
  I tried other browsers and other computers over a few day's

  Maybe something in my data is causing the problem ? I have no clue how
  to analyze this without a data viewer. my application run's smoothly

  On Feb 7, 4:07 am, Eli Jones eli.jo...@gmail.com wrote:
   I had a few problems with the Datastore Viewer this evening.. but I
  assumed
   it was because I was deleting thousands of entities.

   Try the usual tricks.. log out of your google accounts.. clear cache and
   cookies.. and try relogging in to your Dashboard.

   On Sat, Feb 6, 2010 at 8:58 PM, Shai levys...@gmail.com wrote:
Any one ?
It really is blocking me

Someone know's if I can/should/how contact google about this ?

On Feb 4, 7:49 pm, Shai levys...@gmail.com wrote:
 HI,
 Every time I click on Datastore Viewer in my application page I get a
 Server Error (500)  , A server error has occurred.

 app id is - SwimmingSession

 Can anyone advice ? (did't find any related problem in the logs)

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

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

 --
 Ikai Lan
 Developer Programs Engineer, Google App 
 Enginehttp://googleappengine.blogspot.com|http://twitter.com/app_engine

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



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



Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Nick Johnson (Google)
2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in a
 web page.


You're right that it's unwise. Depending on how you construct your query, a
user could potentially modify the cursor they send to you to return results
from any query your datastore is capable of performing, which could result
in you revealing information to the user that they shouldn't know. You
should either store the cursor on the server-side, or encrypt it before
sending it to the client.

I was going to mention something about this in my post, but it slipped my
mind.

-Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even pass
 it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but my
   first instinct was to embed the serialised cursor in the HTML as the
   'next' link. But that doesn't look like a good idea as Nick's decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten to this answer. No, there is no traversal to get to the
   offset.
 
BigTable has an underlying mechanism for range queries on keys.
 Indexes
   are
essentially a key comprised of a concatenation of application ID,
 entity
type, column, value. When a filter operation is performed, the
 datastore
looks for a range matching this criteria, returning the set of keys.
 A
cursor also adds the datastore key of the entity so it is possible to
serialize where to begin the query. This is actually a bit awkward to
explain without visuals. You can watch Ryan Barrett's talk here:
 
   http://www.youtube.com/watch?v=tx5gdoNpcZM
 
Hopefully, we'll be able to post an article at some point in the
 future
explaining how cursors work.
 
2010/2/8 Alkis Evlogimenos ('Αλκης Ευλογημένος) 
 evlogime...@gmail.com
 
 There is no offset. The protocol buffer stores a start_key and a
   boolean
 denoting if this start key is inclusive or not. The performance of
 continuing the fetch from a cursor should be the same as the
   performance of
 the first entities you got from a query.
 
 On Mon, Feb 8, 2010 at 4:33 PM, Stephen sdea...@gmail.com wrote:
 
 On Feb 8, 7:06 pm, Ikai L (Google) ika...@google.com wrote:
  The official docs are pending, but here's Nick Johnson to the
   rescue:
 
  http://blog.notdot.net/2010/02/New-features-in-1-3-1-prerelease-Cursors
 
 What are the performance characteristics of cursors?
 
 The serialised cursor shows that it stores an offset. Does that
 mean
 that if the offset is one million, one million rows will have to
 be
 skipped before the next 10 are returned? This will be faster than
 doing it in your app, but not as quick as the existing bookmark
 techniques which use the primary key index.
 
 Or is the server-side stateful, like a typical SQL implementation
 of
 cursors? In which case, are there any limits to the number of
 active
 cursors? Or what if a cursor is resumed some time in the future;
 will
 it work at all, or work slower?
 
 --
 You received this message because you are subscribed to the Google
   Groups
 Google App Engine group.
 To post to this group, send email to
   google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com
 
   google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com
 google-appengine%252bunsubscr...@googlegroups.comgoogle-appengine%25252bunsubscr...@googlegroups.com
 
 
 .
 For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.
 
 --
 
 Alkis
 
 --
 You received this message because you are subscribed to the Google
   Groups
 Google App Engine group.
 To post to this group, send email to
 google-appengine@googlegroups.com
   .
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 

[google-appengine] Unable to appcfg.py update my app

2010-02-09 Thread Tom Wu
Application: myapp; version: 1.
Server: appengine.google.com.
Scanning files on local disk.
Scanned 500 files.
Scanned 1000 files.
Scanned 1500 files.
Scanned 2000 files.
Initiating update.
Error 500: --- begin server output ---

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


Best Regards
Tom Wu

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



Re: [google-appengine] App Engine URI Quota

2010-02-09 Thread Nick Johnson (Google)
Hi Tim,

This text is a holdover from when we had a high CPU quota. You can safely
ignore it as anything other than a warning that you should consider
optimising your handler.

-Nick Johnson

On Mon, Feb 8, 2010 at 5:45 AM, Timwillhack timwillh...@gmail.com wrote:

 I've been writing a python backend on app engine for use with a
 facebook game.

 One of my pages is currently hitting 2459 CPU in the admin console per
 request (avg).  Its a register page and does a lot of databasing
 different classes.

 I've noticed an exclamation next to it that says 'This URI uses a high
 amount of CPU and may soon exceed its quota'

 keyword here being 'its' as in an individual pages quota.

 I've searched on this forum and found an answer that it isn't specific
 to a particular URI anymore but I wanted to verify this as if it is I
 can see running into a lot of problems shortly after release.

 I apologize for re-asking but I think being 100% sure would make me
 feel a lot better about a major release using app engine,python and
 facebook together in a winter wonderland.

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




-- 
Nick Johnson, Developer Programs Engineer, App Engine
Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
368047

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



Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Nickolas Daskalou
Will we be able to construct our own cursors much the same way that we are
able to construct our own Datastore keys (Key.from_path())?

Also along the same lines, will we be able to deconstruct a cursor to get
its components (offset, start_inclusive etc.), as we can now do with keys (
key.name(), key.id(), key.kind() etc.)?


2010/2/9 Nick Johnson (Google) nick.john...@google.com

 2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in a
 web page.


 You're right that it's unwise. Depending on how you construct your query, a
 user could potentially modify the cursor they send to you to return results
 from any query your datastore is capable of performing, which could result
 in you revealing information to the user that they shouldn't know. You
 should either store the cursor on the server-side, or encrypt it before
 sending it to the client.

 I was going to mention something about this in my post, but it slipped my
 mind.

 -Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even pass
 it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but my
   first instinct was to embed the serialised cursor in the HTML as the
   'next' link. But that doesn't look like a good idea as Nick's decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten to this answer. No, there is no traversal to get to the
   offset.
 
BigTable has an underlying mechanism for range queries on keys.
 Indexes
   are
essentially a key comprised of a concatenation of application ID,
 entity
type, column, value. When a filter operation is performed, the
 datastore
looks for a range matching this criteria, returning the set of keys.
 A
cursor also adds the datastore key of the entity so it is possible
 to
serialize where to begin the query. This is actually a bit awkward
 to
explain without visuals. You can watch Ryan Barrett's talk here:
 
   http://www.youtube.com/watch?v=tx5gdoNpcZM
 
Hopefully, we'll be able to post an article at some point in the
 future
explaining how cursors work.
 
2010/2/8 Alkis Evlogimenos ('Αλκης Ευλογημένος) 
 evlogime...@gmail.com
 
 There is no offset. The protocol buffer stores a start_key and a
   boolean
 denoting if this start key is inclusive or not. The performance of
 continuing the fetch from a cursor should be the same as the
   performance of
 the first entities you got from a query.
 
 On Mon, Feb 8, 2010 at 4:33 PM, Stephen sdea...@gmail.com
 wrote:
 
 On Feb 8, 7:06 pm, Ikai L (Google) ika...@google.com wrote:
  The official docs are pending, but here's Nick Johnson to the
   rescue:
 
  
 http://blog.notdot.net/2010/02/New-features-in-1-3-1-prerelease-Cursors
 
 What are the performance characteristics of cursors?
 
 The serialised cursor shows that it stores an offset. Does that
 mean
 that if the offset is one million, one million rows will have to
 be
 skipped before the next 10 are returned? This will be faster than
 doing it in your app, but not as quick as the existing bookmark
 techniques which use the primary key index.
 
 Or is the server-side stateful, like a typical SQL implementation
 of
 cursors? In which case, are there any limits to the number of
 active
 cursors? Or what if a cursor is resumed some time in the future;
 will
 it work at all, or work slower?
 
 --
 You received this message because you are subscribed to the
 Google
   Groups
 Google App Engine group.
 To post to this group, send email to
   google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com
 
   google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com
 google-appengine%252bunsubscr...@googlegroups.comgoogle-appengine%25252bunsubscr...@googlegroups.com
 
 
 .
 For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.
 
 --
 
 Alkis
 
 --
 You received this 

Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Nick Johnson (Google)
Hi Nickolas,

2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we are
 able to construct our own Datastore keys (Key.from_path())?


No, not practically speaking.



 Also along the same lines, will we be able to deconstruct a cursor to get
 its components (offset, start_inclusive etc.), as we can now do with keys (
 key.name(), key.id(), key.kind() etc.)?


While you could do this, there's no guarantees that it'll work (or continue
to work), as you'd be digging into internal implementation details. Why do
you want to do this?

-Nick Johnson



 2010/2/9 Nick Johnson (Google) nick.john...@google.com

  2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in a
 web page.


 You're right that it's unwise. Depending on how you construct your query,
 a user could potentially modify the cursor they send to you to return
 results from any query your datastore is capable of performing, which could
 result in you revealing information to the user that they shouldn't know.
 You should either store the cursor on the server-side, or encrypt it before
 sending it to the client.

 I was going to mention something about this in my post, but it slipped my
 mind.

 -Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even pass
 it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but my
   first instinct was to embed the serialised cursor in the HTML as the
   'next' link. But that doesn't look like a good idea as Nick's decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it
 again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten to this answer. No, there is no traversal to get to
 the
   offset.
 
BigTable has an underlying mechanism for range queries on keys.
 Indexes
   are
essentially a key comprised of a concatenation of application ID,
 entity
type, column, value. When a filter operation is performed, the
 datastore
looks for a range matching this criteria, returning the set of
 keys. A
cursor also adds the datastore key of the entity so it is possible
 to
serialize where to begin the query. This is actually a bit awkward
 to
explain without visuals. You can watch Ryan Barrett's talk here:
 
   http://www.youtube.com/watch?v=tx5gdoNpcZM
 
Hopefully, we'll be able to post an article at some point in the
 future
explaining how cursors work.
 
2010/2/8 Alkis Evlogimenos ('Αλκης Ευλογημένος) 
 evlogime...@gmail.com
 
 There is no offset. The protocol buffer stores a start_key and a
   boolean
 denoting if this start key is inclusive or not. The performance
 of
 continuing the fetch from a cursor should be the same as the
   performance of
 the first entities you got from a query.
 
 On Mon, Feb 8, 2010 at 4:33 PM, Stephen sdea...@gmail.com
 wrote:
 
 On Feb 8, 7:06 pm, Ikai L (Google) ika...@google.com wrote:
  The official docs are pending, but here's Nick Johnson to the
   rescue:
 
  
 http://blog.notdot.net/2010/02/New-features-in-1-3-1-prerelease-Cursors
 
 What are the performance characteristics of cursors?
 
 The serialised cursor shows that it stores an offset. Does that
 mean
 that if the offset is one million, one million rows will have to
 be
 skipped before the next 10 are returned? This will be faster
 than
 doing it in your app, but not as quick as the existing bookmark
 techniques which use the primary key index.
 
 Or is the server-side stateful, like a typical SQL
 implementation of
 cursors? In which case, are there any limits to the number of
 active
 cursors? Or what if a cursor is resumed some time in the future;
 will
 it work at all, or work slower?
 
 --
 You received this message because you are subscribed to the
 Google
   Groups
 Google App Engine group.
 To post to this group, send email to
   google-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 google-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%252bunsubscr...@googlegroups.com
 
   

[google-appengine] app engine, shared IP and twitter api

2010-02-09 Thread enes akar
Hi;

I have just deployed an application to app engine which use twitter search
api.

But there is a problem. Twitter blocks some of  my requests saying You have
been rate limited. Enhance your calm.

Of course I have asked about this to twitter men, waiting for their reply.

But I want to ask you, whether following scenerio is possible:
May app engine give the same IP to different applications?
If so another application which we share the same IP, may be spamming
twitter api; and because of this spammer application I am blocked too.

Is this possible?
Have you seen similar problem, and is there a solution?

Note: It is not possible to exceed the rate limits of twitter, because there
is no traffic in my site.


Thanks in advance.



-- 
Enes Akar
http://www.linkedin.com/pub/enes-akar/7/835/3aa

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



Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Nickolas Daskalou
I'd want to do this so that I could include parts of the cursor (such as the
offset) into a URL without including other parts (eg. the model kind and
filters). I could then reconstruct the cursor on the server side based on
what was passed into the URL.

For example, if I was searching for blog comments that contained the word
the (with the default order being the creation time, descending), the URL
might look like this:

myblog.com/comments/?q=the

With model:

class Comment(db.Model):
  
  created_at = db.DateTimeProperty(auto_now_add=True)
  words = db.StringListProperty() # A list of all the words in a comment
(forget about exploding indexes for now)
  ...

The query object for this URL might look something like:


q = Comment.all().filter('words',self.request.get('q')).order('-created_at')


To get to the 1001st comment, it'd be good if the URL looked something like
this:

myblog.com/comments/?q=theskip=1000

instead of:

myblog.com/comments/?q=thecursor=[something ugly]

so that when the request comes in, I can do this:


q = Comment.all().filter('words',self.request.get('q')).order('-created_at')
cursor_template = q.cursor_template()
cursor =
db.Cursor.from_template(cursor_template,offset=int(self.request.get('skip')))

(or something along these lines)

Does that make sense?


On 10 February 2010 01:03, Nick Johnson (Google) nick.john...@google.comwrote:

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we are
 able to construct our own Datastore keys (Key.from_path())?


 No, not practically speaking.



 Also along the same lines, will we be able to deconstruct a cursor to
 get its components (offset, start_inclusive etc.), as we can now do with
 keys (key.name(), key.id(), key.kind() etc.)?


 While you could do this, there's no guarantees that it'll work (or continue
 to work), as you'd be digging into internal implementation details. Why do
 you want to do this?

 -Nick Johnson



 2010/2/9 Nick Johnson (Google) nick.john...@google.com

  2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in a
 web page.


 You're right that it's unwise. Depending on how you construct your query,
 a user could potentially modify the cursor they send to you to return
 results from any query your datastore is capable of performing, which could
 result in you revealing information to the user that they shouldn't know.
 You should either store the cursor on the server-side, or encrypt it before
 sending it to the client.

 I was going to mention something about this in my post, but it slipped my
 mind.

 -Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even
 pass it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but my
   first instinct was to embed the serialised cursor in the HTML as the
   'next' link. But that doesn't look like a good idea as Nick's
 decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it
 again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten to this answer. No, there is no traversal to get to
 the
   offset.
 
BigTable has an underlying mechanism for range queries on keys.
 Indexes
   are
essentially a key comprised of a concatenation of application ID,
 entity
type, column, value. When a filter operation is performed, the
 datastore
looks for a range matching this criteria, returning the set of
 keys. A
cursor also adds the datastore key of the entity so it is possible
 to
serialize where to begin the query. This is actually a bit awkward
 to
explain without visuals. You can watch Ryan Barrett's talk here:
 
   http://www.youtube.com/watch?v=tx5gdoNpcZM
 
Hopefully, we'll be able to post an article at some point in the
 future
explaining how cursors work.
 
2010/2/8 Alkis Evlogimenos ('Αλκης Ευλογημένος) 
 evlogime...@gmail.com
 
 There is no offset. The protocol buffer stores a start_key and a
   boolean
 denoting if this start key is inclusive or not. The performance
 of
 continuing the fetch from a cursor should be the same as the
   performance of
 the first entities you got from a query.
 
 On Mon, Feb 8, 2010 at 4:33 PM, Stephen sdea...@gmail.com
 wrote:
 
 On 

[google-appengine] Re: comment récupérer des image à partir de la data store

2010-02-09 Thread kais louetri
merci bien pour le lien, il y a quelque chose d'autre que je veut
m'informer sur, j'utilise pour tester(en local) le code qui manipule
des image la bibliothèque PIL(Python Imaging Library). maintenant si
je fini et je veut uploader mon code pour qu'il soit utiliser sur le
net, comment je vais faire? est ce que je doit installer cette
bibliothèque sur le serveur ou est héberger mon application web ?

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



Re: [google-appengine] app engine, shared IP and twitter api

2010-02-09 Thread Nick Johnson (Google)
Hi,

App Engine uses a shared pool of IPs for outgoing urlfetch requests.
Unfortunately, as you observe, some services such as Twitter enforce per-ip
ratelimiting.

In the case of Twitter, most of their APIs that support anonymous access
also support authenticated access. You can submit authenticated requests
instead, which are limited by your account, rather than by your IP.

-Nick Johnson

On Tue, Feb 9, 2010 at 2:33 PM, enes akar enesa...@gmail.com wrote:

 Hi;

 I have just deployed an application to app engine which use twitter search
 api.

 But there is a problem. Twitter blocks some of  my requests saying You
 have been rate limited. Enhance your calm.

 Of course I have asked about this to twitter men, waiting for their reply.

 But I want to ask you, whether following scenerio is possible:
 May app engine give the same IP to different applications?
 If so another application which we share the same IP, may be spamming
 twitter api; and because of this spammer application I am blocked too.

 Is this possible?
 Have you seen similar problem, and is there a solution?

 Note: It is not possible to exceed the rate limits of twitter, because
 there is no traffic in my site.


 Thanks in advance.



 --
 Enes Akar
 http://www.linkedin.com/pub/enes-akar/7/835/3aa

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




-- 
Nick Johnson, Developer Programs Engineer, App Engine
Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
368047

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



Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Nick Johnson (Google)
Hi Nickolas,

2010/2/9 Nickolas Daskalou n...@daskalou.com

 I'd want to do this so that I could include parts of the cursor (such as
 the offset) into a URL without including other parts (eg. the model kind and
 filters). I could then reconstruct the cursor on the server side based on
 what was passed into the URL.


The offset argument you're talking about is specific to the dev_appserver's
implementation of cursors. In production, offsets are not used, so this
won't work.

-Nick Johnson



 For example, if I was searching for blog comments that contained the word
 the (with the default order being the creation time, descending), the URL
 might look like this:

 myblog.com/comments/?q=the

 With model:

 class Comment(db.Model):
   
   created_at = db.DateTimeProperty(auto_now_add=True)
   words = db.StringListProperty() # A list of all the words in a comment
 (forget about exploding indexes for now)
   ...

 The query object for this URL might look something like:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 

 To get to the 1001st comment, it'd be good if the URL looked something like
 this:

 myblog.com/comments/?q=theskip=1000

 instead of:

 myblog.com/comments/?q=thecursor=[something ugly]

 so that when the request comes in, I can do this:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 cursor_template = q.cursor_template()
 cursor =
 db.Cursor.from_template(cursor_template,offset=int(self.request.get('skip')))
 
 (or something along these lines)

 Does that make sense?



 On 10 February 2010 01:03, Nick Johnson (Google) 
 nick.john...@google.comwrote:

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we are
 able to construct our own Datastore keys (Key.from_path())?


 No, not practically speaking.



 Also along the same lines, will we be able to deconstruct a cursor to
 get its components (offset, start_inclusive etc.), as we can now do with
 keys (key.name(), key.id(), key.kind() etc.)?


 While you could do this, there's no guarantees that it'll work (or
 continue to work), as you'd be digging into internal implementation details.
 Why do you want to do this?

 -Nick Johnson



 2010/2/9 Nick Johnson (Google) nick.john...@google.com

  2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in a
 web page.


 You're right that it's unwise. Depending on how you construct your
 query, a user could potentially modify the cursor they send to you to 
 return
 results from any query your datastore is capable of performing, which could
 result in you revealing information to the user that they shouldn't know.
 You should either store the cursor on the server-side, or encrypt it before
 sending it to the client.

 I was going to mention something about this in my post, but it slipped
 my mind.

 -Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even
 pass it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but my
   first instinct was to embed the serialised cursor in the HTML as
 the
   'next' link. But that doesn't look like a good idea as Nick's
 decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could
 this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it
 again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten to this answer. No, there is no traversal to get to
 the
   offset.
 
BigTable has an underlying mechanism for range queries on keys.
 Indexes
   are
essentially a key comprised of a concatenation of application ID,
 entity
type, column, value. When a filter operation is performed, the
 datastore
looks for a range matching this criteria, returning the set of
 keys. A
cursor also adds the datastore key of the entity so it is
 possible to
serialize where to begin the query. This is actually a bit
 awkward to
explain without visuals. You can watch Ryan Barrett's talk here:
 
   http://www.youtube.com/watch?v=tx5gdoNpcZM
 
Hopefully, we'll be able to post an article at some point in the
 future
explaining how cursors work.
 
2010/2/8 Alkis Evlogimenos ('Αλκης Ευλογημένος) 
 evlogime...@gmail.com
 
 There is no offset. The protocol buffer stores a start_key and
 a
   boolean
 

Re: [google-appengine] app engine, shared IP and twitter api

2010-02-09 Thread enes akar
Thanks Nick I will try to find authenticated version of search api.

By the way I am really thankful about the immediate responses of this group.

On Tue, Feb 9, 2010 at 4:50 PM, Nick Johnson (Google) 
nick.john...@google.com wrote:

 Hi,

 App Engine uses a shared pool of IPs for outgoing urlfetch requests.
 Unfortunately, as you observe, some services such as Twitter enforce per-ip
 ratelimiting.

 In the case of Twitter, most of their APIs that support anonymous access
 also support authenticated access. You can submit authenticated requests
 instead, which are limited by your account, rather than by your IP.

 -Nick Johnson

 On Tue, Feb 9, 2010 at 2:33 PM, enes akar enesa...@gmail.com wrote:

 Hi;

 I have just deployed an application to app engine which use twitter search
 api.

 But there is a problem. Twitter blocks some of  my requests saying You
 have been rate limited. Enhance your calm.

 Of course I have asked about this to twitter men, waiting for their reply.

 But I want to ask you, whether following scenerio is possible:
 May app engine give the same IP to different applications?
 If so another application which we share the same IP, may be spamming
 twitter api; and because of this spammer application I am blocked too.

 Is this possible?
 Have you seen similar problem, and is there a solution?

 Note: It is not possible to exceed the rate limits of twitter, because
 there is no traffic in my site.


 Thanks in advance.



 --
 Enes Akar
 http://www.linkedin.com/pub/enes-akar/7/835/3aa

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




 --
 Nick Johnson, Developer Programs Engineer, App Engine
 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
 368047

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




-- 
Enes Akar
http://www.linkedin.com/pub/enes-akar/7/835/3aa

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



Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Nickolas Daskalou
Does the production cursor string contain information about the app id,
kind, any filter()s or order()s, and (more importantly) some sort of
numerical value that indicates how many records the next query should
skip? If so, and if we could extract this information (and then use it
again to the reconstruct the cursor), that would make for much cleaner,
safer and intuitive URLs than including the entire cursor string (or some
sort of encrypted/encoded cursor string replacement).


2010/2/10 Nick Johnson (Google) nick.john...@google.com

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 I'd want to do this so that I could include parts of the cursor (such as
 the offset) into a URL without including other parts (eg. the model kind and
 filters). I could then reconstruct the cursor on the server side based on
 what was passed into the URL.


 The offset argument you're talking about is specific to the dev_appserver's
 implementation of cursors. In production, offsets are not used, so this
 won't work.

  -Nick Johnson



 For example, if I was searching for blog comments that contained the word
 the (with the default order being the creation time, descending), the URL
 might look like this:

 myblog.com/comments/?q=the

 With model:

 class Comment(db.Model):
   
   created_at = db.DateTimeProperty(auto_now_add=True)
   words = db.StringListProperty() # A list of all the words in a comment
 (forget about exploding indexes for now)
   ...

 The query object for this URL might look something like:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 

 To get to the 1001st comment, it'd be good if the URL looked something
 like this:

 myblog.com/comments/?q=theskip=1000

 instead of:

 myblog.com/comments/?q=thecursor=[something ugly]

 so that when the request comes in, I can do this:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 cursor_template = q.cursor_template()
 cursor =
 db.Cursor.from_template(cursor_template,offset=int(self.request.get('skip')))
 
 (or something along these lines)

 Does that make sense?



 On 10 February 2010 01:03, Nick Johnson (Google) nick.john...@google.com
  wrote:

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we
 are able to construct our own Datastore keys (Key.from_path())?


 No, not practically speaking.



 Also along the same lines, will we be able to deconstruct a cursor to
 get its components (offset, start_inclusive etc.), as we can now do with
 keys (key.name(), key.id(), key.kind() etc.)?


 While you could do this, there's no guarantees that it'll work (or
 continue to work), as you'd be digging into internal implementation details.
 Why do you want to do this?

 -Nick Johnson



 2010/2/9 Nick Johnson (Google) nick.john...@google.com

  2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in a
 web page.


 You're right that it's unwise. Depending on how you construct your
 query, a user could potentially modify the cursor they send to you to 
 return
 results from any query your datastore is capable of performing, which 
 could
 result in you revealing information to the user that they shouldn't know.
 You should either store the cursor on the server-side, or encrypt it 
 before
 sending it to the client.

 I was going to mention something about this in my post, but it slipped
 my mind.

 -Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even
 pass it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but my
   first instinct was to embed the serialised cursor in the HTML as
 the
   'next' link. But that doesn't look like a good idea as Nick's
 decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could
 this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it
 again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten to this answer. No, there is no traversal to get to
 the
   offset.
 
BigTable has an underlying mechanism for range queries on keys.
 Indexes
   are
essentially a key comprised of a concatenation of application
 ID, entity
type, column, value. When a filter operation is performed, the
 datastore
looks for a range matching this criteria, returning the set of
 

Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread 'Αλκης Ευλογημένος
If the cursor had to skip entries by using an offset, its performance would
depend on the size of the offset. This is what the current Query.fetch() api
is doing when you give it an offset. A cursor is a pointer to the entry from
which the next query will start. It has no notion of offset.

On Tue, Feb 9, 2010 at 4:07 PM, Nickolas Daskalou n...@daskalou.com wrote:

 Does the production cursor string contain information about the app id,
 kind, any filter()s or order()s, and (more importantly) some sort of
 numerical value that indicates how many records the next query should
 skip? If so, and if we could extract this information (and then use it
 again to the reconstruct the cursor), that would make for much cleaner,
 safer and intuitive URLs than including the entire cursor string (or some
 sort of encrypted/encoded cursor string replacement).


 2010/2/10 Nick Johnson (Google) nick.john...@google.com

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 I'd want to do this so that I could include parts of the cursor (such as
 the offset) into a URL without including other parts (eg. the model kind and
 filters). I could then reconstruct the cursor on the server side based on
 what was passed into the URL.


 The offset argument you're talking about is specific to the
 dev_appserver's implementation of cursors. In production, offsets are not
 used, so this won't work.

  -Nick Johnson



 For example, if I was searching for blog comments that contained the word
 the (with the default order being the creation time, descending), the URL
 might look like this:

 myblog.com/comments/?q=the

 With model:

 class Comment(db.Model):
   
   created_at = db.DateTimeProperty(auto_now_add=True)
   words = db.StringListProperty() # A list of all the words in a comment
 (forget about exploding indexes for now)
   ...

 The query object for this URL might look something like:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 

 To get to the 1001st comment, it'd be good if the URL looked something
 like this:

 myblog.com/comments/?q=theskip=1000

 instead of:

 myblog.com/comments/?q=thecursor=[something ugly]

 so that when the request comes in, I can do this:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 cursor_template = q.cursor_template()
 cursor =
 db.Cursor.from_template(cursor_template,offset=int(self.request.get('skip')))
 
 (or something along these lines)

 Does that make sense?



 On 10 February 2010 01:03, Nick Johnson (Google) 
 nick.john...@google.com wrote:

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we
 are able to construct our own Datastore keys (Key.from_path())?


 No, not practically speaking.



 Also along the same lines, will we be able to deconstruct a cursor to
 get its components (offset, start_inclusive etc.), as we can now do with
 keys (key.name(), key.id(), key.kind() etc.)?


 While you could do this, there's no guarantees that it'll work (or
 continue to work), as you'd be digging into internal implementation 
 details.
 Why do you want to do this?

 -Nick Johnson



 2010/2/9 Nick Johnson (Google) nick.john...@google.com

  2010/2/9 Stephen sdea...@gmail.com


 I'm asking if it's wise to store it as a query parameter embedded in
 a
 web page.


 You're right that it's unwise. Depending on how you construct your
 query, a user could potentially modify the cursor they send to you to 
 return
 results from any query your datastore is capable of performing, which 
 could
 result in you revealing information to the user that they shouldn't know.
 You should either store the cursor on the server-side, or encrypt it 
 before
 sending it to the client.

 I was going to mention something about this in my post, but it slipped
 my mind.

 -Nick Johnson



 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store it
 anywhere
  you want to store strings: Memcached, Datastore, etc. You can even
 pass it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but
 my
   first instinct was to embed the serialised cursor in the HTML as
 the
   'next' link. But that doesn't look like a good idea as Nick's
 decoded
   query shows what's embedded:
 
   PrimaryScan {
start_key: shell\000TestModel\000foo\000\232bar\000\200
start_inclusive: true
   }
   keys_only: false
 
   First, you may or may not want to leak this info. Second, could
 this
   be altered on the client to change the query in any way that's
   undesirable?
 
   Once you have a cursor, where do you store it so you can use it
 again?
 
   On Feb 8, 10:17 pm, Ikai L (Google) ika...@google.com wrote:
I got beaten 

Re: [google-appengine] getting back images from data store

2010-02-09 Thread kang
Have you seen the Dynamically serving images part on that page?
http://code.google.com/intl/fr/appengine/docs/python/images/usingimages.html

On Mon, Feb 8, 2010 at 1:56 AM, kais louetri yott...@gmail.com wrote:

 HI
 i am using the exemple of the guestbook (http://code.google.com/intl/
 fr/appengine/docs/python/images/usingimages.html), and i would like to
 get back images that i stored in it to use them in other pages, can
 any one give me a help with that ?
 thank you

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




-- 
Stay hungry,Stay foolish.

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



Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Jeff Schnitzer
Still, a slightly modified version of the original request does not
seem unreasonable.  He would have to formulate his URLs something like
this:

myblog.com/comments/?q=thefirst=1234

or maybe:

myblog.com/comments/?q=theafter=1234

I could see this being really useful, since encrypting (or worse,
storing on the server) the cursor is pretty painful.  Furthermore, it
seems highly probable that as things are, many people will obliviously
write public webapps that take a raw cursor as a parameter.  This
could be the new SQL injection attack.

Jeff

2010/2/9 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com:
 If the cursor had to skip entries by using an offset, its performance would
 depend on the size of the offset. This is what the current Query.fetch() api
 is doing when you give it an offset. A cursor is a pointer to the entry from
 which the next query will start. It has no notion of offset.
 On Tue, Feb 9, 2010 at 4:07 PM, Nickolas Daskalou n...@daskalou.com wrote:

 Does the production cursor string contain information about the app id,
 kind, any filter()s or order()s, and (more importantly) some sort of
 numerical value that indicates how many records the next query should
 skip? If so, and if we could extract this information (and then use it
 again to the reconstruct the cursor), that would make for much cleaner,
 safer and intuitive URLs than including the entire cursor string (or some
 sort of encrypted/encoded cursor string replacement).


 2010/2/10 Nick Johnson (Google) nick.john...@google.com

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 I'd want to do this so that I could include parts of the cursor (such as
 the offset) into a URL without including other parts (eg. the model kind 
 and
 filters). I could then reconstruct the cursor on the server side based on
 what was passed into the URL.

 The offset argument you're talking about is specific to the
 dev_appserver's implementation of cursors. In production, offsets are not
 used, so this won't work.
 -Nick Johnson


 For example, if I was searching for blog comments that contained the
 word the (with the default order being the creation time, descending), 
 the
 URL might look like this:

 myblog.com/comments/?q=the

 With model:

 class Comment(db.Model):
   
   created_at = db.DateTimeProperty(auto_now_add=True)
   words = db.StringListProperty() # A list of all the words in a comment
 (forget about exploding indexes for now)
   ...

 The query object for this URL might look something like:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 

 To get to the 1001st comment, it'd be good if the URL looked something
 like this:

 myblog.com/comments/?q=theskip=1000

 instead of:

 myblog.com/comments/?q=thecursor=[something ugly]

 so that when the request comes in, I can do this:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 cursor_template = q.cursor_template()
 cursor =
 db.Cursor.from_template(cursor_template,offset=int(self.request.get('skip')))
 
 (or something along these lines)

 Does that make sense?


 On 10 February 2010 01:03, Nick Johnson (Google)
 nick.john...@google.com wrote:

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we
 are able to construct our own Datastore keys (Key.from_path())?

 No, not practically speaking.


 Also along the same lines, will we be able to deconstruct a cursor
 to get its components (offset, start_inclusive etc.), as we can now do 
 with
 keys (key.name(), key.id(), key.kind() etc.)?

 While you could do this, there's no guarantees that it'll work (or
 continue to work), as you'd be digging into internal implementation 
 details.
 Why do you want to do this?
 -Nick Johnson


 2010/2/9 Nick Johnson (Google) nick.john...@google.com

 2010/2/9 Stephen sdea...@gmail.com

 I'm asking if it's wise to store it as a query parameter embedded in
 a
 web page.

 You're right that it's unwise. Depending on how you construct your
 query, a user could potentially modify the cursor they send to you to 
 return
 results from any query your datastore is capable of performing, which 
 could
 result in you revealing information to the user that they shouldn't 
 know.
 You should either store the cursor on the server-side, or encrypt it 
 before
 sending it to the client.
 I was going to mention something about this in my post, but it
 slipped my mind.
 -Nick Johnson

 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store
  it anywhere
  you want to store strings: Memcached, Datastore, etc. You can even
  pass it
  as an URL parameter to task queues.
 
  2010/2/8 Stephen sdea...@gmail.com
 
 
 
 
 
   Ah right, Nick's blog does say start_key and not offset. My bad.
 
   Maybe there will be warnings in the upcoming documentation, but
   my
   

Re: [google-appengine] Re: 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Jeff Schnitzer
In case it wasn't completely clear - 1234 in this example is the
object's id, not an offset.

Jeff

On Tue, Feb 9, 2010 at 9:02 AM, Jeff Schnitzer j...@infohazard.org wrote:
 Still, a slightly modified version of the original request does not
 seem unreasonable.  He would have to formulate his URLs something like
 this:

 myblog.com/comments/?q=thefirst=1234

 or maybe:

 myblog.com/comments/?q=theafter=1234

 I could see this being really useful, since encrypting (or worse,
 storing on the server) the cursor is pretty painful.  Furthermore, it
 seems highly probable that as things are, many people will obliviously
 write public webapps that take a raw cursor as a parameter.  This
 could be the new SQL injection attack.

 Jeff

 2010/2/9 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com:
 If the cursor had to skip entries by using an offset, its performance would
 depend on the size of the offset. This is what the current Query.fetch() api
 is doing when you give it an offset. A cursor is a pointer to the entry from
 which the next query will start. It has no notion of offset.
 On Tue, Feb 9, 2010 at 4:07 PM, Nickolas Daskalou n...@daskalou.com wrote:

 Does the production cursor string contain information about the app id,
 kind, any filter()s or order()s, and (more importantly) some sort of
 numerical value that indicates how many records the next query should
 skip? If so, and if we could extract this information (and then use it
 again to the reconstruct the cursor), that would make for much cleaner,
 safer and intuitive URLs than including the entire cursor string (or some
 sort of encrypted/encoded cursor string replacement).


 2010/2/10 Nick Johnson (Google) nick.john...@google.com

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 I'd want to do this so that I could include parts of the cursor (such as
 the offset) into a URL without including other parts (eg. the model kind 
 and
 filters). I could then reconstruct the cursor on the server side based on
 what was passed into the URL.

 The offset argument you're talking about is specific to the
 dev_appserver's implementation of cursors. In production, offsets are not
 used, so this won't work.
 -Nick Johnson


 For example, if I was searching for blog comments that contained the
 word the (with the default order being the creation time, descending), 
 the
 URL might look like this:

 myblog.com/comments/?q=the

 With model:

 class Comment(db.Model):
   
   created_at = db.DateTimeProperty(auto_now_add=True)
   words = db.StringListProperty() # A list of all the words in a comment
 (forget about exploding indexes for now)
   ...

 The query object for this URL might look something like:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 

 To get to the 1001st comment, it'd be good if the URL looked something
 like this:

 myblog.com/comments/?q=theskip=1000

 instead of:

 myblog.com/comments/?q=thecursor=[something ugly]

 so that when the request comes in, I can do this:

 
 q =
 Comment.all().filter('words',self.request.get('q')).order('-created_at')
 cursor_template = q.cursor_template()
 cursor =
 db.Cursor.from_template(cursor_template,offset=int(self.request.get('skip')))
 
 (or something along these lines)

 Does that make sense?


 On 10 February 2010 01:03, Nick Johnson (Google)
 nick.john...@google.com wrote:

 Hi Nickolas,

 2010/2/9 Nickolas Daskalou n...@daskalou.com

 Will we be able to construct our own cursors much the same way that we
 are able to construct our own Datastore keys (Key.from_path())?

 No, not practically speaking.


 Also along the same lines, will we be able to deconstruct a cursor
 to get its components (offset, start_inclusive etc.), as we can now do 
 with
 keys (key.name(), key.id(), key.kind() etc.)?

 While you could do this, there's no guarantees that it'll work (or
 continue to work), as you'd be digging into internal implementation 
 details.
 Why do you want to do this?
 -Nick Johnson


 2010/2/9 Nick Johnson (Google) nick.john...@google.com

 2010/2/9 Stephen sdea...@gmail.com

 I'm asking if it's wise to store it as a query parameter embedded in
 a
 web page.

 You're right that it's unwise. Depending on how you construct your
 query, a user could potentially modify the cursor they send to you to 
 return
 results from any query your datastore is capable of performing, which 
 could
 result in you revealing information to the user that they shouldn't 
 know.
 You should either store the cursor on the server-side, or encrypt it 
 before
 sending it to the client.
 I was going to mention something about this in my post, but it
 slipped my mind.
 -Nick Johnson

 On Feb 9, 12:26 am, Ikai L (Google) ika...@google.com wrote:
  A cursor serializes to a Base64 encoded String, so you can store
  it anywhere
  you want to store strings: Memcached, Datastore, etc. You can even
  pass it
  as an URL parameter to task queues.
 
  

Re: [google-appengine] 100 seeks/sec equals how many writes/sec?????

2010-02-09 Thread Wesley C (Google)
marc,

the language is a little tricky here. 风笑雪's response is a closer to
reality. brett's argument was for pure disk operations at the lowest
level, e.g., he was speaking solely of max possible write operations
to disk (and not *entity* writes to disk). it's not even possible to
write 100 small entities to disk in a sec because of the overhead of
journaling, indexing, and verification.

i also received some clarification from brett to confirm:

[My] point in saying that was to illustrate that *base-case* with a
10ms seek time you could do 100 writes/sec, and that doesn't even
include the data transfer time. With data larger than one disk block
and operating system overhead the potential write throughput for a
single entity is way less.

if you wanted to do a real measurement, you could use time.time() in 2
places to measure write throughput for your app and get a rough idea.
keep in mind that your app runs on different machines and different
disks so an average number is the best rough estimate.

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

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

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



[google-appengine] Re: Unable to access Admin Console

2010-02-09 Thread Wesley Chun (Google)
greetings!

are you still having this issue? if so, can you send us a more
accurate URL than https:appengine.google.com/a/YourDomain.com/?
also, what is your application ID? we can help you more with this
additional information.

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

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

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



[google-appengine] A Which is Better question.

2010-02-09 Thread johnP
I'm trying to get my head around where to use the datastore for
business logic, and where to use python code.  So just wanted to ask
two which approach is better questions:

Scenario 1.  For example, let's say you have a list of items, and you
need to return both the selected item as well as the list of items.
For example - a person has a bunch of cars:  [Honda, Ford, Porsche,
Yugo, Trabaunt, Dusenberg].  You have stored the Yugo key as the
person's 'active_car'.

   You need to return: car, cars = Yugo, [Honda, Ford,
Porsche, Yugo, Trabaunt, Dusenberg]

Which approach is better to return the values...

Approach A: cars=person.car_set.fetch(1000)
   car = db.get(stored_car_key)
   return car, cars


Approach B: cars = person.car_set.fetch(1000)
   car = [i for i in cars if i.key() ==
stored_car_key]
   return car, cars

In other words - what's cheaper - the list comprehension, or the
db.get().  If the person has 1000 cars, does the answer change?


Scenario 2.  I have a list of 300 people (In my case, there will never
be more than 1000) that I need to slice and dice in different ways.
a.  Need them all, by last name, from California.  b.  Need people
between the ages of 25 and 35 in California.  c.  Need people over 300
lbs in California.  Which approach should I use:

Approach A:  Create multiple queries:
 a.  people =
state.people_set.order('last_name').fetch(1000)
 b.  people =
state.people_set.order('age').filter('age ', 35).etc.
 c.  people =
state.people_set.order(weight').filter('weight ', 300).etc.

Approach B:  Memcache the entire list of people, and
list_comprehension them into submission.  For example:

   def return_people_by_last_name():
 people = get_all_people_from_memcache()
 sort_list = [(i.last_name, i) for i in people
if i.state == state]
 sort_list.sort()
 return [i[1] for i in sort_list]

   def sort_people_by_weight():
  similar to above...

In approach A, you'll be bearing the cost of additional indexes, as
well as bearing the cost that most of your returns will be hits to the
database.  In approach B, you might be pulling 300 People from
memcache in order to return a single 300 pounder.

Answers to these two questions might give me a better sense of when to
hit the datastore for business logic, and when to process using python
code.

Thanks!

johnP






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



[google-appengine] Re: 500 status on apps, api changes?

2010-02-09 Thread dan
What was the change, and what was the fix?

The stack trace above shows:

  File /base/data/home/apps/mk-a-z/3.339622665704014614/mkapp/
business.py, line 149, in get_by_ident
business = Business.get_by_key_name(key)
  File /base/python_lib/versions/1/google/appengine/ext/db/
__init__.py, line 991, in get_by_key_name
return get(keys[0], rpc=rpc)
TypeError: get_cached() got an unexpected keyword argument 'rpc'

If db.get changed, you would have to change google/appengine/ext/db/
__init__.py, but I presume that is replaced when you upload anyway.

Did Model.get_by_key_name change?

Dan

On Feb 9, 3:08 am, dobee berndd...@gmail.com wrote:
 ok, we now fixed the compatibility issues on our apps, but the
 development sdk still does not match the api on appengine.

 it would be nice to get information about such internal changes up-
 front the next time. it is always hard to explain our customers why
 the site was offline for some technical reason we cannot forsee.

 thx, bernd

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



[google-appengine] Re: 500 status on apps, api changes?

2010-02-09 Thread dan
Note: I had this problem as well.

I was using the caching strategy outlined in
http://henritersteeg.wordpress.com/2009/03/30/generic-db-caching-in-google-app-engine/,
which relies on the signature of db.get().

Dan


On Feb 9, 3:08 am, dobee berndd...@gmail.com wrote:
 ok, we now fixed the compatibility issues on our apps, but the
 development sdk still does not match the api on appengine.

 it would be nice to get information about such internal changes up-
 front the next time. it is always hard to explain our customers why
 the site was offline for some technical reason we cannot forsee.

 thx, bernd

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



[google-appengine] I need a working InboundMail example, pls

2010-02-09 Thread Matthew
Hello, all.

If you have a working example of using inbound email,
I would be grateful for a peek at it.

Oops, I should mention that I need the Python version.

Also, if you do have an example and you are nice enough
to share it with me, can I pls beg your indulgence and have
you show me what you put into the from/to fields in the
Development Console when you are testing?  Thanks!

Thank you one and all for being here for me,

Matthew

ps. this is my first posting on this group - and as a way
of introducing myself I'll just say that I am overjoyed
to see Python being used in such a way - it was clear
to me when Python 2 arrived that that it (or something
like it) was going to be the way to software gets created
- long live Python and GAE

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



[google-appengine] Server error message when signing up to the google app engine

2010-02-09 Thread Brice Tchiebeb
Hi everyone, I'm not sure that my question has'nt been asked before,
but i'm gonna whatever all ask you that.

When choosing to sign up to the GAE, and after having typed my email
adress and my password, I've had this message :

___
Error: Server Error

The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this
error message and the query that caused it.
___

Do someone else get this error message ?

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



[google-appengine] already covered, but mentioning it again

2010-02-09 Thread Matthew

Inbound email was not working.

Downgraded Python to 2.5.

Now email works on Ubuntu 10.

Here's what I did:



In a terminal install Python 2.5

They will coexist on the system.

sudo apt-get install python2.5

Edit dev_appserver.py in your google_appengine directory

Change the first line in dev_appserver.py…

#!/usr/bin/env python

….to…

#!/usr/bin/env python2.5

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



[google-appengine] Creating Index programatically

2010-02-09 Thread Sandeep
Is there any way to create/build an Index programatically in GAE?

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



Re: [google-appengine] Creating Index programatically

2010-02-09 Thread Robert Kluin
No.

But if you explain the problem you are trying to solve someone might
be able to suggest an alternative solution.

Robert




On Tue, Feb 9, 2010 at 1:34 PM, Sandeep sandeep.sath...@gmail.com wrote:
 Is there any way to create/build an Index programatically in GAE?

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



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



[google-appengine] Re: Help us bring Google Development to Saint Louis

2010-02-09 Thread STL Innovation Camp
Thank you all for your RTs and messages.
Because of the strong development community at Google, we have already
had a member of Google's outreach team contact us to speak at the STL
Innovation Camp.

Again thank you, without your desire to help the community this
wouldn't have happened.

On Jan 30, 9:05 pm, STL Innovation Camp bblancha...@gmail.com wrote:
 PLEASE READ BEFORE MARKING AS SPAM:
 The Saint Louis Dev Community, like most, is in desperate need of an
 employment boost. To help our unemployed brethren, a number of us
 formed decided to host a boot camp that teaches techies how to build
 innovative products and run their own company.

 Since our goal is economic growth and not vendor sales, this camp is
 entirely vendor neutral. We currently have speakers  sponsors from
 the Java, Microsoft, and IBM communities. Unfortunately, we haven't
 been able to get Google's attention.

 Please help us attract Google as a sponsor/speaker so Saint Louis
 developers can learn about Google App Engine in this exciting camp.
 Please forward this message or join us in a tweet off to get Googles
 attention:

 Twitter Message:
 RT @STLInnovation: Pls RT and get @google to sponsor STL Innovation
 camp. #InnovationCamphttp://bit.ly/aZxtrE

 Please tweet quickly, our camp is on Feb. 26th, so we need to get
 Google's attention quickly.http://www.stlinnovationcamp.com| @stlinnovation

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



Re: [google-appengine] Re: Stored data voiume is totally different on Datastore Statistics and Dashboard

2010-02-09 Thread Robert Kluin
I think it is a great ide.  Would certainly help us better understand
how we are using space.

Robert






On Tue, Feb 9, 2010 at 4:12 AM, Pavel Kaplin pavel.kap...@gmail.com wrote:
 I like this suggestion too. Moreover, I'd prefer detailed description of the
 number called Used Space on Dashboard/Quota Details pages. E.g. indexes =
 250 Mb , Entities = 500 Mb, sessions = 50 Mb and so on, plus detailed info
 about indexes and sessions. What do you think?

 On Mon, Feb 8, 2010 at 9:57 PM, Robert Kluin robert.kl...@gmail.com wrote:

 I like Philip's suggestion a lot.  It will help us all identify space
 intensive indexes, and _hopefully_ reduce the number of posts about
 this.

 I submitted a feature request for this issue:
 http://code.google.com/p/googleappengine/issues/detail?id=2740

 Robert




 On Mon, Feb 8, 2010 at 2:27 PM, WeatherPhilip
 philip-goo...@gladstonefamily.net wrote:
  This issue comes up about once per week. Google -- you need to address
  this. The simplest way of addressing it would be to put the size of
  *every* index on the statistics page, and show that the total
  corresponds (roughly) to the quota number.
 
  This would enable people to see which index (or indexes) was consuming
  a lot of space, and take steps to optimize -- maybe by not indexing
  that field.
 
  Philip
 
  On Feb 8, 1:48 pm, Ikai L (Google) ika...@google.com wrote:
  Are you storing information in sessions? Session information can also
  take
  up space.
 
 
 
 
 
  On Mon, Feb 8, 2010 at 5:32 AM, Pavel Kaplin pavel.kap...@gmail.com
  wrote:
   Here's the detailed description of mentioned indexes:
    1) address (string,  100 bytes), tradePoint(String,  100 bytes),
   user (Key, generated by GAE), timestamp
    2) tradePoint, user, timestamp
    3) user, timestamp
 
   Entities count is about 15k. I don't understand how it might
   happened.
 
   On Feb 8, 3:25 pm, Nick Johnson (Google) nick.john...@google.com
   wrote:
Hi Pavel,
 
That depends on the nature of your indexes, and the entities being
   indexed.
It's certainly possible for indexes to reach this magnitude -
   particularly
if you're indexing list properties.
 
-Nick Johnson
 
On Mon, Feb 8, 2010 at 1:12 PM, Pavel Kaplin
pavel.kap...@gmail.com
   wrote:
 It's hard to believe that 3 indexes (for 2, 3 and 4 fields) could
 eat
 9x more space than data itself.
 
 On Feb 8, 2:45 pm, Nick Johnson (Google)
 nick.john...@google.com
 wrote:
  Hi Pavel,
 
  The datastore stats include only the raw size of the entities.
  The
   total
  space consumed is the space consumed by the entities, plus the
  space
  consumed by all your indexes.
 
  -Nick Johnson
 
  On Mon, Feb 8, 2010 at 12:35 PM, Pavel Kaplin 
   pavel.kap...@gmail.com
 wrote:
 
   Hi there!
 
   My datastore stats says me Size of all entities = 51
   MBytes, but
   dashboard shows 0.54 Gb as Total Stored Data.
 
   As you can see, these values differ from each other for more
   than
   ten
   times. Why?
 
   Application id is bayadera-tracker
 
   --
   You received this message because you are subscribed to the
   Google
 Groups
   Google App Engine group.
   To post to this group, send email to
   google-appengine@googlegroups.com
 .
   To unsubscribe from this group, send email to
  
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.
 
  --
  Nick Johnson, Developer Programs Engineer, App Engine
  Google Ireland Ltd. :: Registered in Dublin, Ireland,
  Registration
 Number:
  368047
 
 --
 You received this message because you are subscribed to the
 Google
   Groups
 Google App Engine group.
 To post to this group, send email to
 google-appengine@googlegroups.com
   .
 To unsubscribe from this group, send email to

 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.com
 .
 For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.
 
--
Nick Johnson, Developer Programs Engineer, App Engine
Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
   Number:
368047
 
   --
   You received this message because you are subscribed to the Google
   Groups
   Google App Engine group.
   To post to this group, send email to
   google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
  
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
   e...@googlegroups.com
   .
   For more 

[google-appengine] Re: cron job and secured application

2010-02-09 Thread lent
In terms of https enforcement, it is done through the standard web
application descriptor in Java (web.xml).  Appengine automatically
redirects from http to https when an secured url is accessed through
http.  Since a cron job url is a relative url and the cron job winds
up being called through http, the cron job request gets redirected to
https.  The app is not the one sending 302, I believe appengine
doesn't allow a job to do a redirect and returns the 302 error.
That's why I think it would be of value to allow cron job to be
configured to use https rather than http.

Len

On Feb 8, 5:04 am, Nick Johnson (Google) nick.john...@google.com
wrote:
 Hi,

 I presume from your description you're enforcing https-only in your code?
 Cronjobs don't actually use HTTP, so they simply fill in the protocol value
 with a default of 'http'. You need to exempt cron requests in your app from
 sending 302s.

 -Nick Johnson



 On Sat, Feb 6, 2010 at 1:15 AM, lent lentakeu...@gmail.com wrote:
  Hi,

  I have an (java) application that's secured so that only https access
  is allowed.  I'm running into a problem with cron jobs in that they
  are sent using http and when scheduled request hits my app gets
  redirected to https and and winds up getting too many continues and
  302 status.  I didn't find anything in the docs about configuring to
  have the scheduled requests sent via https.  Is this in the plans?
  Any suggestions for how I can get around this problem other than to
  have the scheduled request urls be allowed to come in through http.

  Thanks,
  Len

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

 --
 Nick Johnson, Developer Programs Engineer, App Engine
 Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
 368047

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



Re: [google-appengine] I need a working InboundMail example, pls

2010-02-09 Thread Ikai L (Google)
Matthew, there's an example of this here in our docs:
http://code.google.com/appengine/docs/python/mail/receivingmail.html

On Mon, Feb 8, 2010 at 1:13 PM, Matthew kogswellcyc...@gmail.com wrote:

 Hello, all.

 If you have a working example of using inbound email,
 I would be grateful for a peek at it.

 Oops, I should mention that I need the Python version.

 Also, if you do have an example and you are nice enough
 to share it with me, can I pls beg your indulgence and have
 you show me what you put into the from/to fields in the
 Development Console when you are testing?  Thanks!

 Thank you one and all for being here for me,

 Matthew

 ps. this is my first posting on this group - and as a way
 of introducing myself I'll just say that I am overjoyed
 to see Python being used in such a way - it was clear
 to me when Python 2 arrived that that it (or something
 like it) was going to be the way to software gets created
 - long live Python and GAE

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




-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://googleappengine.blogspot.com | http://twitter.com/app_engine

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



[google-appengine] Re: The import com.google.apphosting.api.ApiProxy cannot be resolved

2010-02-09 Thread Guser
This error started on my in Eclipse for me, as well, after I
downloaded and installed the latest GWT 2.0.1

No resolution yet, and it didn't happen after updating on another
workstation, so not sure what the issue is.

Here's the error,

The type com.google.apphosting.api.ApiProxy$Delegate cannot be
resolved. It is indirectly referenced from required .class files

and

The project was not built since its build path is incomplete. Cannot
find the class file for com.google.apphosting.api.ApiProxy$Delegate.
Fix the build path then try building this project





On Feb 3, 1:13 am, ivanceras ivance...@gmail.com wrote:
 I also have the same issue,
 import com.google.appengine.tools.development.ApiProxyLocalImpl;
 is an error in my eclipse IDE.

 On Dec 30 2009, 3:32 am, Ikai L (Google) ika...@google.com wrote:



  ApiProxy should just be part of the standard SDK JAR. Is this being included
  correctly?

  On Sun, Dec 27, 2009 at 7:01 PM, bill b...@alerts.com wrote:
   I followed the instructions here:

  http://code.google.com/appengine/docs/java/howto/unittesting.html

   and added appengine-api-stubs.jar and appengine-local-runtime.jar to
   my classpath.  Eclipse was able to resolve these imports fine:

   import com.google.appengine.api.datastore.dev.LocalDatastoreService;
   import com.google.appengine.tools.development.ApiProxyLocalImpl;

   It is not able to resolve this import:

   import com.google.apphosting.api.ApiProxy;

   Is there another JAR file I need to add to my classpath?

   - Bill

   --

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

  --
  Ikai Lan
  Developer Programs Engineer, Google App Engine

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



[google-appengine] Uncatchable severe error Operation commit failed on resource logged

2010-02-09 Thread Marc Provost
Hi everybody!

I am using the java implementation and seeing the following error
logged sporadically, both in the development server and live. Note
that it does not seem to be a real error, as the commit always goes
through and my data looks perfectly fine. Could it be a low-level
exception that is not converted back to a JDOException? Is it a real
error?

org.datanucleus.transaction.Transaction commit: Operation commit
failed on resource:
org.datanucleus.store.appengine.datastorexaresou...@608d41, error code
UNKNOWN and transaction: [DataNucleus Transaction, ID=Xid=

I think the root cause of this problem is that I'm reading entities
from one entity group, cache them and then I open a transaction on
another entity group. In short, I spawn tasks that first read 30 or so
entities and copy a subset of their content into memory. Then, I open
a transaction and cache this content to a global entity (just a
wrapper around a Blob) for later use.  My goal is to go over all the
entities of a kind (1000s) and cache a subset of their data that I
often need. The cache and the other entities are not in the same
entity group. If I only perform the transaction, without reading the
other entities first the error does not occur.

Note that I'm doing this very carefully -- I perform all my data store
operations inside of a try/catch  for loop to retry if necessary.

Thanks for any help!
Marc

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



[google-appengine] Re: Audio

2010-02-09 Thread Hazzadous
It would be great to have an audio API like you say, for transcoding,
voice recognition, general manip.  Currently having to upload 4
formats for the same file.  There is this in issues:

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

On Feb 8, 6:40 pm, sampablokuper sampabloku...@googlemail.com wrote:
 On Feb 6, 8:43 pm, ProfessorMD rkc...@gmail.com wrote:

  Does Google App Engine have support for the Java Sound API?

 Come to think of it, does Google App Engine support any audio
 processing libraries? Can an App Engine app, for instance, transcode
 an uploaded WAV file to a FLAC or MP3 file?

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



[google-appengine] Re: Android app to monitor appengine quotas

2010-02-09 Thread Hugo Visser
Hi,

I've updated Engine Watch for Android. New:
- Now uses the build-in system Google Accounts on Android 2.0 and up
(no more entering passwords)
- Add shortcuts to a specific app on the home screen
- Display of billing stats

Full details on my blog at http://code.neenbedankt.com

Hugo

On Feb 1, 5:05 pm, Hugo Visser botte...@gmail.com wrote:
 Hi,

 I've released a little android app to monitor your app engine quotas.
 It's called Engine Watch and is available from the android market. See
 my blog athttp://code.neenbedankt.comfor more details. I hope it's
 useful to some of you too :)

 Hugo

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



[google-appengine] Re: app engine, shared IP and twitter api

2010-02-09 Thread Ryan

Make sure you set your User Agent string to something unique as well.
You'll still get Rate Limited, but it should be a slightly higher
limit.

To answer your question, yes, you are being rate limited because of
other App Engine Twitter search API users.  I wouldn't suggest using
App Engine and Twitter Search for a production project because of
this.  Twitter does not have authenticated search API, and only
whitelists search users by IP address, and explicitly says in their
docs that they can't/won't whitelist App Engine apps:

http://apiwiki.twitter.com/Rate-limiting

The Search API is only able to whitelist IP addresses, not user
accounts. This works in most situations but for cloud platforms like
Google App Engine, applications without a static IP addresses cannot
receive Search whitelisting.

Ryan

On Feb 9, 8:05 am, enes akar enesa...@gmail.com wrote:
 Thanks Nick I will try to find authenticated version of search api.

 By the way I am really thankful about the immediate responses of this group.

 On Tue, Feb 9, 2010 at 4:50 PM, Nick Johnson (Google) 





 nick.john...@google.com wrote:
  Hi,

  App Engine uses a shared pool of IPs for outgoing urlfetch requests.
  Unfortunately, as you observe, some services such as Twitter enforce per-ip
  ratelimiting.

  In the case of Twitter, most of their APIs that support anonymous access
  also support authenticated access. You can submit authenticated requests
  instead, which are limited by your account, rather than by your IP.

  -Nick Johnson

  On Tue, Feb 9, 2010 at 2:33 PM, enes akar enesa...@gmail.com wrote:

  Hi;

  I have just deployed an application to app engine which use twitter search
  api.

  But there is a problem. Twitter blocks some of  my requests saying You
  have been rate limited. Enhance your calm.

  Of course I have asked about this to twitter men, waiting for their reply.

  But I want to ask you, whether following scenerio is possible:
  May app engine give the same IP to different applications?
  If so another application which we share the same IP, may be spamming
  twitter api; and because of this spammer application I am blocked too.

  Is this possible?
  Have you seen similar problem, and is there a solution?

  Note: It is not possible to exceed the rate limits of twitter, because
  there is no traffic in my site.

  Thanks in advance.

  --
  Enes Akar
 http://www.linkedin.com/pub/enes-akar/7/835/3aa

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

  --
  Nick Johnson, Developer Programs Engineer, App Engine
  Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
  368047

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

 --
 Enes Akarhttp://www.linkedin.com/pub/enes-akar/7/835/3aa

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



[google-appengine] DeadlineExceededError / 500 Server Error Occurring everywhere

2010-02-09 Thread Leon
My site is suddenly acting up today. Every page is throwing a 500
Server Error (The server encountered an error and could not complete
your request.) and the logs all cite the DeadlineExceededError. I
haven't made any code changes in a month. I noticed it happens
immediately after I try to edit content on my site (a couple of writes
to the datastore and memcache), but any further activity yields the
500 / deadline exceed error on every page on the site and this problem
lasts for around 5 minutes, then suddenly the site works again, then
more 500's will occur. The content isn't any different from what I've
worked on in the past, and in the past I was able to do what I'm doing
now without these problems.

Can someone at google see what's up? My app name is
newfangledfunnies

Thanks,
Leon

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



Re: [google-appengine] Re: app engine, shared IP and twitter api

2010-02-09 Thread enes akar
Thanks Ryan, yes I have an unique User Agent.
Also people from twitter answered my question. As I guessed, all app engine
applications have the same IP, we are blocked easily.

They are offering to migrate my app to another platform. I wanted them to
propose app engine's users a special solution. It is very depressing after
all app engine specific work.

On Tue, Feb 9, 2010 at 10:35 PM, Ryan ryanleeschnei...@gmail.com wrote:


 Make sure you set your User Agent string to something unique as well.
 You'll still get Rate Limited, but it should be a slightly higher
 limit.

 To answer your question, yes, you are being rate limited because of
 other App Engine Twitter search API users.  I wouldn't suggest using
 App Engine and Twitter Search for a production project because of
 this.  Twitter does not have authenticated search API, and only
 whitelists search users by IP address, and explicitly says in their
 docs that they can't/won't whitelist App Engine apps:

 http://apiwiki.twitter.com/Rate-limiting

 The Search API is only able to whitelist IP addresses, not user
 accounts. This works in most situations but for cloud platforms like
 Google App Engine, applications without a static IP addresses cannot
 receive Search whitelisting.

 Ryan

 On Feb 9, 8:05 am, enes akar enesa...@gmail.com wrote:
  Thanks Nick I will try to find authenticated version of search api.
 
  By the way I am really thankful about the immediate responses of this
 group.
 
  On Tue, Feb 9, 2010 at 4:50 PM, Nick Johnson (Google) 
 
 
 
 
 
  nick.john...@google.com wrote:
   Hi,
 
   App Engine uses a shared pool of IPs for outgoing urlfetch requests.
   Unfortunately, as you observe, some services such as Twitter enforce
 per-ip
   ratelimiting.
 
   In the case of Twitter, most of their APIs that support anonymous
 access
   also support authenticated access. You can submit authenticated
 requests
   instead, which are limited by your account, rather than by your IP.
 
   -Nick Johnson
 
   On Tue, Feb 9, 2010 at 2:33 PM, enes akar enesa...@gmail.com wrote:
 
   Hi;
 
   I have just deployed an application to app engine which use twitter
 search
   api.
 
   But there is a problem. Twitter blocks some of  my requests saying
 You
   have been rate limited. Enhance your calm.
 
   Of course I have asked about this to twitter men, waiting for their
 reply.
 
   But I want to ask you, whether following scenerio is possible:
   May app engine give the same IP to different applications?
   If so another application which we share the same IP, may be spamming
   twitter api; and because of this spammer application I am blocked too.
 
   Is this possible?
   Have you seen similar problem, and is there a solution?
 
   Note: It is not possible to exceed the rate limits of twitter, because
   there is no traffic in my site.
 
   Thanks in advance.
 
   --
   Enes Akar
  http://www.linkedin.com/pub/enes-akar/7/835/3aa
 
   --
   You received this message because you are subscribed to the Google
 Groups
   Google App Engine group.
   To post to this group, send email to
 google-appeng...@googlegroups.com.
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.
 
   --
   Nick Johnson, Developer Programs Engineer, App Engine
   Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
 Number:
   368047
 
   --
   You received this message because you are subscribed to the Google
 Groups
   Google App Engine group.
   To post to this group, send email to google-appengine@googlegroups.com
 .
   To unsubscribe from this group, send email to
   google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.comgoogle-appengine%2Bunsubscrib
 e...@googlegroups.com
   .
   For more options, visit this group at
  http://groups.google.com/group/google-appengine?hl=en.
 
  --
  Enes Akarhttp://www.linkedin.com/pub/enes-akar/7/835/3aa

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




-- 
Enes Akar
http://www.linkedin.com/pub/enes-akar/7/835/3aa

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



Re: [google-appengine] Creating Index programatically

2010-02-09 Thread Sandeep Sathaye
We have built a relational database on top of Google Bigtable which supports
ANSI SQL-92/ANSI SQL-99  JDBC 3.0. Please check www.cloud2db.com. We want
to build indexes using SQL DDL commands. Also we support creating multiple
servers and databases within Cloud2db instance that's why we can't
effectively use approach of using one index definition file per appspot.
Also we want to avoid re-deploying complete application for adding new
indexes.
On Tue, Feb 9, 2010 at 1:40 PM, Robert Kluin robert.kl...@gmail.com wrote:

 No.

 But if you explain the problem you are trying to solve someone might
 be able to suggest an alternative solution.

 Robert




 On Tue, Feb 9, 2010 at 1:34 PM, Sandeep sandeep.sath...@gmail.com wrote:
  Is there any way to create/build an Index programatically in GAE?
 
  --
  You received this message because you are subscribed to the Google Groups
 Google App Engine group.
  To post to this group, send email to google-appeng...@googlegroups.com.
  To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@googlegroups.com
 .
  For more options, visit this group at
 http://groups.google.com/group/google-appengine?hl=en.
 
 

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



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



Re: [google-appengine] Data design choice: which works better?

2010-02-09 Thread Ikai L (Google)
Hi,

I know this might just me being being crazy, but I'm having a lot of
problems following your description. It's, unfortunately, the limitations of
my human mind at work. Do you mind describing your question in terms of your
problem domain? It'd be easier to wrap my brain around more concrete terms
(Person, Group, Order, etc) rather than abstract letters (I suspect that's
the reason no one has answered your question, because it's too hard to
read).

On Thu, Feb 4, 2010 at 3:35 AM, markvgti hsjawa...@gmail.com wrote:

 Each user U, has 0 or more children data entities corresponding to
 days D.

 Each day D has 0 or more children data entities of types X, Y and Z.

 Is it better to associate items X, Y and Z with an entity of type D
 by:

 1. creating a collection each of X, Y and Z data entities inside
 entity D (e.g., private ListY childrenOfTypeY;), or by

 2. storing X, Y and Z by generating their Key values such that it
 contains the parent entity D's key (e.g., Key k = new
 KeyFactory.Builder(D.class.getSimpleName(),
 BlahBlahBlah).addChild(X.class.getSimpleName(),
 YadaYadaYada).getKey();).

 My primary concern is which type of data design will be better
 resource/time consumption-wise (i.e., which way is lighter). AFAIK,
 method 1 gives me automatic consistency, method 2 gives me
 flexibility.

 In method 1, when I fetch an entity of type D, are all children
 entities of types X, Y  Z fetched in one go, or lazily (w/o
 programmatic intervention) on an as-required basis? In method 2
 fetching the children is of course up to me.

 Other characteristics of my application:

 * As far as writing is concerned, it is more likely that individual
 children of an entity of type D will be written to.

 * As far as reading from the datastore is concerned, it is more likely
 that all children of 1 or more entities of type D will need to be
 fetched to satisfy a single request.

 * Once an entity of type D is created, it and its children are
 unlikely to be deleted, though entities of type X, Y and Z (for a
 given entity D) may be individually modified.

 * Data consistency is obviously of concern, but since data deletion is
 infrequent, app-managed consistency shouldn't be too hard. Plus, a
 cleanup Task can delete orphan X, Y, Z objects (should that happen).

 If it matters, I am using Java.

 If the above explanation is too opaque :-) or I have posted to the
 wrong group, please let me know.

 Thanks!

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




-- 
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 group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Pervasive datastore timeouts

2010-02-09 Thread Ikai L (Google)
Adding an index shouldn't cause reads to take longer, though it will add
time to the writes. It's more likely that your adding of an index was simply
a coincidence. Are you still seeing these datastore issues?

On Sat, Feb 6, 2010 at 5:11 AM, Jason Smith j...@proven-corporation.comwrote:

 We have a cron job which fetches up to 1,000 entities based on a
 timestamp--no transactions, no writes. It has been working for several
 weeks.

 I recently added an index (the timestamp, plus a boolean).
 Subsequently, the datastore is almost completely unresponsive with
 these entities. The vast majority of the queries raise a Timeout
 exception, always after exactly 4 seconds. It seems that I can hardly
 query these entities at all, using any filter.

 I was under the impression that off-and-on timeouts are transient. But
 this has been happening for nearly a day. Also I expected that once an
 index is serving, no legal query could possibly time out always.

 I am concerned that I have an index or datastore issue. Does anybody
 have any insights about this?

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




-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://googleappengine.blogspot.com | http://twitter.com/app_engine

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



[google-appengine] Re: When is the Timeout bug going to get fixed?

2010-02-09 Thread phtq
The recipe does cut down the Timeouts dramatically, but there are
still a large number which seem to bypass the this fix completely. A
sample error log entry is attached:

Exception in request:
Traceback (most recent call last):
  File /base/python_lib/versions/third_party/django-0.96/django/core/
handlers/base.py, line 77, in get_response
response = callback(request, *callback_args, **callback_kwargs)
  File /base/data/home/apps/kbdlessons/1-01.339729324125102596/
views.py, line 725, in newlesson
productentity = Products.gql(where Name = :1, ProductID).get()
  File /base/python_lib/versions/1/google/appengine/ext/db/
__init__.py, line 1564, in get
results = self.fetch(1, rpc=rpc)
  File /base/python_lib/versions/1/google/appengine/ext/db/
__init__.py, line 1616, in fetch
raw = raw_query.Get(limit, offset, rpc=rpc)
  File /base/python_lib/versions/1/google/appengine/api/
datastore.py, line 1183, in Get
limit=limit, offset=offset, prefetch_count=limit,
**kwargs)._Get(limit)
  File /base/python_lib/versions/1/google/appengine/api/
datastore.py, line 1113, in _Run
raise _ToDatastoreError(err)
Timeout

Any ideas on how to deal with is class of Timeouts?



On Jan 28, 9:48 am, phtq pher...@typequick.com.au wrote:
 Thanks for mentioning this recipe, it worked well in testing and we
 will try it on the user population tomorrow.

 On Jan 27, 9:48 am, djidjadji djidja...@gmail.com wrote:



  There is an article series about the datastore. It explains that the
  Timeouts are inevitable. It gives the reason for the timeouts. They
  will always be part of Bigtable and the Datastore of GAE.

  The only solution is a retry on EVERY read. The get by id/key and the 
  queries.
  If you do that then very few reads will result in aTimeout.
  I wait first 3 and then 6 secs between each request. I log eachTimeout.
  If stillTimeoutafter 3 read tries I raise the exception.

  The result is very few final read Timeouts. The log shows frequent
  requests that need a retry, but most of them will succeed with the
  first.

  For speed, fetch the Static content object by key_name, and key_name
  is the file path.

  2010/1/26 phtq pher...@typequick.com.au:

   Our application error log for the 26th showed around 160 failed http
   requests due to timeouts. That's 160 users being forced to hit the
   refresh button on their browser to get a normal response. A more
   typical day has 20 to 60 timeouts. We have been waiting over a year
   for this bug to get fixed with no progress at all. Its beginning to
   look like it's unfixable so perhaps Google could provide some
   workaround. In our case, the issue arises because of the 1,000 file
   limit. We are forced to hold all our .js, .css, .png. mp3, etc. files
   in the database and serve them from there. The application is quite
   large and there are well over 10,000 files. The Python code serving up
   the files does just one DB fetch and has about 9 lines of code so
   there is no way it can be magically restructured to make theTimeout
   go away. However, putting all the files on the app engine as real
   files would avoid the DB access and make the problem go away. Could
   Google work towards removing that file limit?

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

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



[google-appengine] Keeping original datastore after re-deploying

2010-02-09 Thread jsnschneck
Hey Guys,

I am working on an app that has just had a major overhaul. I want to
re-deploy this app but the datastore backend contains information that
very important. Is there a way that I can re-deploy the app and hook
it up to the original datastore. Also is it possible to extend one of
the tables with an extra field without changing the data already
contained.

Cheers,
Jason

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



Re: [google-appengine] Keeping original datastore after re-deploying

2010-02-09 Thread 风笑雪
Deploying won't affect your datastore except index.

2010/2/10 jsnschneck jsnschn...@gmail.com:
 Hey Guys,

 I am working on an app that has just had a major overhaul. I want to
 re-deploy this app but the datastore backend contains information that
 very important. Is there a way that I can re-deploy the app and hook
 it up to the original datastore. Also is it possible to extend one of
 the tables with an extra field without changing the data already
 contained.

 Cheers,
 Jason

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



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



[google-appengine] Re: memcache set succeeds but immediate get fails. Pls help

2010-02-09 Thread Andy Freeman
  memcache.set() does not set if id already present.

Huh?  I don't see that in the documentation.  Why do you think that it
is true?

memcache.set is described as Sets a key's value, regardless of
previous contents in cache.
memcache.add is described as Sets a key's value, if and only if the
item is not already in memcache.

http://code.google.com/appengine/docs/python/memcache/functions.html

On Feb 7, 1:32 pm, observer247 prem...@gmail.com wrote:
 Thanks Eli ! The cache time was the issue.

 memcache.set() does not set if id already present. So I am using
 delete and add.
 I cannot be sure id is present, memcache could be deleted because of
 memory pressure from app engine, right ?

 On Feb 7, 10:18 am, Eli Jones eli.jo...@gmail.com wrote:



  One minor thing I noticed.. why not use memcache.set() instead of
  memcache.delete(), memcache.add()?

  On Sun, Feb 7, 2010 at 6:22 AM, observer247 prem...@gmail.com wrote:
   This is my code:

                  ret = memcache.add(key=mykey, value=qList, time=
   60*60*24*30)
                  logging.critical(Created cache batch %s Passed %s %
   (mykey, str(ret)))

                  qList = memcache.get(mykey)

   For some reason, qList is None ! I have logged all values and qList is
   a non empty list. Check code below where I print a lot of info in the
   logs.

   Detailed code here:

   def MY_QC_MAX(): return 3
   def MY_QC_SIZE(): return 200

   def createBatchMyModels():
          import random
          for n in range(MY_QC_MAX()):
                  bnum = n + 1
                  mykey = qkey_batch_+str(bnum)
                  qQ = MyModel.all(keys_only=True).filter('approved',
   True)
                  if bnum  1:
                          qQ = qQ.filter('__key__ ', last_key)
                  rows = qQ.fetch(MY_QC_SIZE())
                  tot = len(rows)
                  if tot  MY_QC_SIZE():
                          logging.critical(Not enough MyModels for
   batch %u, got %u % (bnum, tot))
                          if tot == 0:
                                  return
                  last_key = rows[tot - 1]
                  # create the qList
                  qList = list()
                  logging.critical(Added %u rows into key %s % (tot,
   mykey))
                  tmpc = 0
                  for r in rows:
                          if tmpc == 0:
                                  logging.critical(elem %u into key %s
   % (r.id(), mykey))
                                  tmpc = tmpc + 1
                          qList.append(r.id())

                  for elem in qList:
                          logging.info(key %s elem is %u % (mykey,
   elem))
                  memcache.delete(mykey)
                  ret = memcache.add(key=mykey, value=qList, time=
   60*60*24*30)
                  logging.critical(Created cache batch %s Passed %s %
   (mykey, str(ret)))

                  qList = memcache.get(mykey)
                  if qList is None:
                          logging.critical(.. getNextMyModel: Did not
   find key %s % mykey)
                  else:
                          logging.critical(.. LEN : %u % len(qList))

   Sample log:
   .
   02-07 03:15AM 05.240 key qkey_batch_1 elem is 13108
   C 02-07 03:15AM 05.250 Created cache batch qkey_batch_1 Passed True
   C 02-07 03:15AM 05.253 .. getNextQuestion: Did not find key
   qkey_batch_1
   C 02-07 03:15AM 05.339 Added 200 rows into key qkey_batch_2
   ...

   Can anyone pls help !

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

 - Show quoted text -

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



Re: [google-appengine] GAE/J recommended best practices.

2010-02-09 Thread Patrick Twohig
Thanks Ikai, I found out I had forgot to turn on memory caching for some
thigns in my app and the sluggishness went away. I still get the loading
request every once in a while, but once it goes fully live (out of beta)
that probably wont' be an issue as we're expecting fairly regular traffic.

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



Re: [google-appengine] 1.3.1 SDK Prerelease - help us verify

2010-02-09 Thread Piotr Jaroszyński
Hello,

Not sure whether it was present in 1.3.0 but there is an unpleasant
bug in 1.3.1 where blobstore request mangling breaks data encoding
[1].

[1] - http://code.google.com/p/googleappengine/issues/detail?id=2749

-- 
Best Regards
Piotr Jaroszyński

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



  1   2   >