Freeing a statement using DSQL_drop or DSQL_unprepare should send free packet 
immediately
-----------------------------------------------------------------------------------------

                 Key: CORE-6519
                 URL: http://tracker.firebirdsql.org/browse/CORE-6519
             Project: Firebird Core
          Issue Type: Improvement
          Components: API / Client Library
    Affects Versions: 4.0 RC 1, 3.0.7, 2.5.9
            Reporter: Mark Rotteveel


Since the v11 protocol, fbclient will defer sending the free packet for 
op_free_statement until other activity on the connection. This approach can 
lead to issues when there is no further activity on the connection for a while, 
because the statement is not unprepared or dropped server-side, leading to 
Firebird holding on the metadata object locks for longer than necessary, which 
for example can prevent subsequent DDL on another connection to succeed. This 
can cause either transactions waiting for the lock to be released or errors 
like "unsuccessful metadata update; object TABLE "TEST" is in use 
[SQLState:42000, ISC error code:335544351]"

I propose that for DSQL_drop and DSQL_unprepare, the free packet is sent 
immediately, but processing of the response is deferred until later. For 
DSQL_close the current behaviour is not very problematic, so could remain as 
is. On firebird-devel, Vlad suggested an alternative approach to use a timer to 
send deferred packets with a delay so that multiple subsequent closes can be 
sent together.

See also JDBC-638 and 
https://groups.google.com/g/firebird-java/c/DuIRTYJru7U/m/cxxv49RGAgAJ and the 
discussion on firebird-devel titled "Does deferred processing of DSQL_drop and 
DSQL_unprepare make sense?"

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to