[#1011116] Need more detail on "An attempt was made to call a PostgreSQL backend function after an elog(ERROR) had been issued" exception

View Trackers | Feature Requests | Download .csv | Monitor

Date:
2011-11-13 12:48
Priority:
3
State:
Open
Submitted by:
Christian Meier (cikic)
Assigned to:
Nobody (None)
Category:
Group:
Summary:
Need more detail on "An attempt was made to call a PostgreSQL backend function after an elog(ERROR) had been issued" exception

Detailed description
Today a very common exception is this one
INFO: 13 Nov 11 13:43:06 org.postgresql.pljava.sqlj.Loader Failed to load class
java.sql.SQLException: An attempt was made to call a PostgreSQL backend function after an elog(ERROR) had been issued
at org.postgresql.pljava.internal.Oid._forSqlType(Native Method)
at org.postgresql.pljava.internal.Oid.forSqlType(Oid.java:72)
at org.postgresql.pljava.jdbc.SPIPreparedStatement.setObject(SPIPreparedStatement.java:200)
at org.postgresql.pljava.jdbc.SPIPreparedStatement.setInt(SPIPreparedStatement.java:106)
at org.postgresql.pljava.sqlj.Loader.findClass(Loader.java:309)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

This exception is horrible to debug ... could you please add the privious throwable stack as text message to the current stack trace at: "org.postgresql.pljava.sqlj.Loader.findClass"

Followup

Message
Date: 2011-11-13 16:13
Sender: Christian Meier

In fact I would like do determinate the underlying exception
and clear them out. So that the transaction will "never" go
into an error state until I explicitly write to that stream.

Some Method .getError() .clearErrors() resetting the error
state would be useful too.
Date: 2011-11-13 14:55
Sender: Johann Oskarsson

This is almost certainly caused by the classloader looking up in the sqlj schema for the specified class, which apparently does not work once the transaction is in an error state.

I'll try to make the error message at least a bit more helpful.

As for the error log, what exactly do you have in mind? Currently the log system is hard-coded to interact with Postgres' log mechanism.
Date: 2011-11-13 12:49
Sender: Christian Meier

and/or could you add a public stream for elog(ERROR) so that
someone can overwerite this stream like you can do with
System.out / System.setOut();

Attached Files:

Changes:

Field Old Value Date By
summaryNeed more detail on "An attempt was made to call a PostgreSQL backend function after an elog(ERROR) had been issued" exception2011-11-13 16:13cikic
summaryNeed more detail on "An attempt was made to call a PostgreSQL backend function after an elog(ERROR) had been issued" exception2011-11-13 12:49cikic
Powered By FusionForge