I'm trying to have my workflow write its results to a database using the jdbc java widget and am running into problems. I'm using Taverna 1.7.2.1 on the Mac; AFAIK, Taverna 2 does not support jdbc at all, so switching is not an option.
After much thrashing about, I believe that the SQLUpdateWorker code has a bug--it does not work if the params list is not given. There's no error reported in Taverna, but there is a backtrace in the system log (see [Attach1] below) that complains about a null pointer. Comparing the code for SQLUpdateWorker [1] to SQLQueryWorker [2], I noticed that the later tests for params being null, which the former does not (line 118 of SQLQueryWorker tests params!=null, which is missing from the corresponding line 83 of SQLUpdateWorker). (The code on SourceForge is two years old, but the problem seems to still be there.) Presumably this would be trivial to fix, except I don't know how to compile java source to a working program (perhaps that's documented somewhere?). Anyway, once I found this problem, I rewrote my workflow, adding a bean shell to create an ArrayList of the various values to pass to the params port of the SQLUpdate. Actually, it gets a list of lists, as the whole thing is iterated, but the status suggests that the SQLUpdate will also be iterated, so I think it's okay. But this also doesn't work, throwing a java.lang.ArrayStoreException on the first pass for some reason that I can't figure out. Again, there's no error visible in Taverna, but there is a backtrace in the system log--see attachment 2. So, any chance the first bug will be fixed? Or advice about what's going on in the second case? References [1] http://taverna.cvs.sourceforge.net/viewvc/taverna/taverna1.0/taverna-contrib/src/main/java/net/sourceforge/taverna/scuflworkers/jdbc/SQLUpdateWorker.java?revision=1.3&view=markup [2] http://taverna.cvs.sourceforge.net/viewvc/taverna/taverna1.0/taverna-contrib/src/main/java/net/sourceforge/taverna/scuflworkers/jdbc/SQLQueryWorker.java?revision=1.5&view=markup Attachments [Attach1] Backtrace from system log calling Execute SQLUpdate with no params: 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] ERROR 2009-11-20 11:45:34,527 Failed while iterating Thread[Processor worker insert_data #0,6,main] 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] java.lang.NullPointerException 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker.execute(SQLUpdateWorker.java:83) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at org.embl.ebi.escience.scuflworkers.java.LocalServiceTask.execute(LocalServiceTask.java:31) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.runAndGenerateTemplates(ProcessorTask.java:585) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.doInvocationWithRetryLogic(ProcessorTask.java:524) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.invokeOnce(ProcessorTask.java:443) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.doSingleIteration(ProcessorTask.java:962) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.access$100(ProcessorTask.java:95) 20/11/09 11:45:34 AM [0x0-0x138138].Taverna[56288] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask$1.run(ProcessorTask.java:835) [Attach2] System error log from running SQLUpdate passing list of values in params port 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] ERROR 2009-11-20 15:30:56,095 Failed while iterating Thread[Processor worker insert_data #0,6,main] 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] java.lang.ArrayStoreException 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at java.lang.System.arraycopy(Native Method) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at java.util.ArrayList.toArray(ArrayList.java:306) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at net.sourceforge.taverna.baclava.DataThingAdapter.getStringArray(DataThingAdapter.java:60) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker.execute(SQLUpdateWorker.java:68) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at org.embl.ebi.escience.scuflworkers.java.LocalServiceTask.execute(LocalServiceTask.java:31) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.runAndGenerateTemplates(ProcessorTask.java:585) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.doInvocationWithRetryLogic(ProcessorTask.java:524) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.invokeOnce(ProcessorTask.java:443) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.doSingleIteration(ProcessorTask.java:962) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask.access$100(ProcessorTask.java:95) 20/11/09 3:30:56 PM [0x0-0x1bd1bd].Taverna[87334] at uk.ac.soton.itinnovation.taverna.enactor.entities.ProcessorTask$1.run(ProcessorTask.java:835) Kevin Crowston Syracuse University Phone: +1 (315) 464-0272 School of Information Studies Fax: +1 (866) 265-7407 348 Hinds Hall Web: http://crowston.syr.edu/ Syracuse, NY 13244-4100 USA ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ taverna-users mailing list [email protected] [email protected] Web site: http://www.taverna.org.uk Mailing lists: http://www.taverna.org.uk/taverna-mailing-lists/
