Thread: JDBC error: Unexpected packet type: 25
Hello, I'm sometimes getting this error from the PostgreSQL JDBC driver (version 42.2.10): java.io.IOException: Unexpected packet type: 25 (Full stack trace at the end of this message). Looks a lot like a bug or a version mismatch. The latter is unlikely since the driver is relatively new but the server is a bit older (11.4). If it were a bug I would expect more people to reproduce it, but I haven't found anything on google (the only result is not even about PostgreSQL). For the moment I have no idea how to reproduce this error. It appears to happen just randomly. I'd like to know if someone can suggest a way to gather more information so I can eventually turn it into reproducible steps and fill a bug report. Also, can pg_bouncer be related? Thanks. Ignacio Stack trace: org.hibernate.TransactionException: commit failed at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:185) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] (8 stack frames of custom application software omitted) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_191] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_191] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191] Caused by: org.hibernate.TransactionException: unable to commit against JDBC connection at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:116) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:178) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] ... 13 more Caused by: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:338) ~[postgresql-42.2.10.jar:42.2.10] at org.postgresql.jdbc.PgConnection.executeTransactionCommand(PgConnection.java:829) ~[postgresql-42.2.10.jar:42.2.10] at org.postgresql.jdbc.PgConnection.commit(PgConnection.java:851) ~[postgresql-42.2.10.jar:42.2.10] at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:112) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:178) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] ... 13 more Caused by: java.io.IOException: Unexpected packet type: 25 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2395) ~[postgresql-42.2.10.jar:42.2.10] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:311) ~[postgresql-42.2.10.jar:42.2.10] at org.postgresql.jdbc.PgConnection.executeTransactionCommand(PgConnection.java:829) ~[postgresql-42.2.10.jar:42.2.10] at org.postgresql.jdbc.PgConnection.commit(PgConnection.java:851) ~[postgresql-42.2.10.jar:42.2.10] at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:112) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:178) ~[hibernate-core-4.1.4.Final.jar:4.1.4.Final] ... 13 more => select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 11.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit (1 row)
" java.io.IOException: Unexpected packet type: 25"
char 25 is EM. ( End of Medium)
I do not see it being part of the wire protocol, as for the same reason, not in pgjdbc handling i think.
I may be diverting that may not be related but a few things, just in case.
1) we once had a scenario of a bad nic driver e1000, that resulted in a lot of pkt losses.
We figured out there were too many pkt drops and upgraded the driver to vmnet or something.
2)You should also raise the same with pgjdbc. I see they have resolved issues with other mismatched packet types like 52 at their end.
3) I have had some arguments wrt pgjdbc/npgsql having issues with pgbouncer and not with postgresql directly. I counter by running the same queries using psql with pgbouncer. never got an error. But I am not an expert with Java so I keep an open mind and also raise this with the driver owners just in case as well as pgbouncer. else it is a deadlock :)
although this one is different issue, can you reproduce this case like above ?