Restore may hang if the database contains more than 4 billion records
---------------------------------------------------------------------

                 Key: CORE-5228
                 URL: http://tracker.firebirdsql.org/browse/CORE-5228
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 3.0.0, 4.0 Initial, 2.5.5, 2.5.4, 2.5.3 Update 1, 2.1.7, 
2.5.3, 2.5.2 Update 1, 2.5.2, 2.5.1, 2.5.0
            Reporter: Dmitry Yemanov


The problem of the current restore process is that every record is inserted in 
its own looper roundtrip and thus using its own savepoint. The savepoint number 
is 32-bit and it wraps around after 2^32 iterations. This particular issue is 
not related to GBAK, it's common to any single transaction modifying billions 
of records. Fortunately, old dumb savepoint handling is tolerate to such a 
wraparound in trivial cases, so GBAK is not affected.

Second part of the problem appears when this transaction has also a deferred 
work (uncommitted DDL). AFAIU, the legacy code implicitly assumes that there 
cannot be savepoint number zero, but it becomes possible due to wraparound. So 
DFW_merge_work() is called with old_sav_number = 0 and new_sav_number = 0 and 
it enters an infinite loop, causing a hang.

Workaround for GBAK's restore is to use the -o switch, which restores every 
table in its own transaction (and also separates a DDL transaction from 
multiple DML transactions).

A noticable improvement could be to avoid savepoints during restore at all. 
IIRC, InterBase has added the isc_tpb_no_savepoints feature. But I leave this 
for another ticket.

-- 
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

        

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to