Skip to content

SQL unique index violation on mojito push #1033

@mensinda

Description

@mensinda

Hi,

I am getting the following error when pushing to a repository:

Push assets to repository: dlg-regel

 - Uploading: text/tup/std/webgui/dialoge/stdtwsregel/dialoge/regel.properties
 --> asset id: 315, task: 27416

Running, task id: 27416
Process asset content, id: 1600 (27417) Failed
An unexpected error happened, task=27417
Error stack
org.springframework.dao.DataIntegrityViolationException: could not execute statement [Duplicate entry '917f73050a443cfa3d3b6fe714dfdacf-122-315' for key 'tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID'] [insert into tm_text_unit (asset_id,comment,content,content_md5,created_by_user_id,created_date,md5,name,plural_form_id,plural_form_other,tm_id,word_count) values (?,?,?,?,?,?,?,?,?,?,?,?)]; SQL [insert into tm_text_unit (asset_id,comment,content,content_md5,created_by_user_id,created_date,md5,name,plural_form_id,plural_form_other,tm_id,word_count) values (?,?,?,?,?,?,?,?,?,?,?,?)]; constraint [tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID]
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:269)
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:229)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550)
        at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
        at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:243)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:164)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:244)
        at jdk.proxy2/jdk.proxy2.$Proxy223.save(Unknown Source)
        at com.box.l10n.mojito.service.tm.TMService.addTMTextUnit(TMService.java:273)
        at com.box.l10n.mojito.service.tm.TMService.addTMTextUnit(TMService.java:229)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.lambda$64(AssetExtractionService.java:978)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.lambda$63(AssetExtractionService.java:990)
        at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
        at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTmTextUnitsInTx_aroundBody16(AssetExtractionService.java:965)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$AjcClosure17.run(AssetExtractionService.java:1)
        at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96cproceed(AbstractTransactionAspect.aj:67)
        at org.springframework.transaction.aspectj.AbstractTransactionAspect$AbstractTransactionAspect$1.proceedWithInvocation(AbstractTransactionAspect.aj:73)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391)
        at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96c(AbstractTransactionAspect.aj:71)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTmTextUnitsInTx(AssetExtractionService.java:953)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.lambda$6(AssetExtractionService.java:464)
        at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:329)
        at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:209)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTextUnitsForNewContent_aroundBody8(AssetExtractionService.java:420)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$AjcClosure9.run(AssetExtractionService.java:1)
        at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:183)
        at com.box.l10n.mojito.aspect.TimedAspect.processWithTimer(TimedAspect.java:114)
        at com.box.l10n.mojito.aspect.TimedAspect.ajc$inlineAccessMethod$com_box_l10n_mojito_aspect_TimedAspect$com_box_l10n_mojito_aspect_TimedAspect$processWithTimer(TimedAspect.java:1)
        at com.box.l10n.mojito.aspect.TimedAspect.timedMethod(TimedAspect.java:88)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTextUnitsForNewContent_aroundBody10(AssetExtractionService.java:416)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$AjcClosure11.run(AssetExtractionService.java:1)
        at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:270)
        at com.box.l10n.mojito.service.pollableTask.PollableCallable.call(PollableCallable.java:50)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at com.box.l10n.mojito.service.pollableTask.PollableAspect.syncExecute(PollableAspect.java:111)
        at com.box.l10n.mojito.service.pollableTask.PollableAspect.ajc$inlineAccessMethod$com_box_l10n_mojito_service_pollableTask_PollableAspect$com_box_l10n_mojito_service_pollableTask_PollableAspect$syncExecute(PollableAspect.java:1)
        at com.box.l10n.mojito.service.pollableTask.PollableAspect.createPollableWrapper(PollableAspect.java:79)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTextUnitsForNewContent(AssetExtractionService.java:416)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.processAsset(AssetExtractionService.java:209)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:751)
        at org.springframework.retry.annotation.AnnotationAwareRetryOperationsInterceptor.invoke(AnnotationAwareRetryOperationsInterceptor.java:163)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:751)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$$SpringCGLIB$$0.processAsset(<generated>)
        at com.box.l10n.mojito.service.assetExtraction.ProcessAssetJob.call(ProcessAssetJob.java:18)
        at com.box.l10n.mojito.service.assetExtraction.ProcessAssetJob.call(ProcessAssetJob.java:1)
        at com.box.l10n.mojito.quartz.QuartzPollableJob.execute(QuartzPollableJob.java:93)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement [Duplicate entry '917f73050a443cfa3d3b6fe714dfdacf-122-315' for key 'tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID'] [insert into tm_text_unit (asset_id,comment,content,content_md5,created_by_user_id,created_date,md5,name,plural_form_id,plural_form_other,tm_id,word_count) values (?,?,?,?,?,?,?,?,?,?,?,?)]
        at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:60)
        at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
        at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:278)
        at org.hibernate.id.insert.GetGeneratedKeysDelegate.performInsert(GetGeneratedKeysDelegate.java:107)
        at org.hibernate.engine.jdbc.mutation.internal.MutationExecutorPostInsertSingleTable.execute(MutationExecutorPostInsertSingleTable.java:100)
        at org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:171)
        at org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:112)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2780)
        at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
        at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:676)
        at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:291)
        at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:272)
        at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:322)
        at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:363)
        at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:277)
        at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
        at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:140)
        at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:175)
        at org.hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:93)
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:77)
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:54)
        at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
        at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:755)
        at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:739)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311)
        at jdk.proxy2/jdk.proxy2.$Proxy213.persist(Unknown Source)
        at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:618)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:288)
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:136)
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:120)
        at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:516)
        at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:628)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:168)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:143)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:72)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
        ... 67 more
Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '917f73050a443cfa3d3b6fe714dfdacf-122-315' for key 'tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID'
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994)
        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:275)
        ... 112 more

  Extracting text units from asset (27418) Done
  Create new text units (27419) Failed
An unexpected error happened, task=27419
Error stack
org.springframework.dao.DataIntegrityViolationException: could not execute statement [Duplicate entry '917f73050a443cfa3d3b6fe714dfdacf-122-315' for key 'tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID'] [insert into tm_text_unit (asset_id,comment,content,content_md5,created_by_user_id,created_date,md5,name,plural_form_id,plural_form_other,tm_id,word_count) values (?,?,?,?,?,?,?,?,?,?,?,?)]; SQL [insert into tm_text_unit (asset_id,comment,content,content_md5,created_by_user_id,created_date,md5,name,plural_form_id,plural_form_other,tm_id,word_count) values (?,?,?,?,?,?,?,?,?,?,?,?)]; constraint [tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID]
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:269)
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:229)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550)
        at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
        at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:243)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:164)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:244)
        at jdk.proxy2/jdk.proxy2.$Proxy223.save(Unknown Source)
        at com.box.l10n.mojito.service.tm.TMService.addTMTextUnit(TMService.java:273)
        at com.box.l10n.mojito.service.tm.TMService.addTMTextUnit(TMService.java:229)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.lambda$64(AssetExtractionService.java:978)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.lambda$63(AssetExtractionService.java:990)
        at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
        at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTmTextUnitsInTx_aroundBody16(AssetExtractionService.java:965)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$AjcClosure17.run(AssetExtractionService.java:1)
        at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96cproceed(AbstractTransactionAspect.aj:67)
        at org.springframework.transaction.aspectj.AbstractTransactionAspect$AbstractTransactionAspect$1.proceedWithInvocation(AbstractTransactionAspect.aj:73)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391)
        at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96c(AbstractTransactionAspect.aj:71)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTmTextUnitsInTx(AssetExtractionService.java:953)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.lambda$6(AssetExtractionService.java:464)
        at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:329)
        at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:209)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTextUnitsForNewContent_aroundBody8(AssetExtractionService.java:420)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$AjcClosure9.run(AssetExtractionService.java:1)
        at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:183)
        at com.box.l10n.mojito.aspect.TimedAspect.processWithTimer(TimedAspect.java:114)
        at com.box.l10n.mojito.aspect.TimedAspect.ajc$inlineAccessMethod$com_box_l10n_mojito_aspect_TimedAspect$com_box_l10n_mojito_aspect_TimedAspect$processWithTimer(TimedAspect.java:1)
        at com.box.l10n.mojito.aspect.TimedAspect.timedMethod(TimedAspect.java:88)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTextUnitsForNewContent_aroundBody10(AssetExtractionService.java:416)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$AjcClosure11.run(AssetExtractionService.java:1)
        at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:270)
        at com.box.l10n.mojito.service.pollableTask.PollableCallable.call(PollableCallable.java:50)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at com.box.l10n.mojito.service.pollableTask.PollableAspect.syncExecute(PollableAspect.java:111)
        at com.box.l10n.mojito.service.pollableTask.PollableAspect.ajc$inlineAccessMethod$com_box_l10n_mojito_service_pollableTask_PollableAspect$com_box_l10n_mojito_service_pollableTask_PollableAspect$syncExecute(PollableAspect.java:1)
        at com.box.l10n.mojito.service.pollableTask.PollableAspect.createPollableWrapper(PollableAspect.java:79)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.createTextUnitsForNewContent(AssetExtractionService.java:416)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService.processAsset(AssetExtractionService.java:209)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:751)
        at org.springframework.retry.annotation.AnnotationAwareRetryOperationsInterceptor.invoke(AnnotationAwareRetryOperationsInterceptor.java:163)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:751)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703)
        at com.box.l10n.mojito.service.assetExtraction.AssetExtractionService$$SpringCGLIB$$0.processAsset(<generated>)
        at com.box.l10n.mojito.service.assetExtraction.ProcessAssetJob.call(ProcessAssetJob.java:18)
        at com.box.l10n.mojito.service.assetExtraction.ProcessAssetJob.call(ProcessAssetJob.java:1)
        at com.box.l10n.mojito.quartz.QuartzPollableJob.execute(QuartzPollableJob.java:93)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement [Duplicate entry '917f73050a443cfa3d3b6fe714dfdacf-122-315' for key 'tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID'] [insert into tm_text_unit (asset_id,comment,content,content_md5,created_by_user_id,created_date,md5,name,plural_form_id,plural_form_other,tm_id,word_count) values (?,?,?,?,?,?,?,?,?,?,?,?)]
        at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:60)
        at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
        at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:278)
        at org.hibernate.id.insert.GetGeneratedKeysDelegate.performInsert(GetGeneratedKeysDelegate.java:107)
        at org.hibernate.engine.jdbc.mutation.internal.MutationExecutorPostInsertSingleTable.execute(MutationExecutorPostInsertSingleTable.java:100)
        at org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:171)
        at org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:112)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2780)
        at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
        at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:676)
        at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:291)
        at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:272)
        at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:322)
        at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:363)
        at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:277)
        at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
        at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:140)
        at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:175)
        at org.hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:93)
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:77)
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:54)
        at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
        at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:755)
        at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:739)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311)
        at jdk.proxy2/jdk.proxy2.$Proxy213.persist(Unknown Source)
        at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:618)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:288)
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:136)
        at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:120)
        at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:516)
        at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:628)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:168)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:143)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:72)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
        ... 67 more
Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '917f73050a443cfa3d3b6fe714dfdacf-122-315' for key 'tm_text_unit.UK__TM_TEXT_UNIT__MD5__TM_ID__ASSET_ID'
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994)
        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:275)
        ... 112 more


An unexpected error happened, task=27417

This is using mojito with the latest commit on master and a total of 59 repositories. Sadly I am unable to provide a minimal reproducer for this error.


I connected to the DB and had a look at the data:

select * from tm_text_unit where md5 = '917f73050a443cfa3d3b6fe714dfdacf';

id  |created_date       |comment|content      |content_md5                     |md5                             |name                   |asset_id|created_by_user_id|tm_id|word_count|plural_form_other|plural_form_id|
----+-------------------+-------+-------------+--------------------------------+--------------------------------+-----------------------+--------+------------------+-----+----------+-----------------+--------------+
2965|2025-08-20 11:45:45|       |Regel anlegen|0ab555303b3b849658b2da53d64bfc43|917f73050a443cfa3d3b6fe714dfdacf|regelAnlegenPopup_title|     157|                 3|   62|         2|                 |              |
6113|2025-08-25 14:22:46|       |Regel anlegen|0ab555303b3b849658b2da53d64bfc43|917f73050a443cfa3d3b6fe714dfdacf|regelAnlegenPopup_title|     315|                 3|  122|         2|                 |              |

So from the looks of it, the entry in question definetely already exists!

Also, it is strange that there are 2 entries with the same hash. Both assets 157 and 315 have exactly the same path, however, asset 157 belongs to a different repository, which is deleted!

select * from asset where id in (157, 315);

id |created_date       |last_modified_date |content|content_md5|path                                                            |created_by_user_id|last_successful_asset_extraction_id|repository_id|deleted|virtual|
---+-------------------+-------------------+-------+-----------+----------------------------------------------------------------+------------------+-----------------------------------+-------------+-------+-------+
157|2025-08-20 11:45:45|2025-08-20 11:45:45|       |           |text/tup/std/webgui/dialoge/stdtwsregel/dialoge/regel.properties|                 3|                               1474|           62|      0|      0|
315|2025-08-25 14:22:46|2025-08-25 14:22:46|       |           |text/tup/std/webgui/dialoge/stdtwsregel/dialoge/regel.properties|                 3|                               1898|          122|      0|      0|
select * from repository where id in (62, 122);

id |created_date       |last_modified_date |description|drop_exporter_type|name                             |created_by_user_id|repository_statistic_id|tm_id|deleted|checksla|source_locale_id|manual_screenshot_run_id|
---+-------------------+-------------------+-----------+------------------+---------------------------------+------------------+-----------------------+-----+-------+--------+----------------+------------------------+
 62|2025-08-20 11:00:54|2025-08-25 14:09:28|           |FILE_SYSTEM       |deleted__1756130968158__dlg-regel|                 3|                     62|   62|      1|       0|             836|                      62|
122|2025-08-25 14:17:24|2025-08-25 14:17:24|           |FILE_SYSTEM       |dlg-regel                        |                 3|                    122|  122|      0|       0|             836|                     122|

Does that mean mojito doesn't clean up deleted repositories? How do I get rid of all the deleted stuff?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions