Error "Lock table is full", JDBC connection.

Borowsky2

New Member
Hi !

We have a server with OpenEdge Databases v10.01C. We have a second server with JasperServer on it which is connected (JDBC) to the OpenEdge Databases to make reports.

The problem is when we try to execute a report we have this error :
Caused by: java.sql.SQLException: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Lock table is full. (7870)
at com.ddtek.jdbc.openedge.client.OpenEdgeClientRequest.fetchProcessReply(Unknown Source)
at com.ddtek.jdbc.openedge.client.OpenEdgeClientRequest.fetch(Unknown Source)
at com.ddtek.jdbc.openedge.OpenEdgeImplResultSet.fetchAtPosition(Unknown Source)
at com.ddtek.jdbc.base.BaseImplResultSet.next(Unknown Source)
at com.ddtek.jdbc.base.BaseResultSet.next(Unknown Source)
at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:168)
at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:91)
... 14 more

I saw that we have to put the isolation level to READ_UNCOMMITTED. But how can I do that ? With ODBC connection i know where the parameter is but can we set it when we use a JDBC connection ?

Or is there any solution to solve this problem of "Lock table is full" ?

Thanks a lot for your reply. :blush:
 

medu

Member
if you have access to the connection then you can call setTransactionIsolation (Connection.TRANSACTION_READ_UNCOMMITTED), but you normally set it using SQL as well... try to add this before the select statement of your report:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Marian
 

medu

Member
Btw, since you are using Jasper for reporting against a Progress database you might be interested on our new JDBC driver that connects to the Progress business logic through the AppServer.

You can populate the result-sets the way you want using plain Progress ABL instead of SQL, no need to start a secondary broker for SQL, no need to setup SQL users and deal with SQL_WIDTH issues, it can even support multiple result-sets just that no Java Reporting/ETL tools that I'm aware of seems to handle that – they simply only consider the first result-set and never looks for more :(

Marian
 

Borowsky2

New Member
Ok. thanks.

I don't have access to the connection. Because source of reports are "domain" (which are created by our service provider) and not SQL Query directly.
I only can change URL "jdbc:datadirect:eek:penedge://...".
I will look at new JDBC driver but I think that i'm not really interested in this solution :)
 

medu

Member
try this, not sure if it works but i do get that in the list of driver properties

jdbc:datadirect:eek:penedge://host:port;INITIALIZATIONSTRING=SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
 

Borowsky2

New Member
Ok thank you very much !! :) :)

It seems to work fine !! My first test is ok. :)

Do you know if this Isolation Level can have consequences about ... I don't know what..?
 

medu

Member
Do you know if this Isolation Level can have consequences about ... I don't know what..?

yeah, you might get some dirty reads in there or even phantoms (records that will not be committed due to a transaction roll-back)... anyway is the only isolation level that let you read records without locking them so you should be just fine.
 

medu

Member
and, since you are not interested in our JDBC driver I'll try to refrain from answering you any further ;p
 
Top