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/

Reply via email to