MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:vvaintroub Date:February 24 2008 3:48pm
Subject: bk commit into 6.0 tree (vvaintroub:1.2822) BUG#34085
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of vvaintroub. When vvaintroub 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, 2008-02-24 16:48:01+01:00, vvaintroub@wva. +2 -0
  Bug#34085 - create table on falcon hangs if it cannot allocate pagecache
  In this case, pagecache size was too big, initialization failed and user 
  was confronted with incomprehensible error message from CREATE TABLE.
  
  Solution : now Falcon will be initialized at database startup. Plugin 
  will not be loaded on failed allocation and this will make configuration
  issues more obvious to DBA.

  storage/falcon/StorageHandler.cpp@stripped, 2008-02-24 16:47:58+01:00, vvaintroub@wva. +16
-23
    (re)throw exceptions in storageHandler::initialize() - they
    will be caught later in falcon_init()

  storage/falcon/ha_falcon.cpp@stripped, 2008-02-24 16:47:59+01:00, vvaintroub@wva. +29 -15
    Initialize falcon at database startup. Return error to plugin API 
    if initialization fails.

diff -Nrup a/storage/falcon/StorageHandler.cpp b/storage/falcon/StorageHandler.cpp
--- a/storage/falcon/StorageHandler.cpp	2008-01-31 20:25:44 +01:00
+++ b/storage/falcon/StorageHandler.cpp	2008-02-24 16:47:58 +01:00
@@ -921,31 +921,24 @@ void StorageHandler::initialize(void)
 		// lead to "recreate" and data loss.
 		int err = e.getSqlcode();
 		if(err == OUT_OF_MEMORY_ERROR || err == FILE_ACCESS_ERROR)
-			return;
-		try
-			{
-			defaultDatabase->createDatabase();
-			IO::deleteFile(FALCON_USER);
-			IO::deleteFile(FALCON_TEMPORARY);
-			dictionaryConnection = defaultDatabase->getOpenConnection();
-			Statement *statement = dictionaryConnection->createStatement();
+			throw;
+		defaultDatabase->createDatabase();
+		IO::deleteFile(FALCON_USER);
+		IO::deleteFile(FALCON_TEMPORARY);
+		dictionaryConnection = defaultDatabase->getOpenConnection();
+		Statement *statement = dictionaryConnection->createStatement();
 
-			JString createTableSpace;
-			createTableSpace.Format(
-					"create tablespace " DEFAULT_TABLESPACE " filename '" FALCON_USER "' allocation "
I64FORMAT,
-					falcon_initial_allocation);
-			statement->executeUpdate(createTableSpace);
+		JString createTableSpace;
+		createTableSpace.Format(
+				"create tablespace " DEFAULT_TABLESPACE " filename '" FALCON_USER "' allocation "
I64FORMAT,
+				falcon_initial_allocation);
+		statement->executeUpdate(createTableSpace);
 			
-			for (const char **ddl = falconSchema; *ddl; ++ddl)
-				statement->executeUpdate(*ddl);
-			
-			statement->close();
-			dictionaryConnection->commit();
-			}
-		catch(...)
-			{
-			return;
-			}
+		for (const char **ddl = falconSchema; *ddl; ++ddl)
+			statement->executeUpdate(*ddl);
+		
+		statement->close();
+		dictionaryConnection->commit();
 		}
 }
 
diff -Nrup a/storage/falcon/ha_falcon.cpp b/storage/falcon/ha_falcon.cpp
--- a/storage/falcon/ha_falcon.cpp	2008-02-06 18:38:23 +01:00
+++ b/storage/falcon/ha_falcon.cpp	2008-02-24 16:47:59 +01:00
@@ -148,6 +148,7 @@ int StorageInterface::falcon_init(void *
 {
 	DBUG_ENTER("falcon_init");
 	falcon_hton = (handlerton *)p;
+	my_bool error = false;
 
 	if (!storageHandler)
 		storageHandler = getFalconStorageHandler(sizeof(THR_LOCK));
@@ -203,11 +204,30 @@ int StorageInterface::falcon_init(void *
 	if (falcon_debug_server)
 		storageHandler->startNfsServer();
 
-	//TimeTest timeTest;
-	//timeTest.testScaled(16, 2, 100000);
+	try
+		{
+		storageHandler->initialize();
+		}
+	catch(SQLException &e)
+		{
+		sql_print_error("Falcon : exception '%s'during initialization",
+			e.getText());
+		error = true;
+		}
+	catch(...)
+		{
+		sql_print_error(" Falcon : general exception in initialization");
+		error = true;
+		}
 
-	//pluginHandler = new NfsPluginHandler;
 
+	if (error)
+		{
+			// Cleanup after error
+			delete storageHandler;
+			storageHandler = 0;
+			DBUG_RETURN(1);
+		}
 	DBUG_RETURN(0);
 }
 
@@ -225,7 +245,7 @@ int falcon_strnxfrm (void *cs,
 {
 	CHARSET_INFO *charset = (CHARSET_INFO*) cs;
 
-	return charset->coll->strnxfrm(charset, (uchar *) dst, dstlen, nweights,
+	return (int)charset->coll->strnxfrm(charset, (uchar *) dst, dstlen, nweights,
 	                              (uchar *) src, srclen, 0);
 }
 
@@ -3080,25 +3100,19 @@ void StorageInterface::updateConsistentR
 void StorageInterface::updateRecordMemoryMax(MYSQL_THD thd, struct st_mysql_sys_var*
variable, void* var_ptr, void* save)
 {
 	falcon_record_memory_max = *(ulonglong*) save;
-
-	if (storageHandler)
-		storageHandler->setRecordMemoryMax(falcon_record_memory_max);
+	storageHandler->setRecordMemoryMax(falcon_record_memory_max);
 }
 
 void StorageInterface::updateRecordScavengeThreshold(MYSQL_THD thd, struct
st_mysql_sys_var* variable, void* var_ptr, void* save)
 {
-	falcon_record_scavenge_threshold = *(int*) save;
-
-	if (storageHandler)
-		storageHandler->setRecordScavengeThreshold(falcon_record_scavenge_threshold);
+	falcon_record_scavenge_threshold = *(uint*) save;
+	storageHandler->setRecordScavengeThreshold(falcon_record_scavenge_threshold);
 }
 
 void StorageInterface::updateRecordScavengeFloor(MYSQL_THD thd, struct st_mysql_sys_var*
variable, void* var_ptr, void* save)
 {
-	falcon_record_scavenge_floor = *(int*) save;
-
-	if (storageHandler)
-		storageHandler->setRecordScavengeFloor(falcon_record_scavenge_floor);
+	falcon_record_scavenge_floor = *(uint*) save;
+	storageHandler->setRecordScavengeFloor(falcon_record_scavenge_floor);
 }
 
 


Thread
bk commit into 6.0 tree (vvaintroub:1.2822) BUG#34085vvaintroub24 Feb
  • RE: bk commit into 6.0 tree (vvaintroub:1.2822) BUG#34085Kevin Lewis25 Feb
    • RE: bk commit into 6.0 tree (vvaintroub:1.2822) BUG#34085Vladislav Vaintroub25 Feb
      • RE: bk commit into 6.0 tree (vvaintroub:1.2822) BUG#34085Vladislav Vaintroub25 Feb