Stuart reported this stack-trace in myExperiment.. I believe the myExperiment perspective is trying to deserialize the list of previously opened 'resources' - and the only resource which have a java.net.URI in them is net.sf.taverna.t2.ui.perspectives.myexperiment.model.Workflow - representing an opened workflow.
These settings are stored as base64-encoded Java serializations, in a property file in your Taverna home directory. I see several potential ways in which this property file can become corrupted or incompletely written to, which is probably what has happened in your case - I doubt this has anything to do with the update, except that you might have shut down Taverna early, triggering the corruption. First of all, net.sf.taverna.t2.ui.perspectives.myexperiment.model.MyExperimentClient.storeHistoryAndSettings() is not synchronized, so several threads could be storing the settings at the same time, of which there are at least: GUI thread, a myExperiment login thread, and (here's probably the big suspect) - the myExperiment shutdown thread. This thread seems to be started as a Runtime shutdown hook (which allow it to complete), but also by a Taverna shutdown hook MainComponentShutdownHook - which does *not* wait for it to complete. If these both run at the same time they would potentially be overwriting the same file - and if Taverna's shutdown calls System.exit() after calling the shutdown hooks, the JVM would not wait for the thread to finish - potentially leaving you with half a property file. We'll put this into Jira. On Thu, Jul 29, 2010 at 13:58, Stuart Owen <[email protected]> wrote: > Hi, > Its me! > Since upgrading with the new patch, my myExperiment perspective seems to > have stopped working. I get "Error opening layout file: null", and the trace > below. This is on Ubuntu with: > > java version "1.6.0_20" > Java(TM) SE Runtime Environment (build 1.6.0_20-b02) > Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode) > > ERROR 2010-07-29 13:53:57,432 > (net.sf.taverna.t2.ui.perspectives.myexperiment.model.Base64:1071) - Could > not decode Base64 object > java.io.EOFException > at > java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281) > at > java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3019) > at > java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2820) > at java.io.ObjectInputStream.readString(ObjectInputStream.java:1599) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1320) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) > at > java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480) > at java.net.URI.readObject(URI.java:1652) > at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at java.util.ArrayList.readObject(ArrayList.java:593) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at > net.sf.taverna.t2.ui.perspectives.myexperiment.model.Base64.decodeToObject(Base64.java:1067) > at > net.sf.taverna.t2.ui.perspectives.myexperiment.HistoryBrowserTabContentPanel.<init>(HistoryBrowserTabContentPanel.java:128) > at > net.sf.taverna.t2.ui.perspectives.myexperiment.MainComponent.initialisePerspectiveUI(MainComponent.java:244) > at > net.sf.taverna.t2.ui.perspectives.myexperiment.MainComponent.<init>(MainComponent.java:123) > at > net.sf.taverna.t2.ui.perspectives.myexperiment.MainComponentFactory.getComponent(MainComponentFactory.java:36) > at > net.sf.taverna.t2.workbench.ui.impl.WorkbenchZBasePane.getComponent(WorkbenchZBasePane.java:76) > at net.sf.taverna.zaria.ZBasePane.getNamedComponent(ZBasePane.java:438) > at > net.sf.taverna.zaria.ZRavenComponent.configure(ZRavenComponent.java:119) > at net.sf.taverna.zaria.ZBasePane.configure(ZBasePane.java:172) > at > net.sf.taverna.t2.workbench.ui.impl.WorkbenchPerspectives.openLayout(WorkbenchPerspectives.java:421) > at > net.sf.taverna.t2.workbench.ui.impl.WorkbenchPerspectives.switchPerspective(WorkbenchPerspectives.java:312) > at > net.sf.taverna.t2.workbench.ui.impl.WorkbenchPerspectives$CurrentPerspectiveObserver.notify(WorkbenchPerspectives.java:737) > at > net.sf.taverna.t2.workbench.ui.impl.WorkbenchPerspectives$CurrentPerspectiveObserver.notify(WorkbenchPerspectives.java:723) > at > net.sf.taverna.t2.lang.observer.MultiCaster.notify(MultiCaster.java:64) > at net.sf.taverna.t2.lang.ui.ModelMap.modelChanged(ModelMap.java:126) > at net.sf.taverna.t2.lang.ui.ModelMap.setModel(ModelMap.java:119) > at > net.sf.taverna.t2.workbench.ui.impl.WorkbenchPerspectives$2.actionPerformed(WorkbenchPerspectives.java:333) > at > javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) > at > javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) > > Stuart. > -- Stian Soiland-Reyes, myGrid team School of Computer Science The University of Manchester ------------------------------------------------------------------------------ The Palm PDK Hot Apps Program offers developers who use the Plug-In Development Kit to bring their C/C++ apps to Palm for a share of $1 Million in cash or HP Products. Visit us here for more details: http://p.sf.net/sfu/dev2dev-palm _______________________________________________ taverna-hackers mailing list [email protected] Web site: http://www.taverna.org.uk Mailing lists: http://www.taverna.org.uk/about/contact-us/ Developers Guide: http://www.taverna.org.uk/developers/
