Bug #27719 Falcon: hang after many updates of blob column
Submitted: 9 Apr 2007 18:58 Modified: 20 Apr 2007 14:59
Reporter: Peter Gulutzan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:5.2.4-falcon-alpha-debug OS:Linux (SUSE 10.0 / 64-bit)
Assigned to: Kevin Lewis CPU Architecture:Any
Tags: F_BLOB, Memorey leak

[9 Apr 2007 18:58] Peter Gulutzan
Description:
I create a Falcon table with one BLOB column.
I insert one row.
I create a procedure which updates and commits repeatedly.
After a while, the procedure hangs.

This may be the same bug as
Bug#26324 falcon crashes while updating a blob record, or
Bug#26330 falcon crashes in Table::fetchNext
But the test cases for those bugs are longer or more
complex. I'm not able to be sure.

How to repeat:
/* If you run as root, close other applications. */

delimiter //
drop procedure b//
drop table b//
create table b (s1 blob) engine=falcon//
insert into b values ('1')//
commit//
set @@autocommit=0//
create procedure b ()
begin
  declare v int default 0;
  while v < 100000 do
    if v mod 100 = 0 then select v; end if;
    update b set s1 = '1';
    commit;
    set v = v + 1;
  end while;
end //
call b()//
[9 Apr 2007 19:31] MySQL Verification Team
Thank you for the bug report. Verified as described.
[9 Apr 2007 21:17] Hakan Küçükyılmaz
This is a serious yet easy to reproduce memory leak. Related to falcon_record_cache_memory_leak2.test.

Regards,

Hakan
[9 Apr 2007 21:20] Hakan Küçükyılmaz
Related to BUG#22207.
[14 Apr 2007 5:47] Kevin Lewis
I found a couple of spots where Blob objects were being referenced with a refCount but not released.
[14 Apr 2007 12:40] Hakan Küçükyılmaz
+-------+
| v     |
+-------+
| 99600 |
+-------+
1 row in set (11 min 4.68 sec)

+-------+
| v     |
+-------+
| 99700 |
+-------+
1 row in set (11 min 4.73 sec)

+-------+
| v     |
+-------+
| 99800 |
+-------+
1 row in set (11 min 4.79 sec)

+-------+
| v     |
+-------+
| 99900 |
+-------+
1 row in set (11 min 4.84 sec)

Query OK, 0 rows affected (11 min 4.89 sec)

6.0.0-falcon-alpha-debug

Note: While running test Falcon hangs up to five minutes but then continues. The memory explosion leak is gone.

Writing modified test case and pushing soon into 5.1-falcon.

Regards, Hakan
[14 Apr 2007 13:20] Hakan Küçükyılmaz
The temporary hanging happens with READ-COMMITTED isolation mode. With default isolation mode of REPEATABLE-READ it is not hanging.
[14 Apr 2007 15:35] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/24553

ChangeSet@1.2596, 2007-04-14 17:35:21+02:00, hakank@lu0011.wdf.sap.corp +2 -0
  Added test case for nearly fixed Bug#27719.
[20 Apr 2007 14:59] MC Brown
A note has been added to the 5.2.4 changelog.
[10 Jul 2007 19:07] MC Brown
This bug report entry has been moved to the 6.0.0 Falcon changelog.