[JIRA] Created: (CAY-551) Unregistering objects is not cleaning up the context correctly

From: Marcin Skladaniec (JIRA) ("Marcin)
Date: Sun May 21 2006 - 04:11:08 EDT

  • Next message: Øyvind Harboe: "Re: Bogus hollow object exception"

    Unregistering objects is not cleaning up the context correctly
    --------------------------------------------------------------

             Key: CAY-551
             URL: http://issues.apache.org/cayenne/browse/CAY-551
         Project: Cayenne
            Type: Bug

      Components: Cayenne Core Library
        Versions: 1.2 [BETA]
     Environment: All configurations.
        Reporter: Marcin Skladaniec

    This task is related a bit to already closed task CAY-547.

    to reproduce:

            Site site = getTheSiteFromDatabase();
            
            Room room = (Room) context.newObject(Room.class);
            room.setSite(site);

            context.getGraphManager().unregisterNode(room.getObjectId());

            context.commitChanges();

    commiting will fail, due to Exception: "Attempt to add null target DataObject." (Whole stack trace at the end)

    Looking into context will reveal that the site is in modified state waiting for commiting. But there was actually no change to the site, as the relationship is (one)site -< (many)rooms, and even if there was this diff should be reverted when unregistering the node.

    I have not yet tried what would happen with many to many relationships.

    Stack trace :

    [java] org.objectstyle.cayenne.CayenneRuntimeException: [v.1.2B3 May 17 2006] Remote error. URL - http://localhost:8080/test-server; CAUSE - Attempt to add null target DataObject.
         [java] at org.objectstyle.cayenne.remote.hessian.HessianConnection.doSendMessage(HessianConnection.java:181)
         [java] at org.objectstyle.cayenne.remote.BaseConnection.sendMessage(BaseConnection.java:109)
         [java] at org.objectstyle.cayenne.remote.ClientChannel.send(ClientChannel.java:279)
         [java] at org.objectstyle.cayenne.remote.ClientChannel.onSync(ClientChannel.java:188)
         [java] at org.objectstyle.cayenne.CayenneContext.doCommitChanges(CayenneContext.java:233)
         [java] at org.objectstyle.cayenne.CayenneContext.commitChanges(CayenneContext.java:220)
         [java] at cayenne3t.example.client.Main.execute(Unknown Source)
         [java] at cayenne3t.example.client.Main.main(Unknown Source)
         [java] Caused by: java.lang.NullPointerException: Attempt to add null target DataObject.
         [java] at org.objectstyle.cayenne.CayenneDataObject.addToManyTarget(CayenneDataObject.java:298)
         [java] at org.objectstyle.cayenne.access.ChildDiffLoader.arcCreated(ChildDiffLoader.java:146)
         [java] at org.objectstyle.cayenne.graph.ArcCreateOperation.apply(ArcCreateOperation.java:80)
         [java] at org.objectstyle.cayenne.graph.CompoundDiff.apply(CompoundDiff.java:133)
         [java] at org.objectstyle.cayenne.access.DataContext.onContextFlush(DataContext.java:1215)
         [java] at org.objectstyle.cayenne.access.ClientServerChannel.onCommit(ClientServerChannel.java:195)
         [java] at org.objectstyle.cayenne.access.ClientServerChannel.onSync(ClientServerChannel.java:147)
         [java] at org.objectstyle.cayenne.remote.service.DispatchHelper.dispatch(DispatchHelper.java:80)
         [java] at org.objectstyle.cayenne.remote.service.BaseRemoteService.processMessage(BaseRemoteService.java:182)
         [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         [java] at java.lang.reflect.Method.invoke(Method.java:585)
         [java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:157)
         [java] at org.objectstyle.cayenne.remote.hessian.service._HessianServlet.service(_HessianServlet.java:388)
         [java] at cayenne3t.example.util.StartupServlet.service(Unknown Source)
         [java] at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
         [java] at org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:666)
         [java] at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
         [java] at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
         [java] at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
         [java] at org.mortbay.http.HttpServer.service(HttpServer.java:909)
         [java] at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
         [java] at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
         [java] at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
         [java] at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
         [java] at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
         [java] at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

    -- 
    This message is automatically generated by JIRA.
    -
    If you think it was sent incorrectly contact one of the administrators:
       http://issues.apache.org/cayenne/secure/Administrators.jspa
    -
    For more information on JIRA, see:
       http://www.atlassian.com/software/jira
    



    This archive was generated by hypermail 2.0.0 : Sun May 21 2006 - 04:11:47 EDT