Re: [appengine-java] Appstats make request to API call memcache.Set() was too large

2010-05-20 Thread takeru sasaki
I see same problem.
I cant use appstats with my app.
Can I configure to reduce appstats-data of each RPC call?

Uncaught exception from servlet
com/google/net/rpc/RpcStub.java:1025:in `runInContext':
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The
request to API call memcache.Set() was too large. (NativeException)
from com/google/tracing/TraceContext.java:444:in `run'
from com/google/tracing/TraceContext.java:684:in `runInContext'
from com/google/tracing/TraceContext.java:322:in 
`runInInheritedContextNoUnref'
from com/google/tracing/TraceContext.java:314:in `runInInheritedContext'
from com/google/tracing/TraceContext.java:442:in `run'
from com/google/net/rpc/RpcStub.java:1046:in `rpcFinished'
from com/google/net/rpc/RPC.java:2047:in `internalFinish'
from com/google/net/rpc/impl/RpcNetChannel.java:2338:in `finishRpc'
 ... 8 levels...
from com/google/net/async/LoopingEventDispatcher.java:378:in `run'

takeru



2010/4/9 Trung :
> I tried to use Appstats.
>
> However, Appstats uses and shows a lot of raw (low level) data.
> Sometime memcache API throws exception as below:
>
> com.google.appengine.api.memcache.LogAndContinueErrorHandler
> handleServiceError: Service error in memcache
> com.google.appengine.api.memcache.MemcacheServiceException: Memcache
> put: Unknown exception setting 2 keys
>        at
> com.google.appengine.api.memcache.MemcacheServiceImpl.makeSyncCall(MemcacheServiceImpl.java:
> 183)
>        at
> com.google.appengine.api.memcache.MemcacheServiceImpl.putAll(MemcacheServiceImpl.java:
> 420)
>        at
> com.google.appengine.api.memcache.MemcacheServiceImpl.putAll(MemcacheServiceImpl.java:
> 459)
>        at
> com.google.appengine.tools.appstats.MemcacheWriter.persist(MemcacheWriter.java:
> 264)
>        at
> com.google.appengine.tools.appstats.MemcacheWriter.commit(MemcacheWriter.java:
> 177)
>        at
> com.google.appengine.tools.appstats.AppstatsFilter.doFilter(AppstatsFilter.java:
> 94)
>        at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>        at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>        at
> com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
> 97)
>        at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>        at
> com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
> 35)
>        at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>        at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
> 43)
>        at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>        at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> 388)
>        at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> 216)
>        at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> 182)
>        at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> 765)
>        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> 418)
>        at
> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
> 238)
>        at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>        at org.mortbay.jetty.Server.handle(Server.java:326)
>        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> 542)
>        at org.mortbay.jetty.HttpConnection
> $RequestHandler.headerComplete(HttpConnection.java:923)
>        at
> com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
> 76)
>        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>        at
> com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
> 135)
>        at
> com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
> 243)
>        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:
> 398)
>        at com.google.net.rpc.impl.Server$2.run(Server.java:852)
>        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:807)
>        at c

[appengine-java] Query returns more than limit

2010-04-21 Thread takeru sasaki
Hello,

I have seen problem with Java, like this:
> - Fixed a datastore issue where an error was thrown when setting a query 
> offset
>   to more than the number of results throws an error.
> http://code.google.com/p/googleappengine/issues/detail?id=2875


I send this query:
  query.filter(:user_id=>user.id).sort(:created_at, :desc).each(:limit=>3)
This query uses composite-index. UserNews user_id ▲ , created_at ▼

I set limit=3, but many (all?) entities are return.
It is not always. very very rare case.
This code is ruby, but I trace code, I found JavaAPI's
PreparedQuery#asIterator(FetchOptions fetchOptions) is used.

>From application log. Maybe query is retried, by application code.
I am using deadline=3.0sec. First query is deadlined, and retryed.


Is this known problem?


takeru

-- 
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] ApiProxy$ApplicationException

2010-04-12 Thread takeru sasaki
Hello,

I see many strange errors.

(1) ApiProxy$ApplicationException: ApplicationError: 2: too much
contention on these datastore entities. please try again.
It should be converted to ConcurrentModificationException.

(2) ApiProxy$ApplicationException: ApplicationError: 5: Unknown
I set deadline(
http://code.google.com/intl/en/appengine/docs/java/javadoc/com/google/appengine/api/datastore/DatastoreServiceConfig.html#deadline%28double%29
).
This exception can see when timed out.
It should be converted to DatastoreTimeoutException or
ApiProxy$ApiDeadlineExceededException, I think.


Why I can see such internal errors?


traces:

