I think the 'table exists' problem can happen in rare cases if two jobs 
are executed at the same time, the time window between checking if a 
table exists and creating it if it doesn't is small but not zero. This 
means that two different jobs may not see the table and both will try to 
create it... The last one will fail. I guess it is possible to make the 
code more robust in this case, but figured it would maybe not happen 
very often (if at all) since the tables are usually created at the same 
time as the first root bioassay set in an experiment is created. In any 
case, you don't need to worry about database being corrupted.

The duplication is a bit more surprising. Are the bioassay sets created 
by the same or different jobs? You can check the jobs table (View -> 
Jobs) if you can't find it out from the experiment analysis page. The 
one thing that comes to my mind and that could explain both the 'table 
exists' error and the duplication issue is that each job is for some 
reason executed twice (and at the same time). It shouldn't happen, but I 
remember that we had some problems when running test programs and still 
having the web server's job queue active. Every now and then the web 
server would start executing a job that was also started by our test 
program. Some times the one executing on the web server would fail and 
some times the test program. So, do you have any job agents installed, 
or multiple web applications, or anything else that is executing jobs 
from the job queue?


Bob MacCallum wrote:
> Dear BASE team,
> I just got the following error while creating a root bioassayset for a small
> test experiment.  My hunch is that it's something bad like a corrupted db...
> I plan to get 2.5 installed ASAP, but was hoping to do a demo with 2.4.5 to
> my colleagues later this week. 
> Well I am in luck, I just repeated exactly the same thing and it worked fine.
> But the odd thing is that I now see that there are three identical-looking
> bioassaysets in the experiment, even though I only ran the Formula intensity
> calculator plugin twice.  From the "Date" column it is the latter analysis
> which got duplicated (and the original one seems to work ok).  I am not
> usually a double-clicker, but that might be one explanation.
> Strange indeed.
> Here's the stack trace in any case.
> cheers,
> Bob.
> net.sf.basedb.core.BaseException: Table 'D13Pos' already exists
> at net.sf.basedb.core.HibernateUtil.createVirtualTable(HibernateUtil.java:605)
> at net.sf.basedb.core.VirtualDb.createTables(VirtualDb.java:290)
> at 
> net.sf.basedb.core.PositionBatcher.buildInsertSelectSql(PositionBatcher.java:303)
> at net.sf.basedb.core.PositionBatcher.insert(PositionBatcher.java:246)
> at 
> net.sf.basedb.util.IntensityCalculatorUtil.createRootBioAssaySet(IntensityCalculatorUtil.java:204)
> at 
> net.sf.basedb.plugins.IntensityCalculatorPlugin.run(IntensityCalculatorPlugin.java:249)
> at 
> net.sf.basedb.core.PluginExecutionRequest.invoke(PluginExecutionRequest.java:89)
> at 
> net.sf.basedb.core.InternalJobQueue$JobRunner.run(InternalJobQueue.java:421)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 
> 'D13Pos' already exists
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
> at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2934)
> at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
> at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
> at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
> at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1350)
> at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1266)
> at 
> com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:64)
> at net.sf.basedb.core.HibernateUtil.createVirtualTable(HibernateUtil.java:581)
> ... 8 more
> Version       BASE 2.4.6pre (build #3938; schema #40)
> Web server    Apache Tomcat/5.5.20
> Database Server       MySQL 5.0.21-max-log
> Database Dialect      org.hibernate.dialect.MySQLInnoDBDialect
> JDBC Driver   com.mysql.jdbc.Driver (version 5.0)
> Java runtime  Java(TM) SE Runtime Environment (1.6.0-b105), Sun Microsystems 
> Inc.
> Operating system      Linux amd64
> Memory        Total: 474.6 MB
> Free: 238.2 MB
> Max: 910.3 MB

Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
The BASE general discussion mailing list
unsubscribe: send a mail with subject "unsubscribe" to

Reply via email to