Noel, I set MVCC=false but that did not help anyway.
I have debugged more and I can see the following.
Here is the code of Session#close():
    @Override
    public void close() {
        if (!closed) {
            try {
                database.checkPowerOff();
                rollback();
                removeTemporaryLobs(false);
                cleanTempTables(true);
                undoLog.clear();
                database.removeSession(this);
            } finally {
                closed = true;
            }
        }
    }


Calling *rollback();* results in *unlockAll()* and cleans up the #locks 
field.
However, I can see that *#locks* contains a new lock on PUBLIC.SYS after 
*cleanTempTables(true);* is call is completed. So, lock is aquired at some 
place in *#cleanTempTables* and is not released. That results in closed 
*Session* with an aquired lock.

After some more debugging I found that lock happens at line "
*database.lockMeta(session);*" of method 
*MVTable#removeChildrenAndResources*:

public void removeChildrenAndResources(Session session) {
 if (containsLargeObject) {
 // unfortunately, the data is gone on rollback
 truncate(session);
 database.getLobStorage().removeAllForTable(getId());
 database.lockMeta(session);
 }
 ....

This lock is not released in scope of this method and thus it is left 
aqcuired ("*database.removeMeta(session, getId())*" will not release it).
Could you please look into that? 

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to