duplicate key value violates unique constraint "patch_set_ancestors_pkey"

456 views
Skip to first unread message

Vlad Canţîru

unread,
Nov 10, 2011, 3:50:04 PM11/10/11
to repo-d...@googlegroups.com
Hi,

We migrated H2 DB to PostgreSQL several days ago . After migration everything worked well: clone, push, review....
However few days later some users started to complain that they can not push anymore.
For some reason Gerrit tries to insert in patch_set_ancestors table using an existing change_id

Any idea of what might be the cause of this odd behavior?
See error below.


[2011-11-10 15:29:43,438] ERROR com.google.gerrit.server.git.ReceiveCommits : Error creating change for commit 8b75df2ed2efed687e840938c58fcc016bc658
e3
com.google.gwtorm.client.OrmDuplicateKeyException: patch_set_ancestors
        at com.google.gwtorm.schema.sql.DialectPostgreSQL.convertError(DialectPostgreSQL.java:53)
        at com.google.gwtorm.jdbc.JdbcAccess.convertError(JdbcAccess.java:331)
        at com.google.gwtorm.jdbc.JdbcAccess.doInsert(JdbcAccess.java:178)
        at com.google.gwtorm.jdbc.JdbcAccess.doInsert(JdbcAccess.java:35)
        at com.google.gwtorm.client.impl.AbstractAccess.insert(AbstractAccess.java:56)
        at com.google.gerrit.server.git.ReceiveCommits.insertAncestors(ReceiveCommits.java:1913)
        at com.google.gerrit.server.git.ReceiveCommits.createChange(ReceiveCommits.java:1035)
        at com.google.gerrit.server.git.ReceiveCommits.createNewChanges(ReceiveCommits.java:978)
        at com.google.gerrit.server.git.ReceiveCommits.onPreReceive(ReceiveCommits.java:357)
        at org.eclipse.jgit.transport.ReceivePack.executeCommands(ReceivePack.java:1027)
        at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:680)
        at org.eclipse.jgit.transport.ReceivePack.receive(ReceivePack.java:600)
        at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:90)
        at com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:103)
        at com.google.gerrit.sshd.AbstractGitCommand.access$000(AbstractGitCommand.java:34)
        at com.google.gerrit.sshd.AbstractGitCommand$1.run(AbstractGitCommand.java:69)
        at com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:399)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
        at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:324)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO patch_set_ancestors(ancestor_revision,change_id,patch_set_id,position)VALUES('7e2
7ab472af09cd111f914c3a886e767ecc75152','65','1','1') was aborted.  Call getNextException to see the cause.

        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2598)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2737)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at com.google.gwtorm.jdbc.JdbcAccess.execute(JdbcAccess.java:293)
        at com.google.gwtorm.jdbc.JdbcAccess.doInsert(JdbcAccess.java:171)
        ... 23 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")=(65, 1, 1) already exists.
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
        ... 29 more

Thanks,
Vlad

Vlad Canţîru

unread,
Nov 10, 2011, 8:21:29 PM11/10/11
to repo-d...@googlegroups.com
Problem fixed.
I had to update sequence numbers in PostgreSQL.

/V.
Reply all
Reply to author
Forward
0 new messages