[ http://jira.codehaus.org/browse/MRM-369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_99326 ]
Joakim Erdfelt commented on MRM-369: ------------------------------------ This jira is the same one that causes the following stack trace ... {code} ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'ARCHIVA_ARTIFV6_PK' defined on 'ARCHIVA_ARTIFACT'. at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown Source) at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown Source) at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown Source) at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown Source) at org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source) at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown Source) at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source) at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101) at org.jpox.store.rdbms.RDBMSManager.executeStatementUpdate(RDBMSManager.java:572) at org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:328) at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2519) at org.jpox.store.StoreManager.insert(StoreManager.java:920) at org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3667) at org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3646) at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1198) at org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1261) at org.apache.maven.archiva.database.jdo.JdoAccess.saveObject(JdoAccess.java:192) at org.apache.maven.archiva.database.jdo.JdoAccess.saveObject(JdoAccess.java:165) at org.apache.maven.archiva.database.jdo.JdoArtifactDAO.saveArtifact(JdoArtifactDAO.java:110) at org.apache.maven.archiva.consumers.database.ArtifactUpdateDatabaseConsumer.processFile(ArtifactUpdateDatabaseConsumer.java:195) at org.apache.maven.archiva.repository.scanner.functors.ConsumerProcessFileClosure.execute(ConsumerProcessFileClosure.java:57) at org.apache.commons.collections.functors.IfClosure.execute(IfClosure.java:117) at org.apache.commons.collections.CollectionUtils.forAllDo(CollectionUtils.java:388) at org.apache.maven.archiva.repository.scanner.RepositoryScannerInstance.directoryWalkStep(RepositoryScannerInstance.java:127) at org.codehaus.plexus.util.DirectoryWalker.fireStep(DirectoryWalker.java:173) at org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:391) at org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) at org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) at org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) at org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) at org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) at org.codehaus.plexus.util.DirectoryWalker.scan(DirectoryWalker.java:344) at org.apache.maven.archiva.repository.scanner.DefaultRepositoryScanner.scan(DefaultRepositoryScanner.java:126) at org.apache.maven.archiva.repository.scanner.DefaultRepositoryScanner.scan(DefaultRepositoryScanner.java:65) at org.apache.maven.archiva.scheduled.executors.ArchivaRepositoryScanningTaskExecutor.executeTask(ArchivaRepositoryScanningTaskExecutor.java:105) at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable$1.run(ThreadedTaskQueueExecutor.java:116) at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) at java.lang.Thread.run(Thread.java:595) {code} > [Repository Scanning] Exception on update to pre-existing artifact. > ------------------------------------------------------------------- > > Key: MRM-369 > URL: http://jira.codehaus.org/browse/MRM-369 > Project: Archiva > Issue Type: Bug > Components: repository scanning > Affects Versions: 1.0-alpha-1 > Reporter: Joakim Erdfelt > Priority: Blocker > Fix For: 1.0-alpha-2 > > > When scanning a repository that has an artifact that has been updated on > disk, and exists in the database already, the following exception occurs. > {code} > com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: > Duplicate entry 'commons-httpclient--commons-httpclient-jar-2.0.2' for key 1 > at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931) > at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870) > at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) > at > com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169) > at > com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693) > at > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404) > at > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318) > at > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303) > at > org.jpox.store.rdbms.RDBMSManager.executeStatementUpdate(RDBMSManager.java:572) > at > org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:328) > at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2519) > at org.jpox.store.StoreManager.insert(StoreManager.java:920) > at > org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3667) > at > org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3646) > at > org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1198) > at > org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1261) > at > org.apache.maven.archiva.database.jdo.JdoAccess.saveObject(JdoAccess.java:196) > at > org.apache.maven.archiva.database.jdo.JdoAccess.saveObject(JdoAccess.java:169) > at > org.apache.maven.archiva.database.jdo.JdoArtifactDAO.saveArtifact(JdoArtifactDAO.java:110) > at > org.apache.maven.archiva.consumers.database.ArtifactUpdateDatabaseConsumer.processFile(ArtifactUpdateDatabaseConsumer.java:195) > at > org.apache.maven.archiva.repository.scanner.functors.ConsumerProcessFileClosure.execute(ConsumerProcessFileClosure.java:57) > at > org.apache.commons.collections.functors.IfClosure.execute(IfClosure.java:117) > at > org.apache.commons.collections.CollectionUtils.forAllDo(CollectionUtils.java:388) > at > org.apache.maven.archiva.repository.scanner.RepositoryScannerInstance.directoryWalkStep(RepositoryScannerInstance.java:127) > at > org.codehaus.plexus.util.DirectoryWalker.fireStep(DirectoryWalker.java:173) > at > org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:391) > at > org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) > at > org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) > at > org.codehaus.plexus.util.DirectoryWalker.scanDir(DirectoryWalker.java:385) > at > org.codehaus.plexus.util.DirectoryWalker.scan(DirectoryWalker.java:344) > at > org.apache.maven.archiva.repository.scanner.DefaultRepositoryScanner.scan(DefaultRepositoryScanner.java:126) > at > org.apache.maven.archiva.repository.scanner.DefaultRepositoryScanner.scan(DefaultRepositoryScanner.java:65) > at > org.apache.maven.archiva.scheduled.executors.ArchivaRepositoryScanningTaskExecutor.executeTask(ArchivaRepositoryScanningTaskExecutor.java:105) > at > org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable$1.run(ThreadedTaskQueueExecutor.java:116) > at > edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) > at > edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:987) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:528) > at java.lang.Thread.run(Thread.java:595) > {code} > Need logic to prevent the Table constraint violation. > To update the table entry if it exists. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira