Commit ddc31bc9 authored by unknown's avatar unknown

backport some mysql-test ndbcluster things from 5.1

    remove compiler warning EventLogger.cpp
    Bug#26176 NdbObjectIdMap::expand unable to expand!! mysqld got signal 11
     - partial fix
     - object map to handle failed realloc



mysql-test/ndb/ndb_config_2_node.ini:
  backport some mysql-test ndbcluster things from 5.1
mysql-test/ndb/ndbcluster.sh:
  backport some mysql-test ndbcluster things from 5.1
ndb/src/common/debugger/EventLogger.cpp:
  remove compiler warning
ndb/src/ndbapi/ObjectMap.hpp:
  Bug#26176 NdbObjectIdMap::expand unable to expand!! mysqld got signal 11
   - partial fix
   - object map to handle failed realloc
parent e2fb1e45
[ndbd default] [ndbd default]
NoOfReplicas= 2 NoOfReplicas= 2
MaxNoOfConcurrentTransactions= 64
MaxNoOfConcurrentOperations= CHOOSE_MaxNoOfConcurrentOperations MaxNoOfConcurrentOperations= CHOOSE_MaxNoOfConcurrentOperations
DataMemory= CHOOSE_DataMemory DataMemory= CHOOSE_DataMemory
IndexMemory= CHOOSE_IndexMemory IndexMemory= CHOOSE_IndexMemory
...@@ -7,6 +8,15 @@ Diskless= CHOOSE_Diskless ...@@ -7,6 +8,15 @@ Diskless= CHOOSE_Diskless
TimeBetweenWatchDogCheck= 30000 TimeBetweenWatchDogCheck= 30000
DataDir= CHOOSE_FILESYSTEM DataDir= CHOOSE_FILESYSTEM
MaxNoOfOrderedIndexes= CHOOSE_MaxNoOfOrderedIndexes MaxNoOfOrderedIndexes= CHOOSE_MaxNoOfOrderedIndexes
MaxNoOfAttributes= CHOOSE_MaxNoOfAttributes
TimeBetweenGlobalCheckpoints= 500
NoOfFragmentLogFiles= 3
#
# Increase deadlock-timeout to cater for slow test-machines
# (possibly running several tests in parallell)
#
#TransactionDeadlockDetectionTimeout= 7500
[ndbd] [ndbd]
HostName= CHOOSE_HOSTNAME_1 # hostname is a valid network adress HostName= CHOOSE_HOSTNAME_1 # hostname is a valid network adress
......
...@@ -63,12 +63,17 @@ stop_ndb= ...@@ -63,12 +63,17 @@ stop_ndb=
initial_ndb= initial_ndb=
status_ndb= status_ndb=
ndb_diskless=0 ndb_diskless=0
ndbd_nodes=2
relative_config_data_dir=
opt_core=
ndb_no_ord=512 ndb_no_ord=512
ndb_no_attr=2048
ndb_con_op=105000 ndb_con_op=105000
ndb_dmem=80M ndb_dmem=80M
ndb_imem=24M ndb_imem=24M
VERBOSE=100
NDB_MGM_EXTRA_OPTS= NDB_MGM_EXTRA_OPTS=
NDB_MGMD_EXTRA_OPTS= NDB_MGMD_EXTRA_OPTS=
NDBD_EXTRA_OPTS= NDBD_EXTRA_OPTS=
...@@ -89,6 +94,9 @@ while test $# -gt 0; do ...@@ -89,6 +94,9 @@ while test $# -gt 0; do
--debug*) --debug*)
flags_ndb="$flags_ndb $1" flags_ndb="$flags_ndb $1"
;; ;;
--ndbd-nodes=*)
ndbd_nodes=`echo "$1" | sed -e "s;--ndbd-nodes=;;"`
;;
--status) --status)
status_ndb=1 status_ndb=1
;; ;;
...@@ -104,6 +112,9 @@ while test $# -gt 0; do ...@@ -104,6 +112,9 @@ while test $# -gt 0; do
--data-dir=*) --data-dir=*)
fsdir=`echo "$1" | sed -e "s;--data-dir=;;"` fsdir=`echo "$1" | sed -e "s;--data-dir=;;"`
;; ;;
--relative-config-data-dir)
relative_config_data_dir=1
;;
--port=*) --port=*)
port=`echo "$1" | sed -e "s;--port=;;"` port=`echo "$1" | sed -e "s;--port=;;"`
;; ;;
...@@ -122,6 +133,12 @@ while test $# -gt 0; do ...@@ -122,6 +133,12 @@ while test $# -gt 0; do
--character-sets-dir=*) --character-sets-dir=*)
CHARSETSDIR=`echo "$1" | sed -e "s;--character-sets-dir=;;"` CHARSETSDIR=`echo "$1" | sed -e "s;--character-sets-dir=;;"`
;; ;;
--core)
opt_core="--core"
;;
--verbose=*)
VERBOSE=`echo "$1" | sed -e "s;--verbose=;;"`
;;
-- ) shift; break ;; -- ) shift; break ;;
--* ) $ECHO "Unrecognized option: $1"; exit 1 ;; --* ) $ECHO "Unrecognized option: $1"; exit 1 ;;
* ) break ;; * ) break ;;
...@@ -130,9 +147,10 @@ while test $# -gt 0; do ...@@ -130,9 +147,10 @@ while test $# -gt 0; do
done done
fs_ndb="$fsdir/ndbcluster-$port" fs_ndb="$fsdir/ndbcluster-$port"
config_ini=ndb/ndb_config_${ndbd_nodes}_node.ini
NDB_HOME= NDB_HOME=
if [ ! -x "$fsdir" ]; then if [ ! -d "$fsdir" ]; then
echo "$fsdir missing" echo "$fsdir missing"
exit 1 exit 1
fi fi
...@@ -148,11 +166,15 @@ if [ ! -x "$exec_waiter" ]; then ...@@ -148,11 +166,15 @@ if [ ! -x "$exec_waiter" ]; then
echo "$exec_waiter missing" echo "$exec_waiter missing"
exit 1 exit 1
fi fi
if [ ! -f "$config_ini" ]; then
echo "$config_ini missing, unsupported number of nodes"
exit 1
fi
exec_mgmtclient="$exec_mgmtclient --no-defaults $NDB_MGM_EXTRA_OPTS" exec_mgmtclient="$exec_mgmtclient --no-defaults $opt_core $NDB_MGM_EXTRA_OPTS"
exec_mgmtsrvr="$exec_mgmtsrvr --no-defaults $NDB_MGMD_EXTRA_OPTS" exec_mgmtsrvr="$exec_mgmtsrvr --no-defaults $opt_core $NDB_MGMD_EXTRA_OPTS"
exec_ndb="$exec_ndb --no-defaults $NDBD_EXTRA_OPTS --character-sets-dir=$CHARSETSDIR" exec_ndb="$exec_ndb --no-defaults $opt_core $NDBD_EXTRA_OPTS --character-sets-dir=$CHARSETSDIR"
exec_waiter="$exec_waiter --no-defaults" exec_waiter="$exec_waiter --no-defaults $opt_core"
ndb_host="localhost" ndb_host="localhost"
ndb_mgmd_port=$port ndb_mgmd_port=$port
...@@ -196,18 +218,24 @@ fi ...@@ -196,18 +218,24 @@ fi
# Start management server as deamon # Start management server as deamon
# Edit file system path and ports in config file # Edit file system path and ports in config file
if [ $relative_config_data_dir ] ; then
config_fs_ndb="."
else
config_fs_ndb=$fs_ndb
fi
if [ $initial_ndb ] ; then if [ $initial_ndb ] ; then
rm -f $fs_ndb/ndb_* 2>&1 | cat > /dev/null rm -rf $fs_ndb/ndb_* 2>&1 | cat > /dev/null
sed \ sed \
-e s,"CHOOSE_MaxNoOfAttributes","$ndb_no_attr",g \
-e s,"CHOOSE_MaxNoOfOrderedIndexes","$ndb_no_ord",g \ -e s,"CHOOSE_MaxNoOfOrderedIndexes","$ndb_no_ord",g \
-e s,"CHOOSE_MaxNoOfConcurrentOperations","$ndb_con_op",g \ -e s,"CHOOSE_MaxNoOfConcurrentOperations","$ndb_con_op",g \
-e s,"CHOOSE_DataMemory","$ndb_dmem",g \ -e s,"CHOOSE_DataMemory","$ndb_dmem",g \
-e s,"CHOOSE_IndexMemory","$ndb_imem",g \ -e s,"CHOOSE_IndexMemory","$ndb_imem",g \
-e s,"CHOOSE_Diskless","$ndb_diskless",g \ -e s,"CHOOSE_Diskless","$ndb_diskless",g \
-e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \ -e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
-e s,"CHOOSE_FILESYSTEM","$fs_ndb",g \ -e s,"CHOOSE_FILESYSTEM","$config_fs_ndb",g \
-e s,"CHOOSE_PORT_MGM","$ndb_mgmd_port",g \ -e s,"CHOOSE_PORT_MGM","$ndb_mgmd_port",g \
< ndb/ndb_config_2_node.ini \ < "$config_ini" \
> "$fs_ndb/config.ini" > "$fs_ndb/config.ini"
fi fi
...@@ -218,7 +246,7 @@ if ( cd "$fs_ndb" ; $exec_mgmtsrvr -f config.ini ) ; then :; else ...@@ -218,7 +246,7 @@ if ( cd "$fs_ndb" ; $exec_mgmtsrvr -f config.ini ) ; then :; else
echo "Unable to start $exec_mgmtsrvr from `pwd`" echo "Unable to start $exec_mgmtsrvr from `pwd`"
exit 1 exit 1
fi fi
if sleep_until_file_created $fs_ndb/ndb_3.pid 120 if sleep_until_file_created $fs_ndb/ndb_`expr $ndbd_nodes + 1`.pid 120
then :; else then :; else
exit 1 exit 1
fi fi
...@@ -226,38 +254,43 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile" ...@@ -226,38 +254,43 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
# Start database node # Start database node
echo "Starting ndbd" id=1
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & ) while [ $id -le $ndbd_nodes ]
if sleep_until_file_created $fs_ndb/ndb_1.pid 120 do
then :; else if [ `expr $VERBOSE \> 1` = 1 ] ; then
stop_default_ndbcluster echo "Starting ndbd $id($ndbd_nodes)"
exit 1 fi
fi ( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile" if sleep_until_file_created $fs_ndb/ndb_${id}.pid 120
then :; else
# Start database node
echo "Starting ndbd"
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
if sleep_until_file_created $fs_ndb/ndb_2.pid 120
then :; else
stop_default_ndbcluster stop_default_ndbcluster
exit 1 exit 1
fi fi
cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile" cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
id=`expr $id + 1`
done
# test if Ndb Cluster starts properly # test if Ndb Cluster starts properly
echo "Waiting for NDB data nodes to start..." if [ `expr $VERBOSE \> 1` = 1 ] ; then
if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK" > /dev/null 2>&1; then :; else echo "Waiting for NDB data nodes to start..."
fi
if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK" > /dev/null 2>&1 ; then :; else
if [ `expr $VERBOSE \> 0` = 1 ] ; then
echo "Ndbcluster startup failed" echo "Ndbcluster startup failed"
fi
stop_default_ndbcluster stop_default_ndbcluster
exit 1 exit 1
fi fi
if [ `expr $VERBOSE \> 1` = 1 ] ; then
echo "Ok"
fi
cat `find "$fs_ndb" -name 'ndb_*.pid'` > $fs_ndb/$pidfile cat `find "$fs_ndb" -name 'ndb_*.pid'` > $fs_ndb/$pidfile
status_ndbcluster if [ `expr $VERBOSE \> 2` = 1 ] ; then
status_ndbcluster
fi
} }
status_ndbcluster() { status_ndbcluster() {
......
...@@ -530,7 +530,7 @@ void getTextUndoLogBlocked(QQQQ) { ...@@ -530,7 +530,7 @@ void getTextUndoLogBlocked(QQQQ) {
} }
void getTextTransporterError(QQQQ) { void getTextTransporterError(QQQQ) {
struct myTransporterError{ struct myTransporterError{
int errorNum; Uint32 errorNum;
char errorString[256]; char errorString[256];
}; };
int i = 0; int i = 0;
......
...@@ -46,7 +46,7 @@ private: ...@@ -46,7 +46,7 @@ private:
} * m_map; } * m_map;
NdbMutex * m_mutex; NdbMutex * m_mutex;
void expand(Uint32 newSize); int expand(Uint32 newSize);
}; };
inline inline
...@@ -73,9 +73,8 @@ NdbObjectIdMap::map(void * object){ ...@@ -73,9 +73,8 @@ NdbObjectIdMap::map(void * object){
// lock(); // lock();
if(m_firstFree == InvalidId){ if(m_firstFree == InvalidId && expand(m_expandSize))
expand(m_expandSize); return InvalidId;
}
Uint32 ff = m_firstFree; Uint32 ff = m_firstFree;
m_firstFree = m_map[ff].m_next; m_firstFree = m_map[ff].m_next;
...@@ -130,7 +129,7 @@ NdbObjectIdMap::getObject(Uint32 id){ ...@@ -130,7 +129,7 @@ NdbObjectIdMap::getObject(Uint32 id){
return 0; return 0;
} }
inline void inline int
NdbObjectIdMap::expand(Uint32 incSize){ NdbObjectIdMap::expand(Uint32 incSize){
NdbMutex_Lock(m_mutex); NdbMutex_Lock(m_mutex);
Uint32 newSize = m_size + incSize; Uint32 newSize = m_size + incSize;
...@@ -149,9 +148,11 @@ NdbObjectIdMap::expand(Uint32 incSize){ ...@@ -149,9 +148,11 @@ NdbObjectIdMap::expand(Uint32 incSize){
} }
else else
{ {
ndbout_c("NdbObjectIdMap::expand unable to expand!!"); NdbMutex_Unlock(m_mutex);
return -1;
} }
NdbMutex_Unlock(m_mutex); NdbMutex_Unlock(m_mutex);
return 0;
} }
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment