Bug #55515 | Default values for InitLogFileGroup cause error 2350: 'Invalid configuration' | ||
---|---|---|---|
Submitted: | 23 Jul 2010 15:16 | Modified: | 26 May 2014 18:09 |
Reporter: | Matthew Montgomery | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Cluster: Disk Data | Severity: | S3 (Non-critical) |
Version: | mysql-5.1-telco-7.1 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | ndb-7.1.6 |
[23 Jul 2010 15:16]
Matthew Montgomery
[23 Jul 2010 15:22]
MySQL Verification Team
The default undo_buffer_size used by InitialLogFileGroup is greater than default SharedGlobalMemory. This results in the crash.
[23 Jul 2010 16:08]
Andrew Hutchings
This is to be expected. But the error message should probably state that we do not have enough SharedGlobalMemory for the undo buffer and the default undo buffer should probably be lower (or I guess SharedGlobalMemory higher?).
[26 Jul 2010 20:48]
Hartmut Holzgraefe
Also weird that CREATE LOG GROUP and InitLogFileGroup use different default values for UNDO BUFFER SIZE ...
[5 Aug 2010 21:02]
Hartmut Holzgraefe
See also Bug #53106 for the misleading error messages when undo buffer is larger than SharedGlobalMemory" ...
[6 Aug 2010 14:01]
Hartmut Holzgraefe
Proposed patch for now: change default to be in sync with CREATE LOGFILE GROUP and have warning comments telling about the other default instance in the long run a solution that would only require defaults to be defined in a single place would be better though === modified file 'sql/handler.h' --- sql/handler.h 2010-06-16 20:49:05 +0000 +++ sql/handler.h 2010-08-06 13:49:35 +0000 @@ -531,8 +531,14 @@ data_file_name= NULL; undo_file_name= NULL; redo_file_name= NULL; + + /* changes to the following two parameters also need to be done + in storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp + in the parse_spec() function + */ extent_size= 1024*1024; //Default 1 MByte undo_buffer_size= 8*1024*1024; //Default 8 MByte + redo_buffer_size= 8*1024*1024; //Default 8 MByte initial_size= 128*1024*1024; //Default 128 MByte autoextend_size= 0; //No autoextension as default === modified file 'storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp' --- storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp 2010-06-24 21:42:03 +0000 +++ storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp 2010-08-06 13:54:43 +0000 @@ -337,7 +337,10 @@ if (type == DictTabInfo::LogfileGroup) { key = "undo_buffer_size="; - group.size = 64*1024*1024; + /* group size must be the same value as the default for + undo_buffer_size in the st_alter_tablespace class + constructor in sql/handler.h */ + group.size = 8*1024*1024; group.name = "DEFAULT-LG"; group.type = type; filetype = DictTabInfo::Undofile; @@ -345,6 +348,9 @@ else { key = "extent_size="; + /* group size must be the same value as the default for + extent_size in the st_alter_tablespace class + constructor in sql/handler.h */ group.size = 1024*1024; group.name = "DEFAULT-TS"; group.type = type;
[26 May 2014 18:09]
Jon Stephens
Documented fix in the NDB 7.3.6 changelog, as follows: Setting the undo buffer size used by InitialLogFileGroup to a value greater than that set by SharedGlobalMemory prevented data nodes from starting; the data nodes failed with Error 1504 -Out of logbuffer memory-. While the failure itself is expected behavior, the error message did not provide sufficient information to diagnose the actual source of the problem; now in such cases, a more specific error message -Out of logbuffer memory(specify smaller undo_buffer_size or increase SharedGlobalMemory)- is supplied. Closed.