Exception when importing projects from YouTrack (constraint exception, duplicate entry for linked issues) (OD-1066)
wojtek opened 3 years ago

SQLIntegrityConstraintViolationException: Duplicate entry '5572-5571-3' for key 'o_IssueLink.UK8ai6ka1c9ohy0p7ce1why5i11'

Unfortunately, the error log is very uninformative: there is no indication which project/issue caused the problem or which linking triggered it.

org.hibernate.exception.ConstraintViolationException: could not execute statement
    	at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59)
    	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
    	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
    	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200)
    	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3301)
    	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3828)
    	at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:107)
    	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
    	at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478)
    	at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
    	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475)
    	at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:348)
    	at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:57)
    	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102)
    	at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1327)
    	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1870)
    	at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:370)
    	at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:392)
    	at io.onedev.server.persistence.dao.DefaultDao.find(DefaultDao.java:87)
    	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
    	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:90)
    	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
    	at jdk.internal.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:50)
    	at com.sun.proxy.$Proxy27.find(Unknown Source)
    	at io.onedev.server.persistence.dao.BaseEntityManager.find(BaseEntityManager.java:85)
    	at io.onedev.server.entitymanager.impl.DefaultIssueManager.find(DefaultIssueManager.java:233)
    	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
    	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:90)
    	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
    	at io.onedev.server.plugin.imports.youtrack.ImportServer$6.consume(ImportServer.java:462)
    	at io.onedev.server.plugin.imports.youtrack.ImportServer.list(ImportServer.java:1135)
    	at io.onedev.server.plugin.imports.youtrack.ImportServer.importIssues(ImportServer.java:1001)
    	at io.onedev.server.plugin.imports.youtrack.ImportServer.importProjects(ImportServer.java:1101)
    	at io.onedev.server.plugin.imports.youtrack.YouTrackProjectImporter.doImport(YouTrackProjectImporter.java:78)
    	at io.onedev.server.web.page.project.imports.ProjectImportPage$1$1$1.call(ProjectImportPage.java:79)
    	at io.onedev.server.web.page.project.imports.ProjectImportPage$1$1$1.call(ProjectImportPage.java:75)
    	at io.onedev.server.persistence.DefaultTransactionManager$1.call(DefaultTransactionManager.java:72)
    	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:90)
    	at io.onedev.server.persistence.DefaultTransactionManager.call(DefaultTransactionManager.java:60)
    	at io.onedev.server.web.page.project.imports.ProjectImportPage$1$1.runTask(ProjectImportPage.java:75)
    	at io.onedev.server.web.component.taskbutton.TaskButton$2.call(TaskButton.java:173)
    	at io.onedev.server.web.component.taskbutton.TaskButton$2.call(TaskButton.java:144)
    	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    	at io.onedev.server.security.SecurityUtils$1.run(SecurityUtils.java:367)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    	at java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '5572-5571-3' for key 'o_IssueLink.UK8ai6ka1c9ohy0p7ce1why5i11'
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1114)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1062)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1383)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1047)
    	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
    	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
    	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197)
    	... 46 more
    ```
  • wojtek commented 3 years ago

    When I removed Depend from the list of mappings the issue went away (I only left Relates, Duplicate and Subtask). Not sure how the names are populated/detected though...

  • OneDev changed state to 'Closed' 3 years ago
    Previous Value Current Value
    Open
    Closed
  • OneDev commented 3 years ago

    State changed as code fixing the issue is committed

  • OneDev changed state to 'Released' 3 years ago
    Previous Value Current Value
    Closed
    Released
  • OneDev commented 3 years ago

    State changed as build #3255 is successful

  • wojtek changed state to 'Open' 3 years ago
    Previous Value Current Value
    Released
    Open
  • wojtek commented 3 years ago

    After the upgrade and trying to run the upgrade I got another exception:

    org.hibernate.TransactionException: Unable to rollback against JDBC Connection
        	at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:127)
        	at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:304)
        	at org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:142)
        	at io.onedev.server.persistence.DefaultTransactionManager$1.call(DefaultTransactionManager.java:76)
        	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:90)
        	at io.onedev.server.persistence.DefaultTransactionManager.call(DefaultTransactionManager.java:60)
        	at io.onedev.server.web.page.project.imports.ProjectImportPage$1$1.runTask(ProjectImportPage.java:75)
        	at io.onedev.server.web.component.taskbutton.TaskButton$2.call(TaskButton.java:173)
        	at io.onedev.server.web.component.taskbutton.TaskButton$2.call(TaskButton.java:144)
        	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        	at io.onedev.server.security.SecurityUtils$1.run(SecurityUtils.java:367)
        	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        	at java.base/java.lang.Thread.run(Thread.java:829)
        Caused by: java.sql.SQLException: Connection is closed
        	at com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection.lambda$getClosedConnection$0(ProxyConnection.java:490)
        	at com.sun.proxy.$Proxy114.rollback(Unknown Source)
        	at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:377)
        	at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java)
        	at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:121)
        	... 13 more
    

    Looks like (other) hidden error that caused rolback to fail...

    Removing Depend allowed to proceed with import

  • Robin Shen commented 3 years ago

    Are you able to reproduce this issue with a simple YouTrack setup? This will help a lot to find out the reason.

  • wojtek commented 3 years ago

    Unfortunately it happens only on our YouTrack setup and only about halfway through the import process. I guess there is some project with some issue that has weird linking that triggers the exception. There is no error message that includes project name / issue name|number that would help me track down offending item.

  • Robin Shen commented 3 years ago

    Logging project/issue does not help here as it happens when committing the transaction with all imported issues.

  • Robin Shen changed state to 'Closed' 3 years ago
    Previous Value Current Value
    Open
    Closed
  • Robin Shen commented 3 years ago

    Closed as can not be reproduced. Feel free to reopen if there is more clue

issue 1/1
Type
Bug
Priority
Normal
Assignee
Affected Versions
Not Found
Issue Votes (0)
Watchers (4)
Reference
OD-1066
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover