Re: BUG: Cayenne Modeler

From: Joe Baldwin (jfbaldwi..arthlink.net)
Date: Tue Feb 02 2010 - 09:53:34 EST

  • Next message: Joe Baldwin: "Re: BUG: Cayenne Modeler"

    Andrus,

    Here is the info that your requested:

    > * Which version of the Modeler are you using?

    3.0RC1, Application (Universal), Java Hotspot 64 bit server VM 1.6.0_17 on Mac OS 10.6.2

    > * Are you using a platform-specific build provided by Cayenne, or are you running it yourself with java?

    It appears to be a universal app compiled for OSX. (Sorry, I have never written a native app for OSX so I couldn't find more info than this.)

    > An OutOfMemoryError can be associated with many kinds of conditions.

    Yes, I am aware of this. When I first reported this I started by explaining that it could have been associated with a misunderstanding on my part about the steps I took to precipitate this (i.e. I could have made bad assumptions about the order in which I created these relationships, This could have easily caused an exceptional condition.)

    Still, I have created about 15-20 relationships with this same design and have never seen this dialog or this error before.

    You are the expert, of course, however if I am to help out by reporting a problem I believe it would be helpful to first establish what I steps I took to precipitate the problem and the determine if it simply a user-procedural error. In addition, I could have made a mistake, but what the CM has asked to do does not seem logical, so again it I think the initial user-procedure is a good place to start. (I can increase memory all day long but if I am doing something out of order then it won't help the analysis.)

    I will be happy to help with this, but I don't want to waste your time with a bug report if I simply did something out of order.

    Joe

    On Feb 2, 2010, at 9:28 AM, Andrus Adamchik wrote:

    > Hi Joe,
    >
    > (Disclaimer: I also haven't looked at the code involved yet).
    >
    > An OutOfMemoryError can be associated with many kinds of conditions. You can have an infinite loop not causing an OutOfMemory. And also OutOfMemoryError is by itself often causing a UI freeze, as the JVM tries to free up some memory before the full app crash. So don't jump to conclusions just yet.
    >
    >> Increasing the available memory to an app does nothing to analyze the problem.
    >
    > Have you tried it though? After all there is some minimal amount of heap space required for the Modeler to run, even when it is bug free (which I am not claiming it is).
    >
    > If that doesn't help, could you provide this info please (sorry if I missed it and it was mentioned already) :
    >
    > * Which version of the Modeler are you using?
    > * Are you using a platform-specific build provided by Cayenne, or are you running it yourself with java?
    >
    > Andrus
    >
    >
    >
    > On Feb 2, 2010, at 4:09 PM, Joe Baldwin wrote:
    >> The behavior by an app in which it freezes for about 3-4 minutes and then generates an out-of-memory-error is typically associated with an infinite loop. Increasing the available memory to an app does nothing to analyze the problem.
    >>
    >> It is more likely to be associated the the CM attempting to "remove the foreign key" as the CM dialog suggested. If the CM algorithm responsible for accomplishing this task is somehow faulty it could have easily resulted in an out of memory error.
    >>
    >> If on the other hand there is no error in the algorithm and this task requires and extraordinary amount of memory then it still points to the assumptions associated with the algorithm and its memory requirements.
    >>
    >> Still, it is not clear what the CM-dialog is attempting to accomplish or rectify (an associated, we-usually-do-it-this-way would help in these types of cases), so either the CM has mis-analysed or the user has made a procedural error. Either way the CM should not go into some functionality that takes 3-4 minutes and then runs out of memory.
    >>
    >> In addition, simply dismissing the CM's dialog window with the "remove the foreign key?" question results in no out of memory error. This would not typically happen if the CM were operating with insufficient memory.
    >>
    >> Therefore, the facts tend to point towards some exceptional condition that should be caught by the CM. If there is something missing in the user configuration then this might be an opportunity to have the CM point this out.
    >>
    >>
    >>
    >>
    >> On Feb 2, 2010, at 6:26 AM, Bryan Lewis wrote:
    >>
    >>> Sure, but you can run the modeler with an increased heap size, like
    >>>
    >>> java.exe -Xmx512m -jar CayenneModeler.jar
    >>>
    >>>
    >>>
    >>> On Mon, Feb 1, 2010 at 11:25 PM, Joe Baldwin <jfbaldwi..arthlink.net>wrote:
    >>>
    >>>> The CayenneModeler crashed not my app.
    >>>>
    >>>>
    >>>>
    >>>>
    >>>> On Feb 1, 2010, at 11:07 PM, Kevin Menard wrote:
    >>>>
    >>>>> Hi Joe,
    >>>>>
    >>>>> It looks like you would have needed to increased the -Xmx JVM property.
    >>>> Did
    >>>>> you actually corrupt any data in the process? If not, I'd suggest
    >>>>> re-running with an increased heap value. Otherwise, please file a JIRA
    >>>>> issue describing the problem.
    >>>>>
    >>>>> --
    >>>>> Kevin
    >>>>>
    >>>>>
    >>>>> On Sun, Jan 31, 2010 at 6:11 PM, Joe Baldwin <jfbaldwi..arthlink.net
    >>>>> wrote:
    >>>>>
    >>>>>> Tried to save a project with a new Entity (which had a many to one
    >>>>>> relationship). When I selected "Save" the following panel was
    >>>> displayed:
    >>>>>>
    >>>>>> Remove Foreign Keys mapped as object attributes?
    >>>>>>
    >>>>>> Not sure what this would accomplish, I selected "Yes", which appears to
    >>>> be
    >>>>>> the wrong answer because Cayenne Modeler crashed big time. (see auto
    >>>> report
    >>>>>> below)
    >>>>>>
    >>>>>> Joe
    >>>>>>
    >>>>>> CayenneModeler Info
    >>>>>> Version: cayenne.version
    >>>>>> Build Date: cayenne.build.date
    >>>>>> Exception:
    >>>>>> =================================
    >>>>>> java.lang.OutOfMemoryError: Java heap space
    >>>>>> at
    >>>>>>
    >>>> java.util.Collections$UnmodifiableCollection.iterator(Collections.java:1006)
    >>>>>> at
    >>>>>>
    >>>> org.apache.cayenne.map.ObjEntity.getAttributeForDbAttribute(ObjEntity.java:845)
    >>>>>> at
    >>>>>>
    >>>> org.apache.cayenne.modeler.undo.DbEntitySyncUndoableEdit$MeaningfulFKsUndoableEdit.<init>(DbEntitySyncUndoableEdit.java:96)
    >>>>>> at
    >>>>>>
    >>>> org.apache.cayenne.modeler.action.DbEntitySyncAction.synchDbEntity(DbEntitySyncAction.java:95)
    >>>>>> at
    >>>>>>
    >>>> org.apache.cayenne.modeler.action.DbEntitySyncAction.performAction(DbEntitySyncAction.java:60)
    >>>>>> at
    >>>>>>
    >>>> org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:163)
    >>>>>> at
    >>>>>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    >>>>>> at
    >>>>>>
    >>>> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    >>>>>> at
    >>>>>>
    >>>> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    >>>>>> at
    >>>>>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    >>>>>> at
    >>>>>>
    >>>> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    >>>>>> at
    >>>>>> java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    >>>>>> at java.awt.Component.processMouseEvent(Component.java:6348)
    >>>>>> at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
    >>>>>> at java.awt.Component.processEvent(Component.java:6113)
    >>>>>> at java.awt.Container.processEvent(Container.java:2085)
    >>>>>> at java.awt.Component.dispatchEventImpl(Component.java:4714)
    >>>>>> at java.awt.Container.dispatchEventImpl(Container.java:2143)
    >>>>>> at java.awt.Component.dispatchEvent(Component.java:4544)
    >>>>>> at
    >>>>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    >>>>>> at
    >>>>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
    >>>>>> at
    >>>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
    >>>>>> at java.awt.Container.dispatchEventImpl(Container.java:2129)
    >>>>>> at java.awt.Window.dispatchEventImpl(Window.java:2475)
    >>>>>> at java.awt.Component.dispatchEvent(Component.java:4544)
    >>>>>> at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
    >>>>>> at
    >>>>>>
    >>>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    >>>>>> at
    >>>>>>
    >>>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    >>>>>> at
    >>>>>>
    >>>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    >>>>>> at
    >>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    >>>>>> at
    >>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    >>>>>> at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>
    >>>>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Tue Feb 02 2010 - 09:54:11 EST