Request for better exception message

297 views
Skip to first unread message

Sono G. De M

unread,
Nov 17, 2012, 8:10:40 AM11/17/12
to google-a...@googlegroups.com
Would it be possible to improve the content of the execption message:

java.lang.IllegalArgumentException: cross-group transaction need to be explicitly specified, see TransactionOptions.Builder.withXGfound both Element Element {
  type: "EntntiA"
  id: 1
}
 and Element {
  type: "EntityB"
  id: 3
}



at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:33)
at com.google.appengine.api.datastore.DatastoreApiHelper$1.convertException(DatastoreApiHelper.java:70)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:94)
at com.google.appengine.api.datastore.FutureHelper$CumulativeAggregateFuture.get(FutureHelper.java:142)
at com.google.appengine.api.datastore.FutureHelper$TxnAwareFuture.get(FutureHelper.java:218)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:86)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:86)
at com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:71)
at com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:58)
at com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:50)
at com.google.appengine.datanucleus.WrappedDatastoreService.get(WrappedDatastoreService.java:70)
at com.google.appengine.datanucleus.EntityUtils.getEntityFromDatastore(EntityUtils.java:665)




It would be convenient if, 
(A) more than just the ROOT parent persist groups involved in the execption the underlying child entities belonging to each of these persistent groups that were dirty were listed
(B) the respective user defined fields on these entities that were updated that brough along the need to update the two distinct persistence groups

Addionally, It would be pretty useful if you reased the SOURCE code for the API into maven, because it is otherwise pretty hard to debug this type of errors.


I am presently having some difficulties figuring out why GAE would imagine that it needs to update two persistence groups at the same time when the entity being saved is only UNIDIRECTONALLY and UNONWED linked to the other persistnce group, that according to JDO State manager is NOT DIRTY.



New EntntityAChild.unownedUnidictorionalField-> Element_EntityB.stateManagerSaysIsNotDirty

and GAE wants to update EntntityA and EntityB persistence groups in a single transaction?

- makes no sense to me and there is no way I can debug this any further.
It is 100% clear to me that JDO is only trying to fetch from the google datastroe, in the follwing call, the EntityA that is a parent of the new EntntityAChild:
at com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:50)


I will most liekly have to drop the Unowned relationship and JUST dump a KEY property in EntityA child to dodge this bullet.


Reply all
Reply to author
Forward
0 new messages