Max, have you had a chance to try this out?  I'm not trying to push or
anything, just wanted to make sure my last message didn't get
overlooked.  I've noticed this error sort of... randomly popping up in
places where it preivously hasn't as of late.  If i'm missing
something in my configuration, I'll be happy to change it, I'm just
not sure what I'm missing.

again, I really appreciate your taking the time to help me debug this
issue.

thanks,
-bryce

On Dec 3, 4:46 pm, bryce cottam <bcot...@gmail.com> wrote:
> Okay, sorry for the delay, I haven't been able to focus on this for a few 
> days.
>
> here is the full (including the jar libararies in
> case there is an issue with them).
>
> http://www.resmarksystems.com/code/JdoTest.zip
>
> It's a very simple Servlet, by hitting the url hostname/jdotest you
> should execute the test case that is failing for me.
>
> I really appreciate your taking  a look at this.  I'm looking forward
> to getting it working.
>
> -bryce
>
> On Tue, Dec 1, 2009 at 10:15 PM, Max Ross (Google)
>
> <maxr+appeng...@google.com> wrote:
> > Just give me the smallest amount of compilable, runnable code that
> > demonstrates the incorrect behavior.  A unit test is preferable because I
> > can just drop it into my own test framework and run it, but I'll take
> > whatever format you can manage.
>
> > Thanks,
> > Max
>
> > On Tue, Dec 1, 2009 at 1:18 PM, bryce cottam <bcot...@gmail.com> wrote:
>
> >> yeah, I didn't see a TransactionNotActiveException.
> >> here is my jdoconfig.xml:
> >>   <persistence-manager-factory name="transactions-optional">
> >>       <property name="javax.jdo.PersistenceManagerFactoryClass"
>
> >> value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
> >>       <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
> >>       <property name="javax.jdo.option.NontransactionalRead"
> >> value="true"/>
> >>       <property name="javax.jdo.option.NontransactionalWrite"
> >> value="true"/>
> >>       <property name="javax.jdo.option.RetainValues" value="true"/>
> >>       <property name="datanucleus.appengine.autoCreateDatastoreTxns"
> >> value="true"/>
> >>   </persistence-manager-factory>
>
> >> I think the only thing I changed was putting in this line:
> >>       <property name="datanucleus.appengine.autoCreateDatastoreTxns"
> >> value="true"/>
>
> >> which may explain why I don't get the TransactionNotActiveException.
> >> So, for this unit test/servlet, you want me to just post the class
> >> file here, or strip down all my code and put up all my model classes
> >> and the test case/servlet code somewhere in a war or something?
>
> >> .... hmmmm I just commented out that line, and I still get the same
> >> behavior (i.e. I don't get the TransactionNotActiveException).  Not
> >> sure what's going on.
>
> >> thanks,
> >> -bryce
>
> >> On Tue, Dec 1, 2009 at 2:04 PM, Max Ross (Google)
> >> <maxr+appeng...@google.com> wrote:
> >> > Now I'm starting to suspect something funny going on with your config.
> >> > I
> >> > received a TransactionNotActiveException when I tried to run your code
> >> > without starting the txn, and the fact that you didn't receive that
> >> > exception doesn't make any sense to me.  I can't explain why you see the
> >> > exception and I don't.  The best thing would be for you to put together
> >> > a
> >> > stripped down test case that demonstrates the problem.  An actual unit
> >> > test
> >> > would be ideal, but if you're not a position to write one then just a
> >> > simple
> >> > standalone servlet should suffice.
>
> >> > Thanks,
> >> > Max
>
> >> > On Tue, Dec 1, 2009 at 1:00 PM, bryce cottam <bcot...@gmail.com> wrote:
>
> >> >> that is both a type-o and it was missing  :)  It was missing from my
> >> >> test code, but it was present in my "real" code.  So, after putting
> >> >> the tx.begin() in the test code, I get the exact same behavior as the
> >> >> "real" code (i.e. nothing gets written to the datastore and I get the
> >> >> exception.  Sorry about missing that in the code I posted.
>
> >> >> I'm kinda lost on where to go with this and where to look.  I did
> >> >> notice that the code actually prompts the exception is in the
> >> >> datanucleus core and there is a comment above it that says:
> >> >> / TODO Factor out this PersistenceCapable reference
> >> >> ((PersistenceCapable)value).jdoCopyKeyFieldsFromObjectId(new
> >> >> AppIDObjectIdFieldConsumer(param, om, ps,
> >> >>      javaTypeMappings), id);
>
> >> >> so, I'm not sure if this has soemthing to do with code style
> >> >> datanucleus is trying to phase out or what?  Again, I'm not gonna be
> >> >> shocked if I'm missing something though.
> >> >> thanks!
> >> >> -bryce
>
> >> >> On Tue, Dec 1, 2009 at 1:53 PM, Max Ross (Google)
> >> >> <maxr+appeng...@google.com> wrote:
> >> >> > I don't see a call to tx.begin() in the code below.  Is that a typo
> >> >> > or
> >> >> > is it
> >> >> > actually missing?
>
> >> >> > On Tue, Dec 1, 2009 at 12:29 PM, bryce cottam <bcot...@gmail.com>
> >> >> > wrote:
>
> >> >> >> thanks so much for checking into this Max.
>
> >> >> >> The data that I'm saving is user generated, so there's not a set
> >> >> >> script for it.  Conceptually what I'm doing is this:
>
> >> >> >>                Bundle bundle = new Bundle();
>
> >> >> >>                bundle.setName("My Bundle");
> >> >> >>                bundle.setDescription(new
> >> >> >> com.google.appengine.api.datastore.Text("My Description"));
> >> >> >>                bundle.setPricingModel(PricingModel.PER_GUEST);
>
> >> >> >>                RatePlanratePlan= newRatePlan();
> >> >> >>                ratePlan.setPricingModel(PricingModel.PER_GUEST);
> >> >> >>                ratePlan.setAdultPrice(new
> >> >> >> java.math.BigDecimal("300.00"));
> >> >> >>                ratePlan.setYouthPrice(new
> >> >> >> java.math.BigDecimal("275.00"));
>
> >> >> >>                bundle.setRatePlan(ratePlan);
>
> >> >> >>                List<Key> activityIds = getActivityIds();
> >> >> >>                int i = 0;
> >> >> >>                for (Key id : activityIds) {
> >> >> >>                        BundledActivity bundledActivity = new
> >> >> >> BundledActivity();
> >> >> >>                        bundledActivity.setDay(++i);
>
> >> >> >>                        ActivityFK activityFk = new ActivityFK();
> >> >> >>                        activityFk.setKey(id);
> >> >> >>                        activityFk.setName("activity " + i);
>
> >> >> >>  activityFk.setPricingModel(PricingModel.PER_GUEST);
>
> >> >> >>                        bundledActivity.setActivity(activityFk);
>
> >> >> >>                        RatePlanactivityRate = newRatePlan();
>
> >> >> >>  activityRate.setPricingModel(PricingModel.PER_GUEST);
> >> >> >>                        activityRate.setAdultPrice(new
> >> >> >> java.math.BigDecimal("150.00"));
> >> >> >>                        activityRate.setYouthPrice(new
> >> >> >> java.math.BigDecimal("120.00"));
>
> >> >> >>                        bundledActivity.setRatePlan(activityRate);
> >> >> >>                        bundle.getActivities().add(bundledActivity);
> >> >> >>                }
>
> >> >> >>                PersistenceManager pm = PMF.createManager();
> >> >> >>                Transaction tx = pm.currentTransaction();
>
> >> >> >>                try {
> >> >> >>                        bundle = pm.makePersistent(bundle);
> >> >> >>                        tx.commit();
> >> >> >>                }
> >> >> >>                finally {
> >> >> >>                        if (tx.isActive()) {
> >> >> >>                                tx.rollback();
> >> >> >>                        }
>
> >> >> >>                        pm.close();
> >> >> >>                }
>
> >> >> >> I get the Bundle saved just fine, but when it tries to save it's
> >> >> >> child
> >> >> >> BundledActivity instances, it breaks.  However, when I do the same
> >> >> >> thing through the UI of my app, I get the error when attempting to
> >> >> >> save the Bundle (i.e. nothing gets written to the datastore, where
> >> >> >> as
> >> >> >> in this test code above, the parent Bundle is getting written, but
> >> >> >> none of it's children are getting written).
>
> >> >> >> Of course anytime I post my code, I kind of summarize, there are
> >> >> >> utilities that I use etc.  But I am able to reproduce the issue
> >> >> >> without using any of my "helper" apis. I am completely open to just
> >> >> >> sending you my code (it's all proof of concept right now, so no
> >> >> >> disclosure issues) and you can see how all the pieces I'm using are
> >> >> >> fitting together.
>
> >> >> >> I appreciate you taking a look at this, I'd love to know if I'm
> >> >> >> doing
> >> >> >> something wrong.
> >> >> >> thanks,
> >> >> >> -bryce
>
> >> >> >> On Tue, Dec 1, 2009 at 11:03 AM, Max Ross (Google)
> >> >> >> <maxr+appeng...@google.com> wrote:
> >> >> >> > Hi Bryce,
>
> >> >> >> > Thanks for posting your model objects.  I'm not able to reproduce
> >> >> >> > the
> >> >> >> > exception you're reporting, but then again I'm just guessing at
> >> >> >> > how
> >> >> >> > you're
> >> >> >> > populating your objects and persisting them.  Here's what I did:
>
> >> >> >> >     Bundle b = new Bundle();
> >> >> >> >    RatePlanrp = newRatePlan();
> >> >> >> >     rp.setPricingModel(PricingModel.BOTH);
> >> >> >> >     b.setRatePlan(rp);
> >> >> >> >     b.setPricingModel(PricingModel.PER_GUEST);
> >> >> >> >     BundledActivity ba = new BundledActivity();
> >> >> >> >     ba.setDay(3);
> >> >> >> >     ActivityFK activityFK = new ActivityFK();
> >> >> >> >     activityFK.setName("harold");
> >> >> >> >     activityFK.setPricingModel(PricingModel.PER_UNIT);
> >> >> >> >     ba.setActivity(activityFK);
> >> >> >> >    RatePlananotherRatePlan = newRatePlan();
> >> >> >> >     ba.setRatePlan(anotherRatePlan);
> >> >> >> >     b.getActivities().add(ba);
> >> >> >> >     beginTxn();
>
> ...
>
> read more »

--

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.


Reply via email to