List:Commits« Previous MessageNext Message »
From:cpowers Date:November 15 2007 10:42pm
Subject:bk commit into 6.0 tree (chris:1.2680) BUG#32413
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of cpowers. When cpowers does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-11-15 16:42:01-06:00, chris@stripped +4 -0
  Bug#32413, "Memory usage not constrained by falcon_record_memory_max, assertion failure"
  
  - Added testcase to exercise falcon_record_memory_max and out-of-memory condition
  - Added out-of-memory exception handling to Table::databaseFetch()

  mysql-test/suite/falcon/r/falcon_bug_32413.result@stripped, 2007-11-15 16:41:59-06:00, chris@stripped +56 -0
    New testcase for falcon_record_memory_max

  mysql-test/suite/falcon/r/falcon_bug_32413.result@stripped, 2007-11-15 16:41:59-06:00, chris@stripped +0 -0

  mysql-test/suite/falcon/t/falcon_bug_32413.test@stripped, 2007-11-15 16:41:59-06:00, chris@stripped +86 -0
    New testcase for falcon_record_memory_max

  mysql-test/suite/falcon/t/falcon_bug_32413.test@stripped, 2007-11-15 16:41:59-06:00, chris@stripped +0 -0

  storage/falcon/MemMgr.cpp@stripped, 2007-11-15 16:41:59-06:00, chris@stripped +1 -2
    Minor formatting

  storage/falcon/Table.cpp@stripped, 2007-11-15 16:41:59-06:00, chris@stripped +7 -0
    Handle out of memory exception in Table::databaseFetch()

diff -Nrup a/mysql-test/suite/falcon/r/falcon_bug_32413.result b/mysql-test/suite/falcon/r/falcon_bug_32413.result
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/falcon/r/falcon_bug_32413.result	2007-11-15 16:41:59 -06:00
@@ -0,0 +1,56 @@
+*** Bug #32413 ***
+SET @@storage_engine = 'Falcon';
+DROP TABLE IF EXISTS t1;
+SET GLOBAL falcon_record_memory_max=32*1024*1024;
+CREATE TABLE t1 ( a INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT, c VARCHAR(200), d VARCHAR(1000), INDEX (b,c), INDEX (d) ) ENGINE=FALCON;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF'));
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+ERROR HY000: Got error 305 'record memory is exhausted' from Falcon
+SET GLOBAL falcon_record_memory_max=256*1024*1024;
+CREATE TABLE t2 ( a INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT, c VARCHAR(200), d VARCHAR(1000), INDEX (b,c), INDEX (d) ) ENGINE=FALCON;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF'));
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+SELECT count(*) from t1;
+count(*)
+262144
+SELECT count(*) from t2;
+count(*)
+524288
+DROP TABLE t1;
+DROP TABLE t2;
diff -Nrup a/mysql-test/suite/falcon/t/falcon_bug_32413.test b/mysql-test/suite/falcon/t/falcon_bug_32413.test
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/falcon/t/falcon_bug_32413.test	2007-11-15 16:41:59 -06:00
@@ -0,0 +1,86 @@
+#
+# Bug #32413: Memory usage not constrained by falcon_record_memory_max, assertion failure
+#
+--echo *** Bug #32413 ***
+
+# ----------------------------------------------------- #
+# --- Initialisation                                --- #
+# ----------------------------------------------------- #
+let $engine = 'Falcon';
+eval SET @@storage_engine = $engine;
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+# ----------------------------------------------------- #
+# --- Test                                          --- #
+# ----------------------------------------------------- #
+
+# Set a very low record cache size
+SET GLOBAL falcon_record_memory_max=32*1024*1024;
+
+CREATE TABLE t1 ( a INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT, c VARCHAR(200), d VARCHAR(1000), INDEX (b,c), INDEX (d) ) ENGINE=FALCON;# Force record cache out-of-memory condition
+
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF'));
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+--error 1296
+INSERT INTO t1 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t1;
+
+# Try again with sufficient record cache
+
+SET GLOBAL falcon_record_memory_max=256*1024*1024;
+
+CREATE TABLE t2 ( a INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT, c VARCHAR(200), d VARCHAR(1000), INDEX (b,c), INDEX (d) ) ENGINE=FALCON;# Force record cache out-of-memory condition
+
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF'));
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+INSERT INTO t2 SELECT NULL, 12345, SHA('12345'),  CONCAT(SHA('12345'),SHA('ABCDEF')) FROM t2;
+
+# ----------------------------------------------------- #
+# --- Check                                         --- #
+# ----------------------------------------------------- #
+
+SELECT count(*) from t1;
+SELECT count(*) from t2;
+
+# ----------------------------------------------------- #
+# --- Final cleanup                                 --- #
+# ----------------------------------------------------- #
+DROP TABLE t1;
+DROP TABLE t2;
diff -Nrup a/storage/falcon/MemMgr.cpp b/storage/falcon/MemMgr.cpp
--- a/storage/falcon/MemMgr.cpp	2007-11-15 13:30:11 -06:00
+++ b/storage/falcon/MemMgr.cpp	2007-11-15 16:41:59 -06:00
@@ -236,8 +236,7 @@ void MemMgrSetMaxRecordMember (long long
 		memControl.addPool(&recordManager);
 		//memControl.addPool(&recordObjectManager);
 		}
-		
-		memControl.setMaxSize(size);
+	memControl.setMaxSize(size);
 	}
 
 MemMgr*	MemMgrGetFixedPool (int id)
diff -Nrup a/storage/falcon/Table.cpp b/storage/falcon/Table.cpp
--- a/storage/falcon/Table.cpp	2007-11-14 14:25:20 -06:00
+++ b/storage/falcon/Table.cpp	2007-11-15 16:41:59 -06:00
@@ -640,6 +640,13 @@ Record* Table::databaseFetch(int32 recor
 						recordNumber, (const char*) schemaName, (const char*) name,
 						exception.getText());
 
+		switch (exception.getSqlcode())
+			{
+			case OUT_OF_MEMORY_ERROR:
+			case OUT_OF_RECORD_MEMORY_ERROR:
+				throw;
+			}
+		
 		return NULL;
 		}
 
Thread
bk commit into 6.0 tree (chris:1.2680) BUG#32413cpowers15 Nov