Issue 2383: Changes stuck in "Submitted, Merge Pending", Duplicate entry error reported
Status:  Released
Owner: ----
Closed:  Jul 2014
Reported by l...@diamand.org, Jan 6, 2014
************************************************************
***** NOTE: THIS BUG TRACKER IS FOR GERRIT CODE REVIEW *****
***** DO NOT SUBMIT BUGS FOR CHROME, ANDROID, INTERNAL *****
***** ISSUES WITH YOUR COMPANY'S GERRIT SETUP, ETC.    *****
***** THOSE ISSUE BELONG IN DIFFERENT ISSUE TRACKERS!  *****
************************************************************

Affected Version:

What steps will reproduce the problem?
1.Normal use, submitting changes for review/merging/etc
2.
3.

What is the expected output? What do you see instead?
Sometimes, we end up with one or more changes stuck with "Submitted, Merge Pending". These changes only depend on already-merged commits.

Looking in the error log, we see this:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '9103-2-1' for key 'PRIMARY'
        at sun.reflect.GeneratedConstructorAccessor569.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2006)
        ... 67 more
[2014-01-06 18:07:25,917] ERROR com.google.gerrit.server.git.ChangeMergeQueue : Merge attempt for my_project,refs/heads/master failed
com.google.gerrit.server.git.MergeException: Cannot merge d0ea6bc7f73f01f29359b37679d7b34c708e1a30
        at com.google.gerrit.server.git.CherryPick._run(CherryPick.java:124)
        at com.google.gerrit.server.git.SubmitStrategy.run(SubmitStrategy.java:99)
        at com.google.gerrit.server.git.MergeOp.preMerge(MergeOp.java:380)
        at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:285)
        at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:207)
        at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:204)
        at com.google.gerrit.server.util.RequestScopePropagator$5.call(RequestScopePropagator.java:222)
        at com.google.gerrit.server.util.RequestScopePropagator$4.call(RequestScopePropagator.java:201)
        at com.google.gerrit.server.git.PerThreadRequestScope$Propagator$1.call(PerThreadRequestScope.java:75)
        at com.google.gerrit.server.git.ChangeMergeQueue.mergeImpl(ChangeMergeQueue.java:204)
        at com.google.gerrit.server.git.ChangeMergeQueue.access$200(ChangeMergeQueue.java:53)
        at com.google.gerrit.server.git.ChangeMergeQueue$MergeEntry.run(ChangeMergeQueue.java:247)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
        at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:337)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
Please provide any additional information below.



Jan 6, 2014
#1 l...@diamand.org
gerrit> select * from patch_set_ancestors where change_id = 9103;
 ancestor_revision                        | change_id | patch_set_id | position
 -----------------------------------------+-----------+--------------+---------
 4cf4ea3a7abfefe6446e5cb682e96d42ca21cd9e | 9103      | 1            | 1
 f24f8e09eba6be5dc3e708f1447c13c06d5ee55b | 9103      | 2            | 1
(2 rows; 0 ms)

gerrit> select * from patch_sets where change_id = 9103 and patch_set_id = 2;
 revision                                 | uploader_account_id | created_on            | draft | change_id | patch_set_id
 -----------------------------------------+---------------------+-----------------------+-------+-----------+-------------
2495ba5395b05ecc00d285aa002c4def12fbbf90 | 266                 | 2014-01-03 11:51:22.0 | N     | 9103      | 1
308bf9af84c212a710d6630ccfc127888566ee29 | 266                 | 2014-01-03 12:14:40.0 | N     | 9103      | 2

Mar 20, 2014
#2 mai...@jamesfry.com
We see this error from time to time. We are using postgresql rather than mysql.

[2014-03-20 15:50:51,857] ERROR com.google.gerrit.server.git.ChangeMergeQueue : Merge attempt for myproj,refs/heads/master failed
com.google.gerrit.server.git.MergeException: Cannot merge b18403da53e84df331b013007679fe1596cb8697
        at com.google.gerrit.server.git.CherryPick._run(CherryPick.java:124)
        at com.google.gerrit.server.git.SubmitStrategy.run(SubmitStrategy.java:103)
        at com.google.gerrit.server.git.MergeOp.preMerge(MergeOp.java:351)
        at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:247)
        at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:208)
        at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:205)
        at com.google.gerrit.server.util.RequestScopePropagator$5.call(RequestScopePropagator.java:222)
        at com.google.gerrit.server.util.RequestScopePropagator$4.call(RequestScopePropagator.java:201)
        at com.google.gerrit.server.git.PerThreadRequestScope$Propagator$1.call(PerThreadRequestScope.java:75)
        at com.google.gerrit.server.git.ChangeMergeQueue.mergeImpl(ChangeMergeQueue.java:205)
        at com.google.gerrit.server.git.ChangeMergeQueue.merge(ChangeMergeQueue.java:125)
        at com.google.gerrit.server.change.Submit.apply(Submit.java:122)
        at com.google.gerrit.server.change.Submit.apply(Submit.java:56)
        at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:304)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:278)
        at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:268)
        at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:180)
        at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
        at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:70)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:113)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.RequireSslFilter.doFilter(RequireSslFilter.java:68)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:64)
        at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:57)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)
        at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:132)
        at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:129)
        at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:206)
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:129)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:365)
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
        at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:724)
Caused by: com.google.gwtorm.server.OrmDuplicateKeyException: patch_set_ancestors
        at com.google.gwtorm.schema.sql.DialectPostgreSQL.convertError(DialectPostgreSQL.java:58)
        at com.google.gwtorm.jdbc.JdbcAccess.convertError(JdbcAccess.java:448)
        at com.google.gwtorm.jdbc.JdbcAccess.insert(JdbcAccess.java:160)
        at com.google.gerrit.server.git.CherryPick.insertAncestors(CherryPick.java:207)
        at com.google.gerrit.server.git.CherryPick.writeCherryPickCommit(CherryPick.java:165)
        at com.google.gerrit.server.git.CherryPick._run(CherryPick.java:84)
        ... 56 more
Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO patch_set_ancestors(ancestor_revision,change_id,patch_set_id,position)VALUES('d71939b77511f4b15e222097b485fbc828db2c6b','4619','3','1')
was aborted.  Call getNextException to see the cause.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1837)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2754)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at com.google.gwtorm.schema.sql.SqlDialect.executeBatch(SqlDialect.java:390)
        at com.google.gwtorm.jdbc.JdbcAccess.execute(JdbcAccess.java:438)
        at com.google.gwtorm.jdbc.JdbcAccess.insertAsBatch(JdbcAccess.java:202)
        at com.google.gwtorm.jdbc.JdbcAccess.insert(JdbcAccess.java:155)
        ... 59 more
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "patch_set_ancestors_pkey"
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
        ... 67 more


gerrit> select * from patch_set_ancestors where change_id = 4619;
 ancestor_revision                        | change_id | patch_set_id | position
 -----------------------------------------+-----------+--------------+---------
 25fc5803cc2444673f7bd33b43395297f8fee73d | 4619      | 1            | 1
 25fc5803cc2444673f7bd33b43395297f8fee73d | 4619      | 2            | 1
 d71939b77511f4b15e222097b485fbc828db2c6b | 4619      | 3            | 1
 d71939b77511f4b15e222097b485fbc828db2c6b | 4619      | 4            | 1
(4 rows; 9 ms)
gerrit> select * from patch_sets where change_id = 4619;
 revision                                 | uploader_account_id | created_on                 | draft | change_id | patch_set_id
 -----------------------------------------+---------------------+----------------------------+-------+-----------+-------------
 9730af0281be3162a278b42377f54b1a0a1edae8 | 1000021             | 2014-03-20 11:21:31.143+00 | N     | 4619      | 1
 b18403da53e84df331b013007679fe1596cb8697 | 1000000             | 2014-03-20 12:10:24.035+00 | N     | 4619      | 2
 148a19e7a124f9d8c68b8b17f76ad030475988a3 | 1000004             | 2014-03-20 12:10:35.931+00 | N     | 4619      | 3
 7ef66e017bb4a4032a68a412e5c3dccbfd7da70a | 1000004             | 2014-03-20 15:53:25.87+00  | N     | 4619      | 4
(4 rows; 1 ms)



May 16, 2014
#3 nthieb...@gmail.com
We are seeing this bug regularly ever since we upgraded from 2.6 to 2.8.. running 2.8.3 now...

[2014-05-16 15:28:26,148] ERROR com.google.gerrit.server.git.ChangeMergeQueue : Merge attempt for core,refs/heads/libreoffice-4-2 failed
com.google.gerrit.server.git.MergeException: Cannot merge 0d3120b25b17ed10cf521563eedd25119dea912e
	at com.google.gerrit.server.git.CherryPick._run(CherryPick.java:123)
	at com.google.gerrit.server.git.SubmitStrategy.run(SubmitStrategy.java:103)
	at com.google.gerrit.server.git.MergeOp.preMerge(MergeOp.java:351)
	at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:247)
	at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:208)
	at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:205)
	at com.google.gerrit.server.util.RequestScopePropagator$5.call(RequestScopePropagator.java:222)
	at com.google.gerrit.server.util.RequestScopePropagator$4.call(RequestScopePropagator.java:201)
	at com.google.gerrit.server.git.PerThreadRequestScope$Propagator$1.call(PerThreadRequestScope.java:75)
	at com.google.gerrit.server.git.ChangeMergeQueue.mergeImpl(ChangeMergeQueue.java:205)
	at com.google.gerrit.server.git.ChangeMergeQueue.access$200(ChangeMergeQueue.java:54)
	at com.google.gerrit.server.git.ChangeMergeQueue$MergeEntry.run(ChangeMergeQueue.java:248)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
	at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:360)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
Caused by: com.google.gwtorm.server.OrmDuplicateKeyException: patch_set_ancestors
	at com.google.gwtorm.schema.sql.DialectPostgreSQL.convertError(DialectPostgreSQL.java:58)
	at com.google.gwtorm.jdbc.JdbcAccess.convertError(JdbcAccess.java:448)
	at com.google.gwtorm.jdbc.JdbcAccess.insert(JdbcAccess.java:160)
	at com.google.gerrit.server.git.CherryPick.insertAncestors(CherryPick.java:206)
	at com.google.gerrit.server.git.CherryPick.writeCherryPickCommit(CherryPick.java:164)
	at com.google.gerrit.server.git.CherryPick._run(CherryPick.java:83)
	... 19 more
Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO patch_set_ancestors(ancestor_revision,change_id,patch_set_id,position)VALUES('181084cb110fefb13200d8a645bca9857964f378','9375','2','1') was aborted.  Call getNextException to see the cause.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1837)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2754)
	at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	at com.google.gwtorm.schema.sql.SqlDialect.executeBatch(SqlDialect.java:390)
	at com.google.gwtorm.jdbc.JdbcAccess.execute(JdbcAccess.java:438)
	at com.google.gwtorm.jdbc.JdbcAccess.insertAsBatch(JdbcAccess.java:202)
	at com.google.gwtorm.jdbc.JdbcAccess.insert(JdbcAccess.java:155)
	... 22 more
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "patch_set_ancestors_pkey"
  Detail: Key (change_id, patch_set_id, "position")=(9375, 2, 1) already exists.
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
	... 30 more


A 'work around' is to push the said patch directly and abandon it in gerrit.
Note: this seems to be triggered by dependent patch.. the first one is cherry picked... and show as a merge/outdated dependent of a second patch.. when cherry picking the second patch, it get stuck.
I can't affirm that it is _always_ triggered, but every instance I saw that was triggering that bug seems to follow that pattern.

 
May 16, 2014
#4 nthieb...@gmail.com
btw: we are using postgres too... and the severity is not 'minor'. database integrity bug are not minor I think.
Jun 12, 2014
Project Member #5 David.Os...@gmail.com
https://gerrit-review.googlesource.com/57825
Status: ChangeUnderReview
Labels: -Priority-Minor Priority-Major
Jul 25, 2014
#7 icee...@googlemail.com
releated to 2034 ?
Jul 25, 2014
Project Member #8 David.Os...@gmail.com
(No comment was entered for this change.)
Status: Released
Labels: FixedIn-2.8
Feb 4, 2015
#9 bhha...@gmail.com
I upgraded to 2.9.4 and still face the exact issue. 

[2015-02-04 03:25:56,277] ERROR com.google.gerrit.server.git.ChangeMergeQueue : Merge attempt for $repo,refs/heads/$branch failed
com.google.gerrit.server.git.MergeException: Cannot merge cc1d54addaaccb6526d657d96114e988612ca985
        at com.google.gerrit.server.git.strategy.CherryPick._run(CherryPick.java:126)
        at com.google.gerrit.server.git.strategy.SubmitStrategy.run(SubmitStrategy.java:115)
        at com.google.gerrit.server.git.MergeOp.preMerge(MergeOp.java:363)
        at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:251)
        at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:210)
        at com.google.gerrit.server.git.ChangeMergeQueue$2.call(ChangeMergeQueue.java:207)
        at com.google.gerrit.server.util.RequestScopePropagator$5.call(RequestScopePropagator.java:222)
        at com.google.gerrit.server.util.RequestScopePropagator$4.call(RequestScopePropagator.java:201)
        at com.google.gerrit.server.git.PerThreadRequestScope$Propagator$1.call(PerThreadRequestScope.java:75)
        at com.google.gerrit.server.git.ChangeMergeQueue.mergeImpl(ChangeMergeQueue.java:207)
        at com.google.gerrit.server.git.ChangeMergeQueue.access$200(ChangeMergeQueue.java:54)
        at com.google.gerrit.server.git.ChangeMergeQueue$MergeEntry.run(ChangeMergeQueue.java:250)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:364)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: com.google.gwtorm.server.OrmDuplicateKeyException: patch_set_ancestors
        at com.google.gwtorm.schema.sql.DialectMySQL.convertError(DialectMySQL.java:225)
        at com.google.gwtorm.jdbc.JdbcAccess.convertError(JdbcAccess.java:457)
        at com.google.gwtorm.jdbc.JdbcAccess.insert(JdbcAccess.java:169)
        at com.google.gerrit.server.git.strategy.CherryPick.insertAncestors(CherryPick.java:223)
        at com.google.gerrit.server.git.strategy.CherryPick.writeCherryPickCommit(CherryPick.java:174)
        at com.google.gerrit.server.git.strategy.CherryPick._run(CherryPick.java:88)
        ... 19 more
Caused by: java.sql.BatchUpdateException: Duplicate entry '676525-2-1' for key 'PRIMARY'
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2054)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1467)
        at com.google.gwtorm.schema.sql.SqlDialect.executeBatch(SqlDialect.java:420)
        at com.google.gwtorm.jdbc.JdbcAccess.execute(JdbcAccess.java:447)
        at com.google.gwtorm.jdbc.JdbcAccess.insertAsBatch(JdbcAccess.java:211)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '676525-2-1' for key 'PRIMARY'
        at sun.reflect.GeneratedConstructorAccessor257.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2006)
        ... 27 more


We are also using the cherry-pick as submit strategy. Is there any permanent fix for this. 
Nov 18, 2015
#10 malape...@gmail.com
We had the same issue with version 2.11.2
See https://bugs.eclipse.org/bugs/show_bug.cgi?id=482519