CancelledException while querying the datastore for a geocell

25 views
Skip to first unread message

Fabio Oliveira

unread,
Jul 10, 2011, 9:57:48 AM7/10/11
to javageomodel-discuss
Hi List!

I'm trying to use the geocell library to develop a geospatial query,
but when I try to query I always receive a error in the user
interface, and the log shows the trace bellow.

I guess the problem is the limit of 30 subqueries to a query with a
contain() operator.... Did You have any similar problem while using
this library? I'm trying to play with the CostFunction, but without
success yet.

My code is equal the sample, or seem to me:

Query query = pm.newQuery(Bid.class);
query.declareImports(IMPORTS);

StringBuilder filter = new StringBuilder();
StringBuilder parameters = new StringBuilder();
List<Object> parameterList = new ArrayList<Object>();

GeoCoordinate nw = boundingBox.getUpperLeft();
GeoCoordinate se = boundingBox.getLowerRight();
List<String> cells = GeocellManager
.bestBboxSearchCells(
new com.beoui.geocell.model.BoundingBox(
nw.getLatitude(), se
.getLongitude(), se
.getLatitude(), nw
.getLongitude()), new CostFunction() {

@Override
public double defaultCostFunction(int numCells, int
resolution) {
if(numCells > 10) {
return Double.MAX_VALUE;
} else {
return 0;
}
}
});


filter.append("geocellsParameter.contains(this.estate.geoCells)");
parameters.append("Collection geocellsParameter");
parameterList.add(cells);

Any information will be helpful.

Thanks!

com.google.apphosting.api.ApiProxy$CancelledException: The API call
datastore_v3.RunQuery() was explicitly cancelled.
at com.google.apphosting.runtime.ApiProxyImpl$5.get(ApiProxyImpl.java:
298)
at com.google.apphosting.runtime.ApiProxyImpl$5.get(ApiProxyImpl.java:
296)
at
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
67)
at
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
67)
at
com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:
71)
at
com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:
32)
at
com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:
69)
at
com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:
56)
at
com.google.appengine.api.datastore.QueryResultIteratorImpl.ensureLoaded(QueryResultIteratorImpl.java:
156)
at
com.google.appengine.api.datastore.QueryResultIteratorImpl.hasNext(QueryResultIteratorImpl.java:
65)
at com.google.appengine.api.datastore.PreparedMultiQuery
$FilteredMultiQueryIterator.getNextIterator(PreparedMultiQuery.java:
172)
at com.google.appengine.api.datastore.PreparedMultiQuery
$FilteredMultiQueryIterator.computeNext(PreparedMultiQuery.java:184)
at com.google.appengine.api.datastore.PreparedMultiQuery
$FilteredMultiQueryIterator.computeNext(PreparedMultiQuery.java:98)
at
com.google.appengine.api.datastore.AbstractIterator.tryToComputeNext(AbstractIterator.java:
52)
at
com.google.appengine.api.datastore.AbstractIterator.hasNext(AbstractIterator.java:
47)
at
com.google.appengine.api.datastore.SlicingIterator.computeNext(SlicingIterator.java:
39)
at
com.google.appengine.api.datastore.AbstractIterator.tryToComputeNext(AbstractIterator.java:
52)
at
com.google.appengine.api.datastore.AbstractIterator.hasNext(AbstractIterator.java:
47)
at
com.google.appengine.api.datastore.PreparedMultiQuery.asList(PreparedMultiQuery.java:
423)
at com.google.appengine.api.datastore.BasePreparedQuery
$UncompilablePreparedQuery.asQueryResultList(BasePreparedQuery.java:
109)
at
org.datanucleus.store.appengine.query.DatastoreQuery.fulfillEntityQuery(DatastoreQuery.java:
381)
at
org.datanucleus.store.appengine.query.DatastoreQuery.executeQuery(DatastoreQuery.java:
291)
at
org.datanucleus.store.appengine.query.DatastoreQuery.performExecute(DatastoreQuery.java:
241)
at
org.datanucleus.store.appengine.query.JDOQLQuery.performExecute(JDOQLQuery.java:
89)
at org.datanucleus.store.query.Query.executeQuery(Query.java:1489)
at org.datanucleus.store.query.Query.executeWithArray(Query.java:
1371)
at org.datanucleus.jdo.JDOQuery.executeWithArray(JDOQuery.java:312)
at br.com.architecteam.imobee.model.BidRepository
$1.doInJdo(BidRepository.java:150)
at br.com.architecteam.imobee.model.BidRepository
$1.doInJdo(BidRepository.java:1)
at org.springframework.orm.jdo.JdoTemplate.execute(JdoTemplate.java:
205)
at org.springframework.orm.jdo.JdoTemplate.execute(JdoTemplate.java:
175)
at
br.com.architecteam.imobee.model.BidRepository.searchForBids(BidRepository.java:
57)
at
br.com.architecteam.imobee.model.BidRepository.searchForBids(BidRepository.java:
46)
at br.com.architecteam.imobee.web.WebWindow.fillMarks(WebWindow.java:
258)
at br.com.architecteam.imobee.web.WebWindow.access$1(WebWindow.java:
246)
at br.com.architecteam.imobee.web.WebWindow
$3.repaintRequested(WebWindow.java:239)
at
com.vaadin.ui.AbstractComponent.fireRequestRepaintEvent(AbstractComponent.java:
854)
at
com.vaadin.ui.AbstractComponent.childRequestedRepaint(AbstractComponent.java:
832)
at
com.vaadin.ui.AbstractComponent.requestRepaint(AbstractComponent.java:
820)
at
com.vaadin.ui.AbstractComponent.setComponentError(AbstractComponent.java:
609)
at com.vaadin.Application.terminalError(Application.java:1228)
at
com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleChangeVariablesError(AbstractCommunicationManager.java:
1448)
at
com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:
1310)
at
com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:
1217)
at
com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:
733)
at
com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:
296)
at
com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:
483)
at
com.vaadin.terminal.gwt.server.GAEApplicationServlet.service(GAEApplicationServlet.java:
241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(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:
249)
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:
260)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$2.handleRequest(RuntimePb.java:9673)
at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
422)
at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:
573)
at com.google.tracing.TraceContext$TraceContextRunnable
$1.run(TraceContext.java:448)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:
688)
at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:
326)
at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:
318)
at com.google.tracing.TraceContext
$TraceContextRunnable.run(TraceContext.java:446)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)

Alexandre Gellibert

unread,
Jul 15, 2011, 10:52:35 AM7/15/11
to javageomodel-discuss
Try with :
"parameters.append("String geocellsParameter");"
instead of
"parameters.append("Collection geocellsParameter");"

See http://code.google.com/p/javageomodel/source/browse/trunk/geocell/src/test/java/com/beoui/utils/HowToUseGeocell.java
for some detail about how using the result of bounding box search.
Reply all
Reply to author
Forward
0 new messages