Bug #5444
openKepler can't run workflow if two instances exist at same time
0%
Description
Both vanilla and reporting suites (2.3) have problems. But the behaviors are different:
1. Vanilla kepler:
Start a kepler then start antoher one. The second one runs a workflow. Then close the first kepler. Finally close the second one, it shows the error:
java.sql.SQLException: Connection is broken: java.io.EOFException
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
at org.kepler.util.sql.DatabaseType._executeSQL(DatabaseType.java:930)
at org.kepler.util.sql.HSQL.disconnect(HSQL.java:79)
at org.kepler.objectmanager.lsid.LSIDGenerator.closeDatabase(LSIDGenerator.java:400)
at org.kepler.module.core.Shutdown.shutdownModule(Shutdown.java:48)
at org.kepler.Kepler._initializeModules(Kepler.java:572)
at org.kepler.Kepler.access$100(Kepler.java:81)
at org.kepler.Kepler$Shutdown.shutdown(Kepler.java:663)
at org.kepler.util.ShutdownNotifier.shutdown(ShutdownNotifier.java:48)
at org.kepler.gui.KeplerGraphFrame.dispose(KeplerGraphFrame.java:1146)
2. Reporting kepler.
Two kepers are running. One runs a workflow and get an error:
<jing> ptolemy.kernel.util.IllegalActionException: Error recording workflow structure: Error connecting or initializing database.
{DB User Name=sa, Password=, DB Host=, DB Name=provenanceDB, DB Type=HSQL, DB Port=9002, DB Table Prefix=, JDBC URL=}
The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-07-28 13:32:04.979 heartbeat - read: -8463 ms.
in .testWithReport.TOP Provenance Recorder
Because:
Error connecting or initializing database.
{DB User Name=sa, Password=, DB Host=, DB Name=provenanceDB, DB Type=HSQL, DB Port=9002, DB Table Prefix=, JDBC URL=}
The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-07-28 13:32:04.979 heartbeat - read: -8463 ms.
at org.kepler.provenance.ProvenanceRecorder._recordWorkflowContents(ProvenanceRecorder.java:2618)
at org.kepler.provenance.ProvenanceRecorder.preinitialize(ProvenanceRecorder.java:583)
at ptolemy.actor.CompositeActor.preinitialize(CompositeActor.java:1682)
at ptolemy.actor.Manager.preinitializeAndResolveTypes(Manager.java:930)
at ptolemy.actor.Manager.initialize(Manager.java:636)
at ptolemy.actor.Manager.execute(Manager.java:340)
at ptolemy.actor.Manager.run(Manager.java:1111)
at ptolemy.actor.Manager$PtolemyRunThread.run(Manager.java:1641)
Related issues
Updated by Jing Tao over 13 years ago
This may cause problem in workflow run engine - if user schedules two jobs at the same time, the running will fail.
Updated by ben leinfelder over 13 years ago
This used to work - but it's been literally years since I've seen the code and we may even have a newer HSQLDB version running.
From what I remember, you need to use the HSQLDB "server" mode by launching that in a separate process during Kepler startup- then any Kepler process can connect to the "server". The last Kepler process to quit will terminate the HSQLDB process.
Updated by ben leinfelder over 13 years ago
Maybe Derik will have some insight since he has been working with the prov DB quite a bit.
Updated by Derik Barseghian over 13 years ago
Similar to bug#5430. Will try to fix for 2.3.
Updated by Christopher Brooks over 13 years ago
Wow, the bug with having multiple Keplers running just hit me hard.
If there are two Keplers running, then drag and drop of an actor fails
with:
com.microstar.xml.XmlException: Cannot create entity without a class name. in [external stream] at line 2 and column 24
at ptolemy.moml.MoMLParser._checkForNull(MoMLParser.java:3792)
at ptolemy.moml.MoMLParser._createEntity(MoMLParser.java:3973)
at ptolemy.moml.MoMLParser.startElement(MoMLParser.java:2493)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:921)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1402)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:289)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:735)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1775)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1921)
at ptolemy.vergil.basic.EditorDropTargetListener.drop(EditorDropTargetListener.java:365)
at java.awt.dnd.DropTarget.drop(DropTarget.java:434)
at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:519)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:832)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:756)
at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:30)
at java.awt.Component.dispatchEventImpl(Component.java:4592)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4356)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4207)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
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)
Updated by Derik Barseghian over 13 years ago
In r28216 Dan added a way to start the hsql servers using kepler.sh -hsql start and kepler.sh -hsql stop. This allows multiple instances of kepler to start and stop successfully; you first run kepler.sh -hsql start, run and quit as many instances of kepler as you like, and then shutdown the servers with kepler.sh -hsql stop. (Note this does not solve the issue of databases being shared between users on the same machine bug#5278).
This isn't an ideal solution for users, but it's a workable solution for our needs with the scheduler.
For users, ideally the first kepler starts the servers, and the last running at any given time stops them. This will either require checking the databases for open connections, or keeping a shared, properly locked list of all running keplers that each kepler updates on start and quit.
Updated by Matt Jones over 13 years ago
So does this new feature ensure that each user that might need to write to the hsql database has permissions to do so? Does server mode take care of that for us? Does server mode open up access outside of the local machine (e.g., via TCP), or is this all using local IPC for communication?
Updated by Derik Barseghian over 13 years ago
No permission checking is done for users. This causes some issues, see bug#5278. This doesn't cause problems for our current scheduler setup, as there's just 1 scheduler running kepler as 1 user.
In general server mode does allow outside connections to the DBs on their ports (9001, 9002, 9003). This isn't currently an issue on kepler-dev, I'm guessing because of firewall setup, but we need to verify.
(In reply to comment #8)
So does this new feature ensure that each user that might need to write to the
hsql database has permissions to do so? Does server mode take care of that for
us? Does server mode open up access outside of the local machine (e.g., via
TCP), or is this all using local IPC for communication?
Updated by Derik Barseghian over 13 years ago
Filed bug#5463 for this issue.
(In reply to comment #9)
No permission checking is done for users. This causes some issues, see
bug#5278. This doesn't cause problems for our current scheduler setup, as
there's just 1 scheduler running kepler as 1 user.In general server mode does allow outside connections to the DBs on their ports
(9001, 9002, 9003). This isn't currently an issue on kepler-dev, I'm guessing
because of firewall setup, but we need to verify.(In reply to comment #8)
So does this new feature ensure that each user that might need to write to the
hsql database has permissions to do so? Does server mode take care of that for
us? Does server mode open up access outside of the local machine (e.g., via
TCP), or is this all using local IPC for communication?
Updated by Jing Tao almost 13 years ago
Hrrm. I couldn't reproduce the bug dragging the sdf director this time when my workflow run engine (embedded a reporting-2.3 kepler) is up.
However, when I started the second reporting-2.3 kepler instance, I got the error:
[run] java.sql.SQLException: The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-12-07 09:37:55.611 heartbeat - read: -3887 ms.
[run] at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
[run] at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
[run] at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
[run] at org.hsqldb.jdbcDriver.connect(Unknown Source)
[run] at java.sql.DriverManager.getConnection(DriverManager.java:582)
[run] at java.sql.DriverManager.getConnection(DriverManager.java:185)
[run] at org.kepler.util.sql.HSQL._getConnection(HSQL.java:446)
[run] at org.kepler.util.sql.DatabaseType.connect(DatabaseType.java:135)
[run] at org.kepler.util.sql.DatabaseFactory.getConnectedDatabaseType(DatabaseFactory.java:283)
[run] at org.kepler.provenance.sql.SQLQueryV8.<init>(SQLQueryV8.java:77)
[run] at org.kepler.workflowrunmanager.WorkflowRunManager.connect(WorkflowRunManager.java:155)
[run] at org.kepler.module.workflowrunmanager.Initialize.initializeModule(Initialize.java:141)
[run] at org.kepler.Kepler._initializeModules(Kepler.java:609)
[run] at org.kepler.Kepler.initialize(Kepler.java:472)
[run] at org.kepler.Kepler.parseArgsAndRun(Kepler.java:346)
[run] at org.kepler.Kepler.main(Kepler.java:260)
[run] org.kepler.provenance.QueryException: Unable to connect or initialize database connection: The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-12-07 09:37:55.611 heartbeat - read: -3887 ms.
[run] at org.kepler.provenance.sql.SQLQueryV8.<init>(SQLQueryV8.java:82)
[run] at org.kepler.workflowrunmanager.WorkflowRunManager.connect(WorkflowRunManager.java:155)
[run] at org.kepler.module.workflowrunmanager.Initialize.initializeModule(Initialize.java:141)
[run] at org.kepler.Kepler._initializeModules(Kepler.java:609)
[run] at org.kepler.Kepler.initialize(Kepler.java:472)
[run] at org.kepler.Kepler.parseArgsAndRun(Kepler.java:346)
[run] at org.kepler.Kepler.main(Kepler.java:260)
[run] Caused by: java.sql.SQLException: The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-12-07 09:37:55.611 heartbeat - read: -3887 ms.
[run] at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
[run] at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
[run] at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
[run] at org.hsqldb.jdbcDriver.connect(Unknown Source)
[run] at java.sql.DriverManager.getConnection(DriverManager.java:582)
[run] at java.sql.DriverManager.getConnection(DriverManager.java:185)
[run] at org.kepler.util.sql.HSQL._getConnection(HSQL.java:446)
[run] at org.kepler.util.sql.DatabaseType.connect(DatabaseType.java:135)
[run] at org.kepler.util.sql.DatabaseFactory.getConnectedDatabaseType(DatabaseFactory.java:283)
[run] at org.kepler.provenance.sql.SQLQueryV8.<init>(SQLQueryV8.java:77)
[run] ... 6 more
And when i ran a workflow, i got the exception:
ptolemy.kernel.util.IllegalActionException: Error recording workflow structure: Error connecting or initializing database.
{DB User Name=sa, Password=, DB Host=, DB Name=provenanceDB, DB Type=HSQL, DB Port=9002, DB Table Prefix=, JDBC URL=}
The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-12-07 09:39:51.390 heartbeat - read: -9667 ms.
in .HelloWordWithReport.TOP Provenance Recorder
Because:
Error connecting or initializing database.
{DB User Name=sa, Password=, DB Host=, DB Name=provenanceDB, DB Type=HSQL, DB Port=9002, DB Table Prefix=, JDBC URL=}
The database is already in use by another process: lockFile: org.hsqldb.persist.LockFile@aef9f24b[file =/home/tao/KeplerData/modules/provenance/db-2.3/provenanceDB.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2011-12-07 09:39:51.390 heartbeat - read: -9667 ms.
at org.kepler.provenance.ProvenanceRecorder._recordWorkflowContents(ProvenanceRecorder.java:2618)
at org.kepler.provenance.ProvenanceRecorder.preinitialize(ProvenanceRecorder.java:583)
at ptolemy.actor.CompositeActor.preinitialize(CompositeActor.java:1682)
at ptolemy.actor.Manager.preinitializeAndResolveTypes(Manager.java:930)
at ptolemy.actor.Manager.initialize(Manager.java:636)
at ptolemy.actor.Manager.execute(Manager.java:340)
at ptolemy.actor.Manager.run(Manager.java:1111)
at ptolemy.actor.Manager$PtolemyRunThread.run(Manager.java:1641)
Caused by: org.kepler.provenance.RecordingException: Error connecting or initializing database.
I am using reporting-2.3 suite and the os is Ubuntu 10.04.
Updated by Daniel Crawl over 12 years ago
There are 3 different problems in this bug.
The problem in the original description is that 2 Kepler are started, the first is closed, and then the second gets an error. As described in comment 7, you can get around this by starting the HSQL servers separately from Kepler.
The problem in comment 5 is due to running different suites at the same time. To reproduce:
1. ant change-to -Dsuite=reporting
2. ant run
3. in a different window, ant change-to -Dsuite=kepler
4. ant run
5. drag anything from the actor tree on the canvas
When Kepler is run with a different suite, ~/.kepler/ is deleted. This deletes the cached objects on the file system, but if another Kepler is running, the cache database is not deleted since it is in memory. The exception is due to the inconsistency between the contents of the database and file system.
The problem in comment 13 is due to multiple Kepler instances trying to access the HSQL provenance database. On 2011-07-19 this database configured to directly access the files to increase performance. If you want to run multiple instances, you'll need to configure it to use server-mode; see https://kepler-project.org/developers/reference/accessing-hsql.
Updated by Daniel Crawl over 12 years ago
I've fixed the problem due to running different suites by storing the cached objects and database tables on a per-suite basis. Also, ~/.kepler is no longer deleted on startup when the suite changes.
Updated by Christopher Brooks over 11 years ago
I'm reopening this because with Kepler-2.4rc3 under Windows 2008R2 64-bit,
when I run two Keplers and then close one, I get
java.sql.SQLException: Connection is broken: java.net.SocketException: Software caused connection abort: recv failed
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.executeQuery(Unknown Source)
at org.kepler.objectmanager.cache.CacheManager.getCachedLsidsForClass(CacheManager.java:708)
at org.kepler.icon.ComponentEntityConfig.tryToAssignIconBySemanticType(ComponentEntityConfig.java:294)
at org.kepler.icon.ComponentEntityConfig.addSVGIconTo(ComponentEntityConfig.java:158)
at org.kepler.gui.KeplerIconLoader.loadIconForClass(KeplerIconLoader.java:71)
at ptolemy.moml.MoMLParser._loadIconForClass(MoMLParser.java:6190)
at ptolemy.moml.MoMLParser._handlePropertyElement(MoMLParser.java:5757)
at ptolemy.moml.MoMLParser.startElement(MoMLParser.java:3120)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:921)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1556)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1492)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1436)
at ptolemy.actor.gui.PtolemyEffigy$Factory.createEffigy(PtolemyEffigy.java:412)
at ptolemy.actor.gui.EffigyFactory.createEffigy(EffigyFactory.java:233)
at ptolemy.actor.gui.Configuration.openModel(Configuration.java:1079)
at ptolemy.actor.gui.Configuration.openModel(Configuration.java:1005)
at ptolemy.actor.gui.HTMLViewer.hyperlinkUpdate(HTMLViewer.java:311)
at javax.swing.JEditorPane.fireHyperlinkUpdate(Unknown Source)
at javax.swing.text.html.HTMLEditorKit$LinkController.activateLink(Unknown Source)
at javax.swing.text.html.HTMLEditorKit$LinkController.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Presumably, what is happening is that one of the open Keplers has the database connection, but when it is closed, the other Kepler no longer connects to the database.
I'm fine with pushing this off to the next release so I've marked it as 2.5.0
Updated by Christopher Brooks over 11 years ago
Maybe we should address this.
The problem is that I then get stuck in a endless loop of dialogs:
java.sql.SQLException: Connection is broken: java.net.SocketException: Software caused connection abort: socket write error
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.executeQuery(Unknown Source)
at org.kepler.objectmanager.cache.CacheManager.getCachedLsidsForClass(CacheManager.java:708)
at org.kepler.icon.ComponentEntityConfig.tryToAssignIconBySemanticType(ComponentEntityConfig.java:294)
at org.kepler.icon.ComponentEntityConfig.addSVGIconTo(ComponentEntityConfig.java:158)
at org.kepler.gui.KeplerIconLoader.loadIconForClass(KeplerIconLoader.java:71)
at ptolemy.moml.MoMLParser._loadIconForClass(MoMLParser.java:6190)
at ptolemy.moml.MoMLParser._handlePropertyElement(MoMLParser.java:5757)
at ptolemy.moml.MoMLParser.startElement(MoMLParser.java:3120)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:921)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1556)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1492)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1436)
at ptolemy.actor.gui.PtolemyEffigy$Factory.createEffigy(PtolemyEffigy.java:412)
at ptolemy.actor.gui.EffigyFactory.createEffigy(EffigyFactory.java:233)
at ptolemy.actor.gui.Configuration.openModel(Configuration.java:1079)
at ptolemy.actor.gui.Configuration.openModel(Configuration.java:1005)
at ptolemy.actor.gui.HTMLViewer.hyperlinkUpdate(HTMLViewer.java:311)
at javax.swing.JEditorPane.fireHyperlinkUpdate(Unknown Source)
at javax.swing.text.html.HTMLEditorKit$LinkController.activateLink(Unknown Source)
at javax.swing.text.html.HTMLEditorKit$LinkController.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
The only solution is to kill Kepler using the OS.
Updated by Daniel Crawl over 11 years ago
Christopher, how did you get stuck in an endless loop of dialogs? I'm unable to reproduce that.
Updated by Christopher Brooks over 11 years ago
Under Windows, I exited one of the keplers and the tried to either open or run a model. I saw this endless loop of dialogs at least twice. I can try to reproduce it later today.
Updated by Daniel Crawl over 11 years ago
To reproduce the endless dialogs, I stopped the first Kepler instance, and in the second instance opened a workflow using File -> Open.
The problem is that a dialog is displayed each time MoMLParser tries to load a icon for a class while opening a workflow.
I fixed in r31704-31705.
I'm changing the target to 2.5 to fix the old problem of getting exceptions after the first Kepler instance stops.
Updated by Daniel Crawl about 9 years ago
- Target version changed from 2.5.0 to 2.X.Y