Re: BUG: Cayenne Modeler

From: Kevin Menard (nirvdru..mail.com)
Date: Tue Feb 02 2010 - 09:30:59 EST

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

    Hi Joe,

    Please find comments in-line.

    On Tue, Feb 2, 2010 at 9:09 AM, Joe Baldwin <jfbaldwi..arthlink.net> 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.
    >

    An infinite loop should manifest itself as a stack overflow issue, not an
    out of memory one. I'm not saying it can't happen, but an OOME doesn't mean
    that there's an infinite loop. By your description of the problem, it was a
    large model. So, there are other ways that memory use could explode and we
    won't really have a better idea until you try increasing the heap size.
     That's simply the nature of the halting 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.
    >

    Certainly. No one is suggesting to the contrary. I'm just trying to get
    more information to help diagnose the issue. Without your data model, it's
    not something I can easily replicate.

    >
    > 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.
    >

    If it is indeed the removing of the foreign key that is causing an OOME, it
    still would point at Cayenne operating with insufficient memory. The
    application's memory footprint is not static.

    >
    > 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.
    >

    There is no logical entailment from any of the facts that suggest the
    problem at this stage. All we know for certain is you operated on a large
    dataset and ran out of memory. Occam's Razor would suggest you just need
    more memory. Please try bumping the heap size and report and we can get a
    better idea. If it truly is a memory issue, we can investigate reductions
    in the allocated memory and provide a different max heap size by default.

    -- 
    Kevin
    

    > > > > > 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:31:53 EST