NativeException
(com.google.apphosting.api.ApiProxy$ApplicationException:
ApplicationError: 2: too much contention on these datastore entities.
please try again.):
  com/google/net/rpc/RpcStub.java:1025:in `runInContext'
  com/google/tracing/TraceContext.java:440:in `run'
  com/google/tracing/TraceContext.java:639:in `runInContext'
  com/google/tracing/TraceContext.java:318:in `runInInheritedContextNoUnref'
  com/google/tracing/TraceContext.java:310:in `runInInheritedContext'
  com/google/tracing/TraceContext.java:438:in `run'
  com/google/net/rpc/RpcStub.java:1046:in `rpcFinished'
  com/google/net/rpc/RPC.java:2044:in `internalFinish'
  com/google/net/rpc/impl/RpcNetChannel.java:2298:in `finishRpc'
  com/google/net/rpc/impl/RpcNetChannel.java:1240:in `messageReceived'
  com/google/net/rpc/impl/RpcConnection.java:319:in `parseMessages'
  com/google/net/rpc/impl/RpcConnection.java:290:in `dataReceived'
  com/google/net/async/Connection.java:474:in `handleReadEvent'
  com/google/net/async/EventDispatcher.java:831:in `processNetworkEvents'
  com/google/net/async/EventDispatcher.java:207:in `internalLoop'
  com/google/net/async/EventDispatcher.java:103:in `loop'
  com/google/net/async/GlobalEventRegistry.java:95:in `runLoop'
  com/google/net/async/LoopingEventDispatcher.java:378:in `run'
  config/initializers/global.rb:274:in `makeSyncCall'
  
bundler_gems/jruby/1.8/gems/appengine-apis-0.0.13/lib/appengine-apis/datastore.rb:214:in
`transaction'
  
bundler_gems/jruby/1.8/gems/appengine-apis-0.0.13/lib/appengine-apis/datastore_types.rb:544:in
`convert_exceptions'
  
bundler_gems/jruby/1.8/gems/appengine-apis-0.0.13/lib/appengine-apis/datastore.rb:212:in
`transaction'
  lib/tiny_ds.rb:35:in `tx'



NativeException
(com.google.apphosting.api.ApiProxy$ApplicationException:
ApplicationError: 5: Unknown):
  com/google/net/rpc/RpcStub.java:1025:in `runInContext'
  com/google/tracing/TraceContext.java:440:in `run'
  com/google/tracing/TraceContext.java:639:in `runInContext'
  com/google/tracing/TraceContext.java:318:in `runInInheritedContextNoUnref'
  com/google/tracing/TraceContext.java:310:in `runInInheritedContext'
  com/google/tracing/TraceContext.java:438:in `run'
  com/google/net/rpc/RpcStub.java:1046:in `rpcFinished'
  com/google/net/rpc/RPC.java:2044:in `internalFinish'
  com/google/net/rpc/impl/RpcNetChannel.java:2298:in `finishRpc'
  com/google/net/rpc/impl/RpcNetChannel.java:1240:in `messageReceived'
  com/google/net/rpc/impl/RpcConnection.java:319:in `parseMessages'
  com/google/net/rpc/impl/RpcConnection.java:290:in `dataReceived'
  com/google/net/async/Connection.java:474:in `handleReadEvent'
  com/google/net/async/EventDispatcher.java:831:in `processNetworkEvents'
  com/google/net/async/EventDispatcher.java:207:in `internalLoop'
  com/google/net/async/EventDispatcher.java:103:in `loop'
  com/google/net/async/GlobalEventRegistry.java:95:in `runLoop'
  com/google/net/async/LoopingEventDispatcher.java:378:in `run'
  config/initializers/global.rb:274:in `makeSyncCall'
  
bundler_gems/jruby/1.8/gems/appengine-apis-0.0.13/lib/appengine-apis/datastore.rb:119:in
`put'
  
bundler_gems/jruby/1.8/gems/appengine-apis-0.0.13/lib/appengine-apis/datastore_types.rb:544:in
`convert_exceptions'
  
bundler_gems/jruby/1.8/gems/appengine-apis-0.0.13/lib/appengine-apis/datastore.rb:117:in
`put'
  lib/tiny_ds/low_ds.rb:74:in `save'
  lib/tiny_ds/base.rb:160:in `do_save'
  lib/tiny_ds/validations.rb:21:in `save!'



--
takeru

-- 
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] HardDeadlineExceededError with JRuby. Runtime changed??

2010-02-08 Thread takeru sasaki
Hi!

May be GAE Runtime is updated to 1.3.1.
In my JRuby app, spin up time was longer than before update.
I see many HardDeadlineExceededError.

Whats happen??

takeru

-- 
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] CPU Quota Service is working?

2010-01-26 Thread takeru sasaki
Hi,
I tried quota service.
http://code.google.com/intl/ja/appengine/docs/java/javadoc/com/google/appengine/api/quota/QuotaService.html

CODE(jruby):
def current_quotas
  qs = com.google.appengine.api.quota.QuotaServiceFactory.getQuotaService
  cpu_cycles   = qs.getCpuTimeInMegaCycles
  cpu_sec  = qs.convertMegacyclesToCpuSeconds(cpu_cycles)
  cpu_supports =
qs.supports(com.google.appengine.api.quota.QuotaService::DataType::CPU_TIME_IN_MEGACYCLES)
  api_cycles   = qs.getApiTimeInMegaCycles
  api_sec  = qs.convertMegacyclesToCpuSeconds(api_cycles)
  api_supports =
qs.supports(com.google.appengine.api.quota.QuotaService::DataType::API_TIME_IN_MEGACYCLES)
  return {:cpu=>{:cycles=>cpu_cycles, :sec=>cpu_sec, :supports=>cpu_supports},
  :api=>{:cycles=>api_cycles, :sec=>api_sec, :supports=>api_supports}}
end

RESULT:
{:cpu=>{:cycles=>0, :sec=>0.0, :supports=>true}, :api=>{:cycles=>930,
:sec=>0.775, :supports=>true}}

I got API quota values, but CPU is always 0.
Anyone know CPU-quota service is working?

takeru

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