Bug #5489
closedModule Manager GUI should fail gracefully if a remote module cannot be downloaded
0%
Description
If you release a patch, e.g. loader-2.1.1, and a kepler 2.2 user downloads it and restarts, they will then be unable to download a suite that contains loader-2.2.0. The last messages I see on console are:
Release: https://code.kepler-project.org/code/kepler/releases/test-releases/
Downloading kepler-2.3.0...
Downloading outreach-2.2.0...
Downloading apple-extensions-2.1.0...
Downloading r-2.3.0...
Downloading loader-2.2.0...
Sidebug: these Downloading messages appear even if no download occurs because you already have it. Confusing.
In this case kepler-2.3.0 and r-2.3.0 are downloaded, but that's it. I've tried twice, same behavior. No indication of failure appears. My KeplerData/kepler.modules/ then contains:
build-area
kepler-2.3.0
kepler-2.3.0.zip
loader-2.1.1
loader-2.1.1.zip
r-2.3.0
r-2.3.0.zip
Updated by Derik Barseghian about 13 years ago
My mistake, this was because a module isn't published.
Changing title -- if a module cannot be downloaded, fail gracefully (show a message, un-depress Apply and Restart button, etc).
We also shouldn't show a message on console saying a module is being downloaded until it's actually being downloaded.
Updated by jianwu jianwu over 12 years ago
two ways to reproduce the bug: 1) close internet connection just before downloading start; 2) have a unpublished module in the suite to be downloaded.
Updated by jianwu jianwu about 12 years ago
At version 30650, kepler now throws and checks exception if the url is not accessible. It will popup a dialogue about the error.
To test it, change releaseLocation in module-manager/resources/configurations/configuration.xml to be "https://code.kepler-project.org/code/kepler/releases/test-releases/". And try to switch to master-slave-2.2.1.
I didn't add connection time out except throw and checking because it's hard to estimate the download time. Also module manager itself heavily use internet. I think it is reasonable to assume the internet is connected.
I think I can close the bug. I'll leave it open for a while for more tests.
Updated by jianwu jianwu about 12 years ago
it works for me at version 30710. re-assign Derik to test.
Updated by Derik Barseghian about 12 years ago
First I just tried to test downloading kepler-2.3.0 from kepler trunk, but now I just instantly get a bunch of Downloading messages:
[run] Downloading kepler-2.3.0...
[run] Downloading outreach-2.2.1...
etc., but no modules get downloaded to my system. I then get the new warning:
The following modules are not present:
kepler-2.3.0
Do you still want to exit the Module Manager?
If I click Yes, I get an error popup (which seems weird, why does this happen?)
The following modules are missing:
kepler-2.3.0
If I click OK I get some FileNotFoundExceptions related to trying to find install-path.txt at a bogus path (see below trace).
Please break out these other issues into different bugs as you see fit.
[run] AvailableModulesPanel notifying shutdown listeners of impending shutdown. Closing any open databases may take awhile...
[run] AvailableModulesPanel Spawning new Kepler process
[run] JVM Memory = 5m 768m
[run] RunClasspath:kepler-2.3.0 /Users/derik/dev2/kepler.modules.regular/kepler-2.3.0/src
[run] Exception in thread "AWT-EventQueue-0" java.io.FileNotFoundException: /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar/build-area/install-path.txt (No such file or directory)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:106)
[run] at org.kepler.modulemanager.gui.AvailableModulesPanel$1$1.done(AvailableModulesPanel.java:249)
[run] Kepler failed to launch. Trying to launch Module Manager GUI using basePath:/Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar
[run] The base dir is /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar
[run] at javax.swing.SwingWorker$5.run(SwingWorker.java:717)
[run] at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:814)
[run] at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:95)
[run] at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:824)
[run] at javax.swing.Timer.fireActionPerformed(Timer.java:291)
[run] at javax.swing.Timer$DoPostEvent.run(Timer.java:221)
[run] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
[run] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
[run] at java.awt.EventQueue.access$400(EventQueue.java:82)
[run] at java.awt.EventQueue$2.run(EventQueue.java:663)
[run] at java.awt.EventQueue$2.run(EventQueue.java:661)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
[run] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
[run] at java.awt.Dialog$1.run(Dialog.java:1044)
[run] at java.awt.Dialog$3.run(Dialog.java:1096)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.awt.Dialog.show(Dialog.java:1094)
[run] at java.awt.Component.show(Component.java:1591)
[run] at java.awt.Component.setVisible(Component.java:1543)
[run] at java.awt.Window.setVisible(Window.java:843)
[run] at java.awt.Dialog.setVisible(Dialog.java:984)
[run] at org.kepler.modulemanager.gui.ModuleManagerAction.actionPerformed(ModuleManagerAction.java:65)
[run] at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
[run] at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
[run] at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
[run] at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
[run] at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
[run] at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:95)
[run] at java.awt.MenuItem.processActionEvent(MenuItem.java:650)
[run] at java.awt.MenuItem.processEvent(MenuItem.java:609)
[run] at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:343)
[run] at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:331)
[run] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
[run] at java.awt.EventQueue.access$400(EventQueue.java:82)
[run] at java.awt.EventQueue$2.run(EventQueue.java:663)
[run] at java.awt.EventQueue$2.run(EventQueue.java:661)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
[run] at java.awt.EventQueue$3.run(EventQueue.java:677)
[run] at java.awt.EventQueue$3.run(EventQueue.java:675)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
[run] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
[run] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
[run] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
[run] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
[run] at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
[run] Caused by: java.io.FileNotFoundException: /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar/build-area/install-path.txt (No such file or directory)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:106)
[run] at org.kepler.build.runner.Kepler.main(Kepler.java:109)
[run] at org.kepler.build.Run.runSuite(Run.java:252)
[run] at org.kepler.build.Run.run(Run.java:213)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:102)
[run] ... 55 more
[run] Caused by: java.io.FileNotFoundException: /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar/build-area/install-path.txt (No such file or directory)
[run] at java.io.FileOutputStream.open(Native Method)
[run] at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
[run] at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
[run] at java.io.FileWriter.<init>(FileWriter.java:73)
[run] at org.kepler.build.installer.InstallationIdTxt.createInstallPath(InstallationIdTxt.java:119)
[run] at org.kepler.build.installer.InstallationIdTxt.check(InstallationIdTxt.java:77)
[run] at org.kepler.build.runner.Kepler.run(Kepler.java:136)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:102)
[run] ... 59 more
[run] --- Nested Exception ---
[run] java.io.FileNotFoundException: /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar/build-area/install-path.txt (No such file or directory)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:106)
[run] at org.kepler.build.runner.Kepler.main(Kepler.java:109)
[run] at org.kepler.build.Run.runSuite(Run.java:252)
[run] at org.kepler.build.Run.run(Run.java:213)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:102)
[run] at org.kepler.modulemanager.gui.AvailableModulesPanel$1$1.done(AvailableModulesPanel.java:249)
[run] at javax.swing.SwingWorker$5.run(SwingWorker.java:717)
[run] at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:814)
[run] at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:95)
[run] at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:824)
[run] at javax.swing.Timer.fireActionPerformed(Timer.java:291)
[run] at javax.swing.Timer$DoPostEvent.run(Timer.java:221)
[run] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
[run] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
[run] at java.awt.EventQueue.access$400(EventQueue.java:82)
[run] at java.awt.EventQueue$2.run(EventQueue.java:663)
[run] at java.awt.EventQueue$2.run(EventQueue.java:661)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
[run] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
[run] at java.awt.Dialog$1.run(Dialog.java:1044)
[run] at java.awt.Dialog$3.run(Dialog.java:1096)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.awt.Dialog.show(Dialog.java:1094)
[run] at java.awt.Component.show(Component.java:1591)
[run] at java.awt.Component.setVisible(Component.java:1543)
[run] at java.awt.Window.setVisible(Window.java:843)
[run] at java.awt.Dialog.setVisible(Dialog.java:984)
[run] at org.kepler.modulemanager.gui.ModuleManagerAction.actionPerformed(ModuleManagerAction.java:65)
[run] at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
[run] at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
[run] at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
[run] at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
[run] at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
[run] at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:95)
[run] at java.awt.MenuItem.processActionEvent(MenuItem.java:650)
[run] at java.awt.MenuItem.processEvent(MenuItem.java:609)
[run] at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:343)
[run] at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:331)
[run] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
[run] at java.awt.EventQueue.access$400(EventQueue.java:82)
[run] at java.awt.EventQueue$2.run(EventQueue.java:663)
[run] at java.awt.EventQueue$2.run(EventQueue.java:661)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
[run] at java.awt.EventQueue$3.run(EventQueue.java:677)
[run] at java.awt.EventQueue$3.run(EventQueue.java:675)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
[run] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
[run] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
[run] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
[run] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
[run] at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
[run] Caused by: java.io.FileNotFoundException: /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar/build-area/install-path.txt (No such file or directory)
[run] at java.io.FileOutputStream.open(Native Method)
[run] at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
[run] at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
[run] at java.io.FileWriter.<init>(FileWriter.java:73)
[run] at org.kepler.build.installer.InstallationIdTxt.createInstallPath(InstallationIdTxt.java:119)
[run] at org.kepler.build.installer.InstallationIdTxt.check(InstallationIdTxt.java:77)
[run] at org.kepler.build.runner.Kepler.run(Kepler.java:136)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:102)
[run] ... 59 more
[run] --- Nested Exception ---
[run] java.io.FileNotFoundException: /Users/derik/dev2/kepler.modules.regular/kepler-tasks/lib/jar/build-area/install-path.txt (No such file or directory)
[run] at java.io.FileOutputStream.open(Native Method)
[run] at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
[run] at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
[run] at java.io.FileWriter.<init>(FileWriter.java:73)
[run] at org.kepler.build.installer.InstallationIdTxt.createInstallPath(InstallationIdTxt.java:119)
[run] at org.kepler.build.installer.InstallationIdTxt.check(InstallationIdTxt.java:77)
[run] at org.kepler.build.runner.Kepler.run(Kepler.java:136)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:102)
[run] at org.kepler.build.runner.Kepler.main(Kepler.java:109)
[run] at org.kepler.build.Run.runSuite(Run.java:252)
[run] at org.kepler.build.Run.run(Run.java:213)
[run] at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:102)
[run] at org.kepler.modulemanager.gui.AvailableModulesPanel$1$1.done(AvailableModulesPanel.java:249)
[run] at javax.swing.SwingWorker$5.run(SwingWorker.java:717)
[run] at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:814)
[run] at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:95)
[run] at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:824)
[run] at javax.swing.Timer.fireActionPerformed(Timer.java:291)
[run] at javax.swing.Timer$DoPostEvent.run(Timer.java:221)
[run] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
[run] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
[run] at java.awt.EventQueue.access$400(EventQueue.java:82)
[run] at java.awt.EventQueue$2.run(EventQueue.java:663)
[run] at java.awt.EventQueue$2.run(EventQueue.java:661)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
[run] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
[run] at java.awt.Dialog$1.run(Dialog.java:1044)
[run] at java.awt.Dialog$3.run(Dialog.java:1096)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.awt.Dialog.show(Dialog.java:1094)
[run] at java.awt.Component.show(Component.java:1591)
[run] at java.awt.Component.setVisible(Component.java:1543)
[run] at java.awt.Window.setVisible(Window.java:843)
[run] at java.awt.Dialog.setVisible(Dialog.java:984)
[run] at org.kepler.modulemanager.gui.ModuleManagerAction.actionPerformed(ModuleManagerAction.java:65)
[run] at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
[run] at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
[run] at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
[run] at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
[run] at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
[run] at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:95)
[run] at java.awt.MenuItem.processActionEvent(MenuItem.java:650)
[run] at java.awt.MenuItem.processEvent(MenuItem.java:609)
[run] at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:343)
[run] at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:331)
[run] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
[run] at java.awt.EventQueue.access$400(EventQueue.java:82)
[run] at java.awt.EventQueue$2.run(EventQueue.java:663)
[run] at java.awt.EventQueue$2.run(EventQueue.java:661)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
[run] at java.awt.EventQueue$3.run(EventQueue.java:677)
[run] at java.awt.EventQueue$3.run(EventQueue.java:675)
[run] at java.security.AccessController.doPrivileged(Native Method)
[run] at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
[run] at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
[run] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
[run] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
[run] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
[run] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
[run] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
[run] at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Updated by Derik Barseghian about 12 years ago
Re: comment6, this was likely caused by having 0-sized zip files in my trunk kepler.modules checkout. Last night I forgot when working off trunk, zips get downloaded here, instead of KeplerData/kepler.modules/
Updated by Derik Barseghian about 12 years ago
Ok I tried Jianwu's scenario is comment4 and got the new error alert, so that works. "Downloading" messages still appear on console even when you already have the zips. A fix for this wasn't immediately apparent, so I adjusted the msg to say "Downloading (if necessary)" and added a FIXME to the code. I added a bug for this: bug#5716