Tôi đang thấy stacktrace (cắt ngắn) sau trong tệp server.log của JBoss 7.1.1 Final:
Caused by: org.postgresql.util.PSQLException:
ERROR: current transaction is aborted, commands ignored until end of
transaction block
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_23]
at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:455)
at $Proxy49.executeUpdate(Unknown Source) at org.jboss.jca.adapters.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:371)
at org.infinispan.loaders.jdbc.TableManipulation.executeUpdateSql(TableManipulation.java:154) [infinispan-cachestore-jdbc-5.1.2.FINAL.jar:5.1.2.FINAL]
... 154 more
Kiểm tra tệp nhật ký Postgres cho thấy các tuyên bố sau:
STATEMENT: SELECT count(*) FROM ISPN_MIXED_BINARY_TABLE_configCache
ERROR: current transaction is aborted, commands ignored until end of transaction block
STATEMENT: CREATE TABLE ISPN_MIXED_BINARY_TABLE_configCache(ID_COLUMN VARCHAR(255) NOT NULL, DATA_COLUMN BYTEA, TIMESTAMP_COLUMN BIGINT, PRIMARY KEY (ID_COLUMN))
ERROR: relation "ispn_mixed_binary_table_configcache" does not exist at character 22
Tôi đang sử dụng Infinispan được gửi cùng với JBoss 7.1.1 Final, là 5.1.2.Final.
Vì vậy, đây là những gì tôi nghĩ đang xảy ra:
- Infinispan cố gắng chạy
SELECT count(*)...
câu lệnh để xem có bản ghi nào trongISPN_MIXED_BINARY_TABLE_configCache
; - Postgres, vì một số lý do, không thích tuyên bố này.
- Infinispan bỏ qua điều này và cày trước với
CREATE TABLE
tuyên bố. - Postgres barfs vì nó vẫn nghĩ rằng đó là cùng một giao dịch, mà Infinispan đã thất bại trong việc quay lại và giao dịch này bị hủy bỏ từ
SELECT count(*)...
tuyên bố đầu tiên .
Lỗi này có ý nghĩa gì và có ý tưởng nào để khắc phục nó không?
PSQLException: current transaction is aborted...
(25P02
) và có thểJPA
hoặcHibernate
. Cuối cùng, đó là do việc sử dụng Logback (tốt đẹp!) Của chúng tôi được cung cấp với mộttoString()
đối tượng DAO được tải quá mức gây ra lỗi và bị nuốt một cách độc đáo (nhưng không được tôi chú ý):log.info( "bla bla: {}", obj )
được sản xuấtbla bla: [FAILED toString()]
. thay đổi nó đểlog.info( "bla bla: {}", String.valueOf( obj )
làm cho nó an toàn, nhưng không nuốt nó và do đó khiến giao dịch mở không thành công trên một truy vấn không liên quan.