Vlad Canţîru
unread,Nov 10, 2011, 3:50:04 PM11/10/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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