Opened 18 years ago

Closed 18 years ago

#285 closed defect (fixed)

Analysis plugins working on the same experiment may fail with a database constraint violation

Reported by: Nicklas Nordborg Owned by: Nicklas Nordborg
Priority: critical Milestone: BASE 2.0
Component: core Version: RC2
Keywords: Cc:

Description

The problem seems to be that when generating the ID numbers for data cubes, layers, filters, etc. transactions are not taken into account. Ie. if two transactions are adding a new data cube (ie. a plugin plugin creating the root bioassayset intensities) both transactions will get the same data cube ID and a duplicate key violation error is thrown when the second transaction tries to commit.

Here is an example of a strack trace:

net.sf.basedb.core.BaseException: Batch entry 0 INSERT INTO "base2"."dynamic"."D1230Pos" ("cube", "position", "reporter_id") VALUES (4, 1, 1) was aborted.  Call getNextException to see the cause.
	at net.sf.basedb.core.InternalJobQueue$JobRunner.run(InternalJobQueue.java:455)
	at java.lang.Thread.run(Thread.java:595)
Caused by: net.sf.basedb.core.BaseException: Batch entry 0 INSERT INTO "base2"."dynamic"."D1230Pos" ("cube", "position", "reporter_id") VALUES (4, 1, 1) was aborted.  Call getNextException to see the cause.
	at net.sf.basedb.core.PositionBatcher.flush(PositionBatcher.java:133)
	at net.sf.basedb.core.PositionBatcher.insert(PositionBatcher.java:200)
	at net.sf.basedb.util.IntensityCalculatorUtil.createRootBioAssaySet(IntensityCalculatorUtil.java:336)
	at net.sf.basedb.plugins.IntensityCalculatorPlugin.run(IntensityCalculatorPlugin.java:216)
	at net.sf.basedb.core.PluginExecutionRequest.invoke(PluginExecutionRequest.java:83)
	at net.sf.basedb.core.InternalJobQueue$JobRunner.run(InternalJobQueue.java:447)
	... 1 more
Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO "base2"."dynamic"."D1230Pos" ("cube", "position", "reporter_id") VALUES (4, 1, 1) was aborted.  Call getNextException to see the cause.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2423)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1257)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:334)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2485)
	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
	at net.sf.basedb.core.PositionBatcher.flush(PositionBatcher.java:120)
	... 6 more
Caused by: java.sql.SQLException: ERROR: duplicate key violates unique constraint "D1230Pos_pkey"
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1471)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1256)
	... 10 more

Change History (3)

comment:1 by Nicklas Nordborg, 18 years ago

Summary: Analysis plugins wokring on the same experiment may fail with a database contraint violationAnalysis plugins working on the same experiment may fail with a database constraint violation

comment:2 by Nicklas Nordborg, 18 years ago

Status: newassigned

comment:3 by Nicklas Nordborg, 18 years ago

Resolution: fixed
Status: assignedclosed

(In [2387]) Fixes #285: Analysis plugins working on the same experiment may fail with a database constraint violation

Note: See TracTickets for help on using tickets.