Vlad,
Why did you take out
- if (storageHandler)
3 places in ha_falcon.cpp?
>-----Original Message-----
>From: vvaintroub@stripped [mailto:vvaintroub@stripped]
>Sent: Sunday, February 24, 2008 9:48 AM
>To: commits@stripped
>Subject: bk commit into 6.0 tree (vvaintroub:1.2822) BUG#34085
>
>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);
> }
>
>
>
>
>
>--
>MySQL Code Commits Mailing List
>For list archives: http://lists.mysql.com/commits
>To unsubscribe: http://lists.mysql.com/commits?unsub=1