mariadb/storage/ndb/test/ndbapi/testMgm.cpp

839 lines
21 KiB
C++
Raw Normal View History

/* Copyright (C) 2003 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Many files: Changed header to GPL version 2 only BUILD/Makefile.am: Changed header to GPL version 2 only Docs/Makefile.am: Changed header to GPL version 2 only Makefile.am: Changed header to GPL version 2 only SSL/Makefile.am: Changed header to GPL version 2 only bdb/Makefile.in: Changed header to GPL version 2 only client/Makefile.am: Changed header to GPL version 2 only client/client_priv.h: Changed header to GPL version 2 only client/completion_hash.cc: Changed header to GPL version 2 only client/completion_hash.h: Changed header to GPL version 2 only client/get_password.c: Changed header to GPL version 2 only client/my_readline.h: Changed header to GPL version 2 only client/mysql.cc: Changed header to GPL version 2 only client/mysql_upgrade.c: Changed header to GPL version 2 only client/mysqladmin.cc: Changed header to GPL version 2 only client/mysqlbinlog.cc: Changed header to GPL version 2 only client/mysqlcheck.c: Changed header to GPL version 2 only client/mysqldump.c: Changed header to GPL version 2 only client/mysqlimport.c: Changed header to GPL version 2 only client/mysqlmanager-pwgen.c: Changed header to GPL version 2 only client/mysqlmanagerc.c: Changed header to GPL version 2 only client/mysqlshow.c: Changed header to GPL version 2 only client/mysqltest.c: Changed header to GPL version 2 only client/readline.cc: Changed header to GPL version 2 only client/sql_string.cc: Changed header to GPL version 2 only client/sql_string.h: Changed header to GPL version 2 only cmd-line-utils/Makefile.am: Changed header to GPL version 2 only dbug/Makefile.am: Changed header to GPL version 2 only extra/Makefile.am: Changed header to GPL version 2 only extra/charset2html.c: Changed header to GPL version 2 only extra/comp_err.c: Changed header to GPL version 2 only extra/innochecksum.c: Changed header to GPL version 2 only extra/my_print_defaults.c: Changed header to GPL version 2 only extra/mysql_waitpid.c: Changed header to GPL version 2 only extra/perror.c: Changed header to GPL version 2 only extra/replace.c: Changed header to GPL version 2 only extra/resolve_stack_dump.c: Changed header to GPL version 2 only extra/resolveip.c: Changed header to GPL version 2 only heap/Makefile.am: Changed header to GPL version 2 only heap/_check.c: Changed header to GPL version 2 only heap/_rectest.c: Changed header to GPL version 2 only heap/heapdef.h: Changed header to GPL version 2 only heap/hp_block.c: Changed header to GPL version 2 only heap/hp_clear.c: Changed header to GPL version 2 only heap/hp_close.c: Changed header to GPL version 2 only heap/hp_create.c: Changed header to GPL version 2 only heap/hp_delete.c: Changed header to GPL version 2 only heap/hp_extra.c: Changed header to GPL version 2 only heap/hp_hash.c: Changed header to GPL version 2 only heap/hp_info.c: Changed header to GPL version 2 only heap/hp_open.c: Changed header to GPL version 2 only heap/hp_panic.c: Changed header to GPL version 2 only heap/hp_rename.c: Changed header to GPL version 2 only heap/hp_rfirst.c: Changed header to GPL version 2 only heap/hp_rkey.c: Changed header to GPL version 2 only heap/hp_rlast.c: Changed header to GPL version 2 only heap/hp_rnext.c: Changed header to GPL version 2 only heap/hp_rprev.c: Changed header to GPL version 2 only heap/hp_rrnd.c: Changed header to GPL version 2 only heap/hp_rsame.c: Changed header to GPL version 2 only heap/hp_scan.c: Changed header to GPL version 2 only heap/hp_static.c: Changed header to GPL version 2 only heap/hp_test1.c: Changed header to GPL version 2 only heap/hp_test2.c: Changed header to GPL version 2 only heap/hp_update.c: Changed header to GPL version 2 only heap/hp_write.c: Changed header to GPL version 2 only include/Makefile.am: Changed header to GPL version 2 only include/base64.h: Changed header to GPL version 2 only include/config-netware.h: Changed header to GPL version 2 only include/config-os2.h: Changed header to GPL version 2 only include/config-win.h: Changed header to GPL version 2 only include/decimal.h: Changed header to GPL version 2 only include/errmsg.h: Changed header to GPL version 2 only include/ft_global.h: Changed header to GPL version 2 only include/hash.h: Changed header to GPL version 2 only include/heap.h: Changed header to GPL version 2 only include/keycache.h: Changed header to GPL version 2 only include/m_ctype.h: Changed header to GPL version 2 only include/m_string.h: Changed header to GPL version 2 only include/md5.h: Changed header to GPL version 2 only include/my_aes.h: Changed header to GPL version 2 only include/my_alarm.h: Changed header to GPL version 2 only include/my_alloc.h: Changed header to GPL version 2 only include/my_base.h: Changed header to GPL version 2 only include/my_bitmap.h: Changed header to GPL version 2 only include/my_dbug.h: Changed header to GPL version 2 only include/my_dir.h: Changed header to GPL version 2 only include/my_getopt.h: Changed header to GPL version 2 only include/my_global.h: Changed header to GPL version 2 only include/my_handler.h: Changed header to GPL version 2 only include/my_libwrap.h: Changed header to GPL version 2 only include/my_list.h: Changed header to GPL version 2 only include/my_net.h: Changed header to GPL version 2 only include/my_no_pthread.h: Changed header to GPL version 2 only include/my_nosys.h: Changed header to GPL version 2 only include/my_pthread.h: Changed header to GPL version 2 only include/my_sys.h: Changed header to GPL version 2 only include/my_time.h: Changed header to GPL version 2 only include/my_tree.h: Changed header to GPL version 2 only include/my_user.h: Changed header to GPL version 2 only include/my_xml.h: Changed header to GPL version 2 only include/myisam.h: Changed header to GPL version 2 only include/myisammrg.h: Changed header to GPL version 2 only include/myisampack.h: Changed header to GPL version 2 only include/mysql.h: Changed header to GPL version 2 only include/mysql_com.h: Changed header to GPL version 2 only include/mysql_embed.h: Changed header to GPL version 2 only include/mysql_time.h: Changed header to GPL version 2 only include/mysys_err.h: Changed header to GPL version 2 only include/queues.h: Changed header to GPL version 2 only include/raid.h: Changed header to GPL version 2 only include/rijndael.h: Changed header to GPL version 2 only include/sha1.h: Changed header to GPL version 2 only include/sql_common.h: Changed header to GPL version 2 only include/sslopt-case.h: Changed header to GPL version 2 only include/sslopt-longopts.h: Changed header to GPL version 2 only include/sslopt-vars.h: Changed header to GPL version 2 only include/t_ctype.h: Changed header to GPL version 2 only include/thr_alarm.h: Changed header to GPL version 2 only include/thr_lock.h: Changed header to GPL version 2 only include/typelib.h: Changed header to GPL version 2 only include/violite.h: Changed header to GPL version 2 only innobase/Makefile.am: Changed header to GPL version 2 only innobase/btr/Makefile.am: Changed header to GPL version 2 only innobase/buf/Makefile.am: Changed header to GPL version 2 only innobase/data/Makefile.am: Changed header to GPL version 2 only innobase/dict/Makefile.am: Changed header to GPL version 2 only innobase/dyn/Makefile.am: Changed header to GPL version 2 only innobase/eval/Makefile.am: Changed header to GPL version 2 only innobase/fil/Makefile.am: Changed header to GPL version 2 only innobase/fsp/Makefile.am: Changed header to GPL version 2 only innobase/fut/Makefile.am: Changed header to GPL version 2 only innobase/ha/Makefile.am: Changed header to GPL version 2 only innobase/ibuf/Makefile.am: Changed header to GPL version 2 only innobase/include/Makefile.am: Changed header to GPL version 2 only innobase/lock/Makefile.am: Changed header to GPL version 2 only innobase/log/Makefile.am: Changed header to GPL version 2 only innobase/mach/Makefile.am: Changed header to GPL version 2 only innobase/mem/Makefile.am: Changed header to GPL version 2 only innobase/mtr/Makefile.am: Changed header to GPL version 2 only innobase/os/Makefile.am: Changed header to GPL version 2 only innobase/page/Makefile.am: Changed header to GPL version 2 only innobase/pars/Makefile.am: Changed header to GPL version 2 only innobase/que/Makefile.am: Changed header to GPL version 2 only innobase/read/Makefile.am: Changed header to GPL version 2 only innobase/rem/Makefile.am: Changed header to GPL version 2 only innobase/row/Makefile.am: Changed header to GPL version 2 only innobase/srv/Makefile.am: Changed header to GPL version 2 only innobase/sync/Makefile.am: Changed header to GPL version 2 only innobase/thr/Makefile.am: Changed header to GPL version 2 only innobase/trx/Makefile.am: Changed header to GPL version 2 only innobase/usr/Makefile.am: Changed header to GPL version 2 only innobase/ut/Makefile.am: Changed header to GPL version 2 only libmysql/client_settings.h: Changed header to GPL version 2 only libmysqld/Makefile.am: Changed header to GPL version 2 only libmysqld/emb_qcache.cc: Changed header to GPL version 2 only libmysqld/emb_qcache.h: Changed header to GPL version 2 only libmysqld/embedded_priv.h: Changed header to GPL version 2 only libmysqld/examples/Makefile.am: Changed header to GPL version 2 only libmysqld/libmysqld.c: Changed header to GPL version 2 only man/Makefile.am: Changed header to GPL version 2 only myisam/Makefile.am: Changed header to GPL version 2 only myisam/ft_boolean_search.c: Changed header to GPL version 2 only myisam/ft_eval.c: Changed header to GPL version 2 only myisam/ft_eval.h: Changed header to GPL version 2 only myisam/ft_nlq_search.c: Changed header to GPL version 2 only myisam/ft_parser.c: Changed header to GPL version 2 only myisam/ft_static.c: Changed header to GPL version 2 only myisam/ft_stem.c: Changed header to GPL version 2 only myisam/ft_stopwords.c: Changed header to GPL version 2 only myisam/ft_test1.c: Changed header to GPL version 2 only myisam/ft_test1.h: Changed header to GPL version 2 only myisam/ft_update.c: Changed header to GPL version 2 only myisam/ftdefs.h: Changed header to GPL version 2 only myisam/fulltext.h: Changed header to GPL version 2 only myisam/mi_cache.c: Changed header to GPL version 2 only myisam/mi_changed.c: Changed header to GPL version 2 only myisam/mi_check.c: Changed header to GPL version 2 only myisam/mi_checksum.c: Changed header to GPL version 2 only myisam/mi_close.c: Changed header to GPL version 2 only myisam/mi_create.c: Changed header to GPL version 2 only myisam/mi_dbug.c: Changed header to GPL version 2 only myisam/mi_delete.c: Changed header to GPL version 2 only myisam/mi_delete_all.c: Changed header to GPL version 2 only myisam/mi_delete_table.c: Changed header to GPL version 2 only myisam/mi_dynrec.c: Changed header to GPL version 2 only myisam/mi_extra.c: Changed header to GPL version 2 only myisam/mi_info.c: Changed header to GPL version 2 only myisam/mi_key.c: Changed header to GPL version 2 only myisam/mi_keycache.c: Changed header to GPL version 2 only myisam/mi_locking.c: Changed header to GPL version 2 only myisam/mi_log.c: Changed header to GPL version 2 only myisam/mi_open.c: Changed header to GPL version 2 only myisam/mi_packrec.c: Changed header to GPL version 2 only myisam/mi_page.c: Changed header to GPL version 2 only myisam/mi_panic.c: Changed header to GPL version 2 only myisam/mi_preload.c: Changed header to GPL version 2 only myisam/mi_range.c: Changed header to GPL version 2 only myisam/mi_rename.c: Changed header to GPL version 2 only myisam/mi_rfirst.c: Changed header to GPL version 2 only myisam/mi_rkey.c: Changed header to GPL version 2 only myisam/mi_rlast.c: Changed header to GPL version 2 only myisam/mi_rnext.c: Changed header to GPL version 2 only myisam/mi_rnext_same.c: Changed header to GPL version 2 only myisam/mi_rprev.c: Changed header to GPL version 2 only myisam/mi_rrnd.c: Changed header to GPL version 2 only myisam/mi_rsame.c: Changed header to GPL version 2 only myisam/mi_rsamepos.c: Changed header to GPL version 2 only myisam/mi_scan.c: Changed header to GPL version 2 only myisam/mi_search.c: Changed header to GPL version 2 only myisam/mi_static.c: Changed header to GPL version 2 only myisam/mi_statrec.c: Changed header to GPL version 2 only myisam/mi_test1.c: Changed header to GPL version 2 only myisam/mi_test2.c: Changed header to GPL version 2 only myisam/mi_test3.c: Changed header to GPL version 2 only myisam/mi_unique.c: Changed header to GPL version 2 only myisam/mi_update.c: Changed header to GPL version 2 only myisam/mi_write.c: Changed header to GPL version 2 only myisam/myisam_ftdump.c: Changed header to GPL version 2 only myisam/myisamchk.c: Changed header to GPL version 2 only myisam/myisamdef.h: Changed header to GPL version 2 only myisam/myisamlog.c: Changed header to GPL version 2 only myisam/myisampack.c: Changed header to GPL version 2 only myisam/rt_index.c: Changed header to GPL version 2 only myisam/rt_index.h: Changed header to GPL version 2 only myisam/rt_key.c: Changed header to GPL version 2 only myisam/rt_key.h: Changed header to GPL version 2 only myisam/rt_mbr.c: Changed header to GPL version 2 only myisam/rt_mbr.h: Changed header to GPL version 2 only myisam/rt_split.c: Changed header to GPL version 2 only myisam/rt_test.c: Changed header to GPL version 2 only myisam/sort.c: Changed header to GPL version 2 only myisam/sp_defs.h: Changed header to GPL version 2 only myisam/sp_key.c: Changed header to GPL version 2 only myisam/sp_test.c: Changed header to GPL version 2 only myisammrg/Makefile.am: Changed header to GPL version 2 only myisammrg/myrg_close.c: Changed header to GPL version 2 only myisammrg/myrg_create.c: Changed header to GPL version 2 only myisammrg/myrg_def.h: Changed header to GPL version 2 only myisammrg/myrg_delete.c: Changed header to GPL version 2 only myisammrg/myrg_extra.c: Changed header to GPL version 2 only myisammrg/myrg_info.c: Changed header to GPL version 2 only myisammrg/myrg_locking.c: Changed header to GPL version 2 only myisammrg/myrg_open.c: Changed header to GPL version 2 only myisammrg/myrg_panic.c: Changed header to GPL version 2 only myisammrg/myrg_queue.c: Changed header to GPL version 2 only myisammrg/myrg_range.c: Changed header to GPL version 2 only myisammrg/myrg_rfirst.c: Changed header to GPL version 2 only myisammrg/myrg_rkey.c: Changed header to GPL version 2 only myisammrg/myrg_rlast.c: Changed header to GPL version 2 only myisammrg/myrg_rnext.c: Changed header to GPL version 2 only myisammrg/myrg_rnext_same.c: Changed header to GPL version 2 only myisammrg/myrg_rprev.c: Changed header to GPL version 2 only myisammrg/myrg_rrnd.c: Changed header to GPL version 2 only myisammrg/myrg_rsame.c: Changed header to GPL version 2 only myisammrg/myrg_static.c: Changed header to GPL version 2 only myisammrg/myrg_update.c: Changed header to GPL version 2 only myisammrg/myrg_write.c: Changed header to GPL version 2 only mysql-test/Makefile.am: Changed header to GPL version 2 only mysys/Makefile.am: Changed header to GPL version 2 only mysys/array.c: Changed header to GPL version 2 only mysys/base64.c: Changed header to GPL version 2 only mysys/charset-def.c: Changed header to GPL version 2 only mysys/charset.c: Changed header to GPL version 2 only mysys/checksum.c: Changed header to GPL version 2 only mysys/default.c: Changed header to GPL version 2 only mysys/default_modify.c: Changed header to GPL version 2 only mysys/errors.c: Changed header to GPL version 2 only mysys/hash.c: Changed header to GPL version 2 only mysys/list.c: Changed header to GPL version 2 only mysys/make-conf.c: Changed header to GPL version 2 only mysys/md5.c: Changed header to GPL version 2 only mysys/mf_brkhant.c: Changed header to GPL version 2 only mysys/mf_cache.c: Changed header to GPL version 2 only mysys/mf_dirname.c: Changed header to GPL version 2 only mysys/mf_fn_ext.c: Changed header to GPL version 2 only mysys/mf_format.c: Changed header to GPL version 2 only mysys/mf_getdate.c: Changed header to GPL version 2 only mysys/mf_iocache.c: Changed header to GPL version 2 only mysys/mf_iocache2.c: Changed header to GPL version 2 only mysys/mf_keycache.c: Changed header to GPL version 2 only mysys/mf_keycaches.c: Changed header to GPL version 2 only mysys/mf_loadpath.c: Changed header to GPL version 2 only mysys/mf_pack.c: Changed header to GPL version 2 only mysys/mf_path.c: Changed header to GPL version 2 only mysys/mf_qsort.c: Changed header to GPL version 2 only mysys/mf_qsort2.c: Changed header to GPL version 2 only mysys/mf_radix.c: Changed header to GPL version 2 only mysys/mf_same.c: Changed header to GPL version 2 only mysys/mf_sort.c: Changed header to GPL version 2 only mysys/mf_soundex.c: Changed header to GPL version 2 only mysys/mf_strip.c: Changed header to GPL version 2 only mysys/mf_tempdir.c: Changed header to GPL version 2 only mysys/mf_tempfile.c: Changed header to GPL version 2 only mysys/mf_unixpath.c: Changed header to GPL version 2 only mysys/mf_util.c: Changed header to GPL version 2 only mysys/mf_wcomp.c: Changed header to GPL version 2 only mysys/mf_wfile.c: Changed header to GPL version 2 only mysys/mulalloc.c: Changed header to GPL version 2 only mysys/my_access.c: Changed header to GPL version 2 only mysys/my_aes.c: Changed header to GPL version 2 only mysys/my_alarm.c: Changed header to GPL version 2 only mysys/my_alloc.c: Changed header to GPL version 2 only mysys/my_append.c: Changed header to GPL version 2 only mysys/my_bit.c: Changed header to GPL version 2 only mysys/my_bitmap.c: Changed header to GPL version 2 only mysys/my_chsize.c: Changed header to GPL version 2 only mysys/my_clock.c: Changed header to GPL version 2 only mysys/my_compress.c: Changed header to GPL version 2 only mysys/my_conio.c: Changed header to GPL version 2 only mysys/my_copy.c: Changed header to GPL version 2 only mysys/my_crc32.c: Changed header to GPL version 2 only mysys/my_create.c: Changed header to GPL version 2 only mysys/my_delete.c: Changed header to GPL version 2 only mysys/my_div.c: Changed header to GPL version 2 only mysys/my_dup.c: Changed header to GPL version 2 only mysys/my_error.c: Changed header to GPL version 2 only mysys/my_file.c: Changed header to GPL version 2 only mysys/my_fopen.c: Changed header to GPL version 2 only mysys/my_fstream.c: Changed header to GPL version 2 only mysys/my_gethostbyname.c: Changed header to GPL version 2 only mysys/my_gethwaddr.c: Changed header to GPL version 2 only mysys/my_getopt.c: Changed header to GPL version 2 only mysys/my_getpagesize.c: Changed header to GPL version 2 only mysys/my_getsystime.c: Changed header to GPL version 2 only mysys/my_getwd.c: Changed header to GPL version 2 only mysys/my_handler.c: Changed header to GPL version 2 only mysys/my_init.c: Changed header to GPL version 2 only mysys/my_largepage.c: Changed header to GPL version 2 only mysys/my_lib.c: Changed header to GPL version 2 only mysys/my_libwrap.c: Changed header to GPL version 2 only mysys/my_lock.c: Changed header to GPL version 2 only mysys/my_lockmem.c: Changed header to GPL version 2 only mysys/my_lread.c: Changed header to GPL version 2 only mysys/my_lwrite.c: Changed header to GPL version 2 only mysys/my_malloc.c: Changed header to GPL version 2 only mysys/my_messnc.c: Changed header to GPL version 2 only mysys/my_mkdir.c: Changed header to GPL version 2 only mysys/my_mmap.c: Changed header to GPL version 2 only mysys/my_net.c: Changed header to GPL version 2 only mysys/my_netware.c: Changed header to GPL version 2 only mysys/my_new.cc: Changed header to GPL version 2 only mysys/my_once.c: Changed header to GPL version 2 only mysys/my_open.c: Changed header to GPL version 2 only mysys/my_os2cond.c: Changed header to GPL version 2 only mysys/my_os2dirsrch.c: Changed header to GPL version 2 only mysys/my_os2dirsrch.h: Changed header to GPL version 2 only mysys/my_os2dlfcn.c: Changed header to GPL version 2 only mysys/my_os2dlfcn.h0: Changed header to GPL version 2 only mysys/my_os2file64.c: Changed header to GPL version 2 only mysys/my_os2thread.c: Changed header to GPL version 2 only mysys/my_os2tls.c: Changed header to GPL version 2 only mysys/my_port.c: Changed header to GPL version 2 only mysys/my_pread.c: Changed header to GPL version 2 only mysys/my_pthread.c: Changed header to GPL version 2 only mysys/my_quick.c: Changed header to GPL version 2 only mysys/my_read.c: Changed header to GPL version 2 only mysys/my_realloc.c: Changed header to GPL version 2 only mysys/my_redel.c: Changed header to GPL version 2 only mysys/my_rename.c: Changed header to GPL version 2 only mysys/my_seek.c: Changed header to GPL version 2 only mysys/my_semaphore.c: Changed header to GPL version 2 only mysys/my_sleep.c: Changed header to GPL version 2 only mysys/my_static.c: Changed header to GPL version 2 only mysys/my_static.h: Changed header to GPL version 2 only mysys/my_symlink.c: Changed header to GPL version 2 only mysys/my_symlink2.c: Changed header to GPL version 2 only mysys/my_sync.c: Changed header to GPL version 2 only mysys/my_thr_init.c: Changed header to GPL version 2 only mysys/my_wincond.c: Changed header to GPL version 2 only mysys/my_windac.c: Changed header to GPL version 2 only mysys/my_winthread.c: Changed header to GPL version 2 only mysys/my_write.c: Changed header to GPL version 2 only mysys/mysys_priv.h: Changed header to GPL version 2 only mysys/ptr_cmp.c: Changed header to GPL version 2 only mysys/queues.c: Changed header to GPL version 2 only mysys/raid.cc: Changed header to GPL version 2 only mysys/raid2.c: Changed header to GPL version 2 only mysys/rijndael.c: Changed header to GPL version 2 only mysys/safemalloc.c: Changed header to GPL version 2 only mysys/sha1.c: Changed header to GPL version 2 only mysys/string.c: Changed header to GPL version 2 only mysys/test_charset.c: Changed header to GPL version 2 only mysys/test_dir.c: Changed header to GPL version 2 only mysys/test_fn.c: Changed header to GPL version 2 only mysys/test_xml.c: Changed header to GPL version 2 only mysys/testhash.c: Changed header to GPL version 2 only mysys/thr_alarm.c: Changed header to GPL version 2 only mysys/thr_lock.c: Changed header to GPL version 2 only mysys/thr_mutex.c: Changed header to GPL version 2 only mysys/thr_rwlock.c: Changed header to GPL version 2 only mysys/tree.c: Changed header to GPL version 2 only mysys/typelib.c: Changed header to GPL version 2 only ndb/include/debugger/DebuggerNames.hpp: Changed header to GPL version 2 only ndb/include/debugger/EventLogger.hpp: Changed header to GPL version 2 only ndb/include/debugger/GrepError.hpp: Changed header to GPL version 2 only ndb/include/debugger/SignalLoggerManager.hpp: Changed header to GPL version 2 only ndb/include/editline/editline.h: Changed header to GPL version 2 only ndb/include/kernel/AttributeDescriptor.hpp: Changed header to GPL version 2 only ndb/include/kernel/AttributeHeader.hpp: Changed header to GPL version 2 only ndb/include/kernel/AttributeList.hpp: Changed header to GPL version 2 only ndb/include/kernel/BlockNumbers.h: Changed header to GPL version 2 only ndb/include/kernel/GlobalSignalNumbers.h: Changed header to GPL version 2 only ndb/include/kernel/GrepEvent.hpp: Changed header to GPL version 2 only ndb/include/kernel/Interpreter.hpp: Changed header to GPL version 2 only ndb/include/kernel/LogLevel.hpp: Changed header to GPL version 2 only ndb/include/kernel/NodeBitmask.hpp: Changed header to GPL version 2 only ndb/include/kernel/NodeInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/NodeState.hpp: Changed header to GPL version 2 only ndb/include/kernel/RefConvert.hpp: Changed header to GPL version 2 only ndb/include/kernel/kernel_types.h: Changed header to GPL version 2 only ndb/include/kernel/ndb_limits.h: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AbortAll.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccLock.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccScan.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterTable.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterTrig.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ApiBroadcast.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ApiRegSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ApiVersion.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ArbitSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/trigger_definitions.h: Changed header to GPL version 2 only ndb/include/ndb_constants.h: Changed header to GPL version 2 only ndb/include/ndb_global.h.in: Changed header to GPL version 2 only ndb/include/ndb_init.h: Changed header to GPL version 2 only ndb/include/ndb_types.h.in: Changed header to GPL version 2 only ndb/include/ndb_version.h.in: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AttrInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BackupContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BackupImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BackupSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BlockCommitOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BuildIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CheckNodeGroups.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CloseComReqConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CmInit.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CmRegSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CmvmiCfgConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CntrMasterConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CntrMasterReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ConfigParamId.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ContinueFragmented.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CopyActive.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CopyFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CopyGCIReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateEvnt.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateFragmentation.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateTable.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateTrig.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DiAddTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DiGetNodes.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictLock.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictSchemaInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictStart.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictTabInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihAddFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihStartTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihSwitchReplica.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DisconnectRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTabFile.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTable.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTrig.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DumpStateOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EmptyLcp.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EndTo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EventReport.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EventSubscribeReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ExecFragReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FailRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FireTrigOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsAppendReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsCloseReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsOpenReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsReadWriteReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsRef.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsRemoveReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GCPSave.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GetTabInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GetTableId.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GrepImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/HotSpareRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/IndxAttrInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/IndxKeyInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/KeyInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LCP.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ListTables.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhKey.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhTransConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ManagementServer.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/MasterGCP.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/MasterLCP.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NFCompleteRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NdbSttor.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NdbfsContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NextScan.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NodeFailRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NodeStateSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/PackedSignal.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/PrepDropTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/PrepFailReqRef.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ReadNodesConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/RelTabMem.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/RepImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ResumeReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ScanFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ScanTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SetLogLevelOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SetVarReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SignalDataPrint.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SignalDroppedRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SrFragidConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartFragReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartMe.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartPerm.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartRec.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartTo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StopMe.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StopPerm.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StopReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SumaImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SystemError.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TamperOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcCommit.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcHbRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyFailConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyRef.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcRollbackRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TestOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TransIdAI.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TrigAttrInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupCommit.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupKey.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxBound.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxMaint.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UpdateTo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilDelete.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilExecute.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilLock.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilPrepare.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilRelease.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilSequence.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/WaitGCP.hpp: Changed header to GPL version 2 only ndb/include/logger/ConsoleLogHandler.hpp: Changed header to GPL version 2 only ndb/include/logger/FileLogHandler.hpp: Changed header to GPL version 2 only ndb/include/logger/LogHandler.hpp: Changed header to GPL version 2 only ndb/include/logger/Logger.hpp: Changed header to GPL version 2 only ndb/include/logger/SysLogHandler.hpp: Changed header to GPL version 2 only ndb/include/mgmapi/mgmapi.h: Changed header to GPL version 2 only ndb/include/mgmapi/mgmapi_debug.h: Changed header to GPL version 2 only ndb/include/mgmapi/ndb_logevent.h: Changed header to GPL version 2 only ndb/include/mgmapi/ndbd_exit_codes.h: Changed header to GPL version 2 only ndb/include/mgmcommon/ConfigRetriever.hpp: Changed header to GPL version 2 only ndb/include/mgmcommon/IPCConfig.hpp: Changed header to GPL version 2 only ndb/include/mgmcommon/MgmtErrorReporter.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/Ndb.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbApi.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbBlob.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbDictionary.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbError.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbEventOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbIndexOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbIndexScanOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbPool.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbRecAttr.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbReceiver.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbScanFilter.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbScanOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbTransaction.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/ndb_cluster_connection.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/ndb_opt_defaults.h: Changed header to GPL version 2 only ndb/include/ndbapi/ndbapi_limits.h: Changed header to GPL version 2 only ndb/include/ndbapi/ndberror.h: Changed header to GPL version 2 only ndb/include/newtonapi/dba.h: Changed header to GPL version 2 only ndb/include/newtonapi/defs/pcn_types.h: Changed header to GPL version 2 only ndb/include/portlib/NdbCondition.h: Changed header to GPL version 2 only ndb/include/portlib/NdbConfig.h: Changed header to GPL version 2 only ndb/include/portlib/NdbDaemon.h: Changed header to GPL version 2 only ndb/include/portlib/NdbEnv.h: Changed header to GPL version 2 only ndb/include/portlib/NdbHost.h: Changed header to GPL version 2 only ndb/include/portlib/NdbMain.h: Changed header to GPL version 2 only ndb/include/portlib/NdbMem.h: Changed header to GPL version 2 only ndb/include/portlib/NdbMutex.h: Changed header to GPL version 2 only ndb/include/portlib/NdbSleep.h: Changed header to GPL version 2 only ndb/include/portlib/NdbTCP.h: Changed header to GPL version 2 only ndb/include/portlib/NdbThread.h: Changed header to GPL version 2 only ndb/include/portlib/NdbTick.h: Changed header to GPL version 2 only ndb/include/portlib/PortDefs.h: Changed header to GPL version 2 only ndb/include/portlib/prefetch.h: Changed header to GPL version 2 only ndb/include/transporter/TransporterCallback.hpp: Changed header to GPL version 2 only ndb/include/transporter/TransporterDefinitions.hpp: Changed header to GPL version 2 only ndb/include/transporter/TransporterRegistry.hpp: Changed header to GPL version 2 only ndb/include/util/BaseString.hpp: Changed header to GPL version 2 only ndb/include/util/Bitmask.hpp: Changed header to GPL version 2 only ndb/include/util/File.hpp: Changed header to GPL version 2 only ndb/include/util/InputStream.hpp: Changed header to GPL version 2 only ndb/include/util/NdbAutoPtr.hpp: Changed header to GPL version 2 only ndb/include/util/NdbOut.hpp: Changed header to GPL version 2 only ndb/include/util/NdbSqlUtil.hpp: Changed header to GPL version 2 only ndb/include/util/OutputStream.hpp: Changed header to GPL version 2 only ndb/include/util/Parser.hpp: Changed header to GPL version 2 only ndb/include/util/Properties.hpp: Changed header to GPL version 2 only ndb/include/util/SimpleProperties.hpp: Changed header to GPL version 2 only ndb/include/util/SocketAuthenticator.hpp: Changed header to GPL version 2 only ndb/include/util/SocketClient.hpp: Changed header to GPL version 2 only ndb/include/util/SocketServer.hpp: Changed header to GPL version 2 only ndb/include/util/UtilBuffer.hpp: Changed header to GPL version 2 only ndb/include/util/Vector.hpp: Changed header to GPL version 2 only ndb/include/util/basestring_vsnprintf.h: Changed header to GPL version 2 only ndb/include/util/md5_hash.hpp: Changed header to GPL version 2 only ndb/include/util/ndb_opts.h: Changed header to GPL version 2 only ndb/include/util/random.h: Changed header to GPL version 2 only ndb/include/util/socket_io.h: Changed header to GPL version 2 only ndb/include/util/uucode.h: Changed header to GPL version 2 only ndb/include/util/version.h: Changed header to GPL version 2 only ndb/ndbapi-examples/mgmapi_logevent_example/mgmapi_logevent.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_async_example/ndbapi_async.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_async_example1/ndbapi_async1.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_event_example/ndbapi_event.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_retries_example/ndbapi_retries.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_scan_example/ndbapi_scan.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_simple_example/ndbapi_simple.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_simple_index_example/ndbapi_simple_index.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/BlockNames.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/DebuggerNames.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/EventLogger.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/GrepError.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/SignalLoggerManager.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AccLock.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterTable.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterTrig.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/BackupImpl.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/BackupSignalData.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CloseComReqConf.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/ContinueB.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CopyGCI.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateEvnt.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateFragmentation.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateTrig.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DictTabInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DihContinueB.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DisconnectRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DropIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DropTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DropTrig.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FailRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FireTrigOrd.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsAppendReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsCloseReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsConf.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsOpenReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsRef.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/GCPSave.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LCP.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LqhFrag.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LqhKey.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LqhTrans.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/MasterLCP.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/NFCompleteRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/NdbSttor.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/PackedSignal.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/PrepDropTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/ScanFrag.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/ScanTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SignalDataPrint.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SignalNames.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/StartRec.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SumaImpl.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SystemError.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcKeyConf.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcKeyRef.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcKeyReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcRollbackRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TupCommit.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TupKey.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TuxMaint.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilDelete.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilExecute.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilLock.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilPrepare.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilSequence.cpp: Changed header to GPL version 2 only ndb/src/common/logger/ConsoleLogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/FileLogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/LogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/LogHandlerList.cpp: Changed header to GPL version 2 only ndb/src/common/logger/LogHandlerList.hpp: Changed header to GPL version 2 only ndb/src/common/logger/Logger.cpp: Changed header to GPL version 2 only ndb/src/common/logger/SysLogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp: Changed header to GPL version 2 only ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp: Changed header to GPL version 2 only ndb/src/common/logger/loggertest/LoggerUnitTest.cpp: Changed header to GPL version 2 only ndb/src/common/logger/loggertest/LoggerUnitTest.hpp: Changed header to GPL version 2 only ndb/src/common/mgmcommon/ConfigRetriever.cpp: Changed header to GPL version 2 only ndb/src/common/mgmcommon/IPCConfig.cpp: Changed header to GPL version 2 only ndb/src/common/mgmcommon/printConfig/printConfig.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbConfig.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbDaemon.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbPortLibTest.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbTCP.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/portlib/memtest.c: Changed header to GPL version 2 only ndb/src/common/portlib/mmslist.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/mmstest.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/munmaptest.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbConditionOSE.h: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbMem_SoftOse.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbOut.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbTCP.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbDaemon.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbTCP.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbDaemon.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbTCP.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Receiver.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Receiver.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Signals.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/Packer.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/Packer.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SCI_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SCI_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Buffer.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.unix.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.win32.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SendBuffer.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SendBuffer.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/TCP_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/TCP_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/TransporterInternalDefinitions.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/TransporterRegistry.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/basictest/basicTransporterTest.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/buddy.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/buddy.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/failoverSCI/failoverSCI.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/perftest/perfTransporterTest.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioTransporterTest.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioTransporterTest.hpp: Changed header to GPL version 2 only ndb/src/common/util/BaseString.cpp: Changed header to GPL version 2 only ndb/src/common/util/File.cpp: Changed header to GPL version 2 only ndb/src/common/util/InputStream.cpp: Changed header to GPL version 2 only ndb/src/common/util/NdbErrHnd.cpp: Changed header to GPL version 2 only ndb/src/common/util/NdbOut.cpp: Changed header to GPL version 2 only ndb/src/common/util/NdbSqlUtil.cpp: Changed header to GPL version 2 only ndb/src/common/util/OutputStream.cpp: Changed header to GPL version 2 only ndb/src/common/util/Parser.cpp: Changed header to GPL version 2 only ndb/src/common/util/Properties.cpp: Changed header to GPL version 2 only ndb/src/common/util/SimpleProperties.cpp: Changed header to GPL version 2 only ndb/src/common/util/SocketAuthenticator.cpp: Changed header to GPL version 2 only ndb/src/common/util/SocketClient.cpp: Changed header to GPL version 2 only ndb/src/common/util/SocketServer.cpp: Changed header to GPL version 2 only ndb/src/common/util/basestring_vsnprintf.c: Changed header to GPL version 2 only ndb/src/common/util/filetest/FileUnitTest.cpp: Changed header to GPL version 2 only ndb/src/common/util/filetest/FileUnitTest.hpp: Changed header to GPL version 2 only ndb/src/common/util/md5_hash.cpp: Changed header to GPL version 2 only ndb/src/common/util/ndb_init.c: Changed header to GPL version 2 only ndb/src/common/util/random.c: Changed header to GPL version 2 only ndb/src/common/util/socket_io.cpp: Changed header to GPL version 2 only ndb/src/common/util/strdup.c: Changed header to GPL version 2 only ndb/src/common/util/testProperties/testProperties.cpp: Changed header to GPL version 2 only ndb/src/common/util/testSimpleProperties/sp_test.cpp: Changed header to GPL version 2 only ndb/src/common/util/uucode.c: Changed header to GPL version 2 only ndb/src/common/util/version.c: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/CPC_GUI.h: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/NdbControls.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/StdAfx.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/StdAfx.h: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/TreeView.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/TreeView.h: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/resource.h: Changed header to GPL version 2 only ndb/src/cw/cpcd/APIService.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/APIService.hpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/CPCD.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/CPCD.hpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/Monitor.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/Process.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/common.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/common.hpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/main.cpp: Changed header to GPL version 2 only ndb/src/cw/test/socketclient/socketClientTest.cpp: Changed header to GPL version 2 only ndb/src/cw/util/ClientInterface.cpp: Changed header to GPL version 2 only ndb/src/cw/util/ClientInterface.hpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketRegistry.cpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketRegistry.hpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketService.cpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketService.hpp: Changed header to GPL version 2 only ndb/src/kernel/SimBlockList.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/Backup.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/Backup.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/BackupFormat.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/BackupInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/FsBuffer.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/read.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbacc/Dbacc.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbacc/DbaccMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/mutexes.hpp: Changed header to GPL version 2 only ndb/src/kernel/main.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/SchemaFile.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/Dbdih.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/Sysfile.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/Dblqh.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtc/Dbtc.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtc/DbtcInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupLCP.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupScan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupSystemRestart.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupUndoLog.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/Dbtux.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbutil/DbUtil.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbutil/DbUtil.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Filename.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Filename.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannelOSE.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Pool.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/VoidFs.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/Qmgr.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/QmgrInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/timer.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/suma/Suma.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/suma/Suma.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/suma/SumaInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/trix/Trix.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/trix/Trix.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/ErrorHandlingMacros.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/ErrorReporter.cpp: Changed header to GPL version 2 only ndb/src/kernel/error/ErrorReporter.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/TimeModule.cpp: Changed header to GPL version 2 only ndb/src/kernel/error/TimeModule.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/ndbd_exit_codes.c: Changed header to GPL version 2 only ndb/src/kernel/vm/Array.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ArrayFifoList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ArrayList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ArrayPool.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/CArray.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Callback.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ClusterConfiguration.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ClusterConfiguration.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Configuration.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Configuration.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLFifoList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLHashTable.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLHashTable2.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DataBuffer.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Emulator.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Emulator.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/FastScheduler.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/FastScheduler.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/GlobalData.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/KeyDescriptor.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/KeyTable.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/KeyTable2.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/LongSignal.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/MetaData.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/MetaData.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Mutex.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Mutex.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Prio.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/RequestTracker.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SLList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SafeCounter.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SafeCounter.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SectionReader.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SectionReader.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SignalCounter.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimBlockList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimplePropertiesSection.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimulatedBlock.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimulatedBlock.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SuperPool.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SuperPool.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ThreadConfig.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ThreadConfig.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/TimeQueue.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/TimeQueue.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/TransporterCallback.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/VMSignal.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/VMSignal.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/WaitQueue.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/WatchDog.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/WatchDog.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/al_test/arrayListTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/al_test/arrayPoolTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/al_test/main.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ndbd_malloc.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ndbd_malloc.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/pc.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testCopy/rr.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testCopy/testCopy.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testLongSig/testLongSig.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testSuperPool.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/LocalConfig.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/LocalConfig.hpp: Changed header to GPL version 2 only ndb/src/mgmapi/mgmapi.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/mgmapi_configuration.hpp: Changed header to GPL version 2 only ndb/src/mgmapi/mgmapi_internal.h: Changed header to GPL version 2 only ndb/src/mgmapi/ndb_logevent.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/ndb_logevent.hpp: Changed header to GPL version 2 only ndb/src/mgmapi/test/keso.c: Changed header to GPL version 2 only ndb/src/mgmapi/test/mgmSrvApi.cpp: Changed header to GPL version 2 only ndb/src/mgmclient/CommandInterpreter.cpp: Changed header to GPL version 2 only ndb/src/mgmclient/main.cpp: Changed header to GPL version 2 only ndb/src/mgmclient/ndb_mgmclient.hpp: Changed header to GPL version 2 only ndb/src/mgmclient/ndb_mgmclient.h: Changed header to GPL version 2 only ndb/src/mgmclient/test_cpcd/test_cpcd.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Config.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Config.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/ConfigInfo.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/ConfigInfo.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/InitConfigFileParser.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/InitConfigFileParser.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvr.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvr.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvrConfig.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Services.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Services.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/SignalQueue.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/SignalQueue.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/convertStrToInt.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/convertStrToInt.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/main.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/mkconfig/mkconfig.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/API.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/ClusterMgr.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/ClusterMgr.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/DictCache.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/DictCache.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndb.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbApiSignal.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbApiSignal.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbBlob.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbBlobImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbDictionary.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbDictionaryImpl.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbDictionaryImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbErrorOut.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbEventOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbEventOperationImpl.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbEventOperationImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbIndexOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbLinHash.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationDefine.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationExec.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationInt.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationScan.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationSearch.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbPool.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbPoolImpl.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbPoolImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbRecAttr.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbReceiver.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbScanFilter.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbScanOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbTransaction.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbTransactionScan.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbUtil.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbUtil.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbWaiter.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndberr.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndbif.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndbinit.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndblist.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/ObjectMap.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/SignalSender.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/SignalSender.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/TransporterFacade.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/TransporterFacade.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/ndb_cluster_connection.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/ndb_cluster_connection_impl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/ndberror.c: Changed header to GPL version 2 only ndb/src/ndbapi/signal-sender/SignalSender.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/signal-sender/SignalSender.hpp: Changed header to GPL version 2 only ndb/test/include/CpcClient.hpp: Changed header to GPL version 2 only ndb/test/include/HugoAsynchTransactions.hpp: Changed header to GPL version 2 only ndb/test/include/HugoCalculator.hpp: Changed header to GPL version 2 only ndb/test/include/HugoOperations.hpp: Changed header to GPL version 2 only ndb/test/include/HugoTransactions.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_DataSet.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_DataSetTransaction.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Error.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Output.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_ResultRow.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_ReturnCodes.h: Changed header to GPL version 2 only ndb/test/include/NDBT_Stats.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Table.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Tables.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Test.hpp: Changed header to GPL version 2 only ndb/test/include/NdbBackup.hpp: Changed header to GPL version 2 only ndb/test/include/NdbConfig.hpp: Changed header to GPL version 2 only ndb/test/include/NdbGrep.hpp: Changed header to GPL version 2 only ndb/test/include/NdbRestarter.hpp: Changed header to GPL version 2 only ndb/test/include/NdbRestarts.hpp: Changed header to GPL version 2 only ndb/test/include/NdbSchemaCon.hpp: Changed header to GPL version 2 only ndb/test/include/NdbSchemaOp.hpp: Changed header to GPL version 2 only ndb/test/include/NdbTest.hpp: Changed header to GPL version 2 only ndb/test/include/NdbTimer.hpp: Changed header to GPL version 2 only ndb/test/include/TestNdbEventOperation.hpp: Changed header to GPL version 2 only ndb/test/include/UtilTransactions.hpp: Changed header to GPL version 2 only ndb/test/include/getarg.h: Changed header to GPL version 2 only ndb/test/ndbapi/InsertRecs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ScanFilter.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/ScanFunctions.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/ScanInterpretTest.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/TraceNdbApi.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/VerifyNdbApi.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/acid.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/acid2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/adoInsertRecs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/asyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/benchronja.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bulk_copy.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/cdrserver.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/celloDb.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/create_all_tabs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/create_tab.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/drop_all_tabs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexAsynch.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexBench.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexHammer.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexScan.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexTT.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexTimedAsynch.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flex_bench_mysql.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/index.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/index2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/initronja.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/interpreterInTup.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/mainAsyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/msa.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_async1.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_async2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_populate.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction3.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction4.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction5.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction6.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/restarter.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/restarter2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/restarts.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/size.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBackup.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBasic.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBasicAsynch.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBlobs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testDataBuffers.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testDeadlock.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testDict.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testGrepVerify.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testIndex.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testInterpreter.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testMgm.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testNdbApi.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testNodeRestart.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testOIBasic.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testOperations.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testOrderedIndex.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testPartitioning.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testReadPerf.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testRestartGci.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testSRBank.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testScan.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testScanInterpreter.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testScanPerf.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testSystemRestart.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/Bank.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/Bank.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/BankLoad.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankCreator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankMakeGL.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankSumAccounts.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankTimer.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankTransactionMaker.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankValidateAllGLs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/testBank.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/asyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/dbGenerator.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/dbPopulate.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/dbPopulate.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/macros.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/mainAsyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/mainPopulate.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_async1.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_async2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_error.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_schema.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction3.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction4.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction5.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction6.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/testData.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/testDefinitions.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/userInterface.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/userInterface.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/acid2/TraceNdbApi.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/acid2/VerifyNdbApi.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/dbGenerator.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/testData.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/userInterface.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/macros.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/ndb_error.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/include/ndb_schema.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/include/testDefinitions.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/mainGenerator.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/include/testData.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/include/userInterface.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/mainPopulate.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/localDbPrepare.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/macros.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/ndb_error.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userHandle.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userInterface.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userHandle.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userInterface.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userTransaction.c: Changed header to GPL version 2 only ndb/test/ndbapi/testTimeout.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testTransactions.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/test_event.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/test_event_merge.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/test_event_multi_table.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/userInterface.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userTransaction.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/vw_test/bcd.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/vw_test/utv.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/vw_test/vcdrfunc.h: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/basic/basic.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/common.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/common.hpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/too_basic.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/perf_test/perf.cpp: Changed header to GPL version 2 only ndb/test/odbc/SQL99_test/SQL99_test.cpp: Changed header to GPL version 2 only ndb/test/odbc/SQL99_test/SQL99_test.h: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_SQLConnect.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_SQLPrepare.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLAllocEnvTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLAllocHandleTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLBindColTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLBindParameterTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLCancelTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLCloseCursorTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest1.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest2.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest3.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLConnectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLCopyDescTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLDescribeColTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLDisconnectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLDriverConnectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLEndTranTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLErrorTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLExecDirectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLExecuteTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFetchScrollTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFetchTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFreeHandleTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFreeStmtTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetConnectAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetCursorNameTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDataTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDescFieldTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDescRecTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDiagFieldTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDiagRecTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetEnvAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetFunctionsTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetInfoTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetStmtAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetTypeInfoTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLMoreResultsTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLNumResultColsTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLParamDataTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLPrepareTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLPutDataTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLRowCountTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetConnectAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetCursorNameTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetDescFieldTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetDescRecTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetEnvAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetStmtAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLTablesTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLTransactTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/common.hpp: Changed header to GPL version 2 only ndb/test/odbc/client/main.cpp: Changed header to GPL version 2 only ndb/test/odbc/driver/testOdbcDriver.cpp: Changed header to GPL version 2 only ndb/test/odbc/test_compiler/test_compiler.cpp: Changed header to GPL version 2 only ndb/test/run-test/main.cpp: Changed header to GPL version 2 only ndb/test/run-test/run-test.hpp: Changed header to GPL version 2 only ndb/test/src/CpcClient.cpp: Changed header to GPL version 2 only ndb/test/src/HugoAsynchTransactions.cpp: Changed header to GPL version 2 only ndb/test/src/HugoCalculator.cpp: Changed header to GPL version 2 only ndb/test/src/HugoOperations.cpp: Changed header to GPL version 2 only ndb/test/src/HugoTransactions.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Error.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Output.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_ResultRow.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_ReturnCodes.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Table.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Tables.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Test.cpp: Changed header to GPL version 2 only ndb/test/src/NdbBackup.cpp: Changed header to GPL version 2 only ndb/test/src/NdbConfig.cpp: Changed header to GPL version 2 only ndb/test/src/NdbGrep.cpp: Changed header to GPL version 2 only ndb/test/src/NdbRestarter.cpp: Changed header to GPL version 2 only ndb/test/src/NdbRestarts.cpp: Changed header to GPL version 2 only ndb/test/src/NdbSchemaCon.cpp: Changed header to GPL version 2 only ndb/test/src/NdbSchemaOp.cpp: Changed header to GPL version 2 only ndb/test/src/UtilTransactions.cpp: Changed header to GPL version 2 only ndb/test/tools/copy_tab.cpp: Changed header to GPL version 2 only ndb/test/tools/cpcc.cpp: Changed header to GPL version 2 only ndb/test/tools/create_index.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoCalculator.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoFill.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoLoad.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoLockRecords.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkDelete.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkRead.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkReadRecord.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkUpdate.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoScanRead.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoScanUpdate.cpp: Changed header to GPL version 2 only ndb/test/tools/old_dirs/waiter/waiter.cpp: Changed header to GPL version 2 only ndb/test/tools/restart.cpp: Changed header to GPL version 2 only ndb/test/tools/transproxy.cpp: Changed header to GPL version 2 only ndb/test/tools/verify_index.cpp: Changed header to GPL version 2 only ndb/tools/delete_all.cpp: Changed header to GPL version 2 only ndb/tools/desc.cpp: Changed header to GPL version 2 only ndb/tools/drop_index.cpp: Changed header to GPL version 2 only ndb/tools/drop_tab.cpp: Changed header to GPL version 2 only ndb/tools/listTables.cpp: Changed header to GPL version 2 only ndb/tools/ndb_config.cpp: Changed header to GPL version 2 only ndb/tools/ndb_test_platform.cpp: Changed header to GPL version 2 only ndb/tools/ndbsql.cpp: Changed header to GPL version 2 only ndb/tools/restore/Restore.cpp: Changed header to GPL version 2 only ndb/tools/restore/Restore.hpp: Changed header to GPL version 2 only ndb/tools/restore/consumer.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer.hpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_printer.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_printer.hpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_restore.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_restore.hpp: Changed header to GPL version 2 only ndb/tools/select_all.cpp: Changed header to GPL version 2 only ndb/tools/select_count.cpp: Changed header to GPL version 2 only ndb/tools/waiter.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_restorem.cpp: Changed header to GPL version 2 only ndb/tools/restore/restore_main.cpp: Changed header to GPL version 2 only netware/mysql_fix_privilege_tables.pl: Changed header to GPL version 2 only netware/mysql_secure_installation.pl: Changed header to GPL version 2 only os2/Makefile.am: Changed header to GPL version 2 only os2/include/Makefile.am: Changed header to GPL version 2 only os2/include/sys/Makefile.am: Changed header to GPL version 2 only pstack/Makefile.am: Changed header to GPL version 2 only regex/Makefile.am: Changed header to GPL version 2 only scripts/Makefile.am: Changed header to GPL version 2 only scripts/fill_help_tables.sh: Changed header to GPL version 2 only scripts/mysql_config.sh: Changed header to GPL version 2 only scripts/mysql_secure_installation.sh: Changed header to GPL version 2 only server-tools/instance-manager/Makefile.am: Changed header to GPL version 2 only server-tools/instance-manager/buffer.cc: Changed header to GPL version 2 only server-tools/instance-manager/buffer.h: Changed header to GPL version 2 only server-tools/instance-manager/command.cc: Changed header to GPL version 2 only server-tools/instance-manager/command.h: Changed header to GPL version 2 only server-tools/instance-manager/commands.cc: Changed header to GPL version 2 only server-tools/instance-manager/commands.h: Changed header to GPL version 2 only server-tools/instance-manager/guardian.cc: Changed header to GPL version 2 only server-tools/instance-manager/guardian.h: Changed header to GPL version 2 only server-tools/instance-manager/instance.cc: Changed header to GPL version 2 only server-tools/instance-manager/instance.h: Changed header to GPL version 2 only server-tools/instance-manager/instance_map.cc: Changed header to GPL version 2 only server-tools/instance-manager/instance_map.h: Changed header to GPL version 2 only server-tools/instance-manager/instance_options.cc: Changed header to GPL version 2 only server-tools/instance-manager/instance_options.h: Changed header to GPL version 2 only server-tools/instance-manager/listener.cc: Changed header to GPL version 2 only server-tools/instance-manager/listener.h: Changed header to GPL version 2 only server-tools/instance-manager/log.cc: Changed header to GPL version 2 only server-tools/instance-manager/log.h: Changed header to GPL version 2 only server-tools/instance-manager/manager.cc: Changed header to GPL version 2 only server-tools/instance-manager/manager.h: Changed header to GPL version 2 only server-tools/instance-manager/messages.cc: Changed header to GPL version 2 only server-tools/instance-manager/messages.h: Changed header to GPL version 2 only server-tools/instance-manager/mysql_connection.cc: Changed header to GPL version 2 only server-tools/instance-manager/mysql_connection.h: Changed header to GPL version 2 only server-tools/instance-manager/mysql_manager_error.h: Changed header to GPL version 2 only server-tools/instance-manager/mysqlmanager.cc: Changed header to GPL version 2 only server-tools/instance-manager/options.cc: Changed header to GPL version 2 only server-tools/instance-manager/options.h: Changed header to GPL version 2 only server-tools/instance-manager/parse.cc: Changed header to GPL version 2 only server-tools/instance-manager/parse.h: Changed header to GPL version 2 only server-tools/instance-manager/parse_output.cc: Changed header to GPL version 2 only server-tools/instance-manager/parse_output.h: Changed header to GPL version 2 only server-tools/instance-manager/priv.cc: Changed header to GPL version 2 only server-tools/instance-manager/priv.h: Changed header to GPL version 2 only server-tools/instance-manager/protocol.cc: Changed header to GPL version 2 only server-tools/instance-manager/protocol.h: Changed header to GPL version 2 only server-tools/instance-manager/thread_registry.cc: Changed header to GPL version 2 only server-tools/instance-manager/thread_registry.h: Changed header to GPL version 2 only server-tools/instance-manager/user_map.cc: Changed header to GPL version 2 only server-tools/instance-manager/user_map.h: Changed header to GPL version 2 only sql/Makefile.am: Changed header to GPL version 2 only sql/client_settings.h: Changed header to GPL version 2 only sql/custom_conf.h: Changed header to GPL version 2 only sql/derror.cc: Changed header to GPL version 2 only sql/des_key_file.cc: Changed header to GPL version 2 only sql/discover.cc: Changed header to GPL version 2 only sql/field.cc: Changed header to GPL version 2 only sql/field.h: Changed header to GPL version 2 only sql/field_conv.cc: Changed header to GPL version 2 only sql/filesort.cc: Changed header to GPL version 2 only sql/frm_crypt.cc: Changed header to GPL version 2 only sql/gen_lex_hash.cc: Changed header to GPL version 2 only sql/gstream.cc: Changed header to GPL version 2 only sql/gstream.h: Changed header to GPL version 2 only sql/ha_archive.cc: Changed header to GPL version 2 only sql/ha_archive.h: Changed header to GPL version 2 only sql/ha_berkeley.cc: Changed header to GPL version 2 only sql/ha_berkeley.h: Changed header to GPL version 2 only sql/ha_blackhole.cc: Changed header to GPL version 2 only sql/ha_blackhole.h: Changed header to GPL version 2 only sql/ha_federated.cc: Changed header to GPL version 2 only sql/ha_federated.h: Changed header to GPL version 2 only sql/ha_heap.cc: Changed header to GPL version 2 only sql/ha_heap.h: Changed header to GPL version 2 only sql/ha_innodb.cc: Changed header to GPL version 2 only sql/ha_innodb.h: Changed header to GPL version 2 only sql/ha_myisam.cc: Changed header to GPL version 2 only sql/ha_myisam.h: Changed header to GPL version 2 only sql/ha_myisammrg.cc: Changed header to GPL version 2 only sql/ha_myisammrg.h: Changed header to GPL version 2 only sql/ha_ndbcluster.cc: Changed header to GPL version 2 only sql/ha_ndbcluster.h: Changed header to GPL version 2 only sql/handler.cc: Changed header to GPL version 2 only sql/handler.h: Changed header to GPL version 2 only sql/hash_filo.cc: Changed header to GPL version 2 only sql/hash_filo.h: Changed header to GPL version 2 only sql/hostname.cc: Changed header to GPL version 2 only sql/init.cc: Changed header to GPL version 2 only sql/item.cc: Changed header to GPL version 2 only sql/item.h: Changed header to GPL version 2 only sql/item_buff.cc: Changed header to GPL version 2 only sql/item_cmpfunc.cc: Changed header to GPL version 2 only sql/item_cmpfunc.h: Changed header to GPL version 2 only sql/item_create.cc: Changed header to GPL version 2 only sql/item_create.h: Changed header to GPL version 2 only sql/item_func.cc: Changed header to GPL version 2 only sql/item_func.h: Changed header to GPL version 2 only sql/item_geofunc.cc: Changed header to GPL version 2 only sql/item_geofunc.h: Changed header to GPL version 2 only sql/item_row.cc: Changed header to GPL version 2 only sql/item_row.h: Changed header to GPL version 2 only sql/item_strfunc.cc: Changed header to GPL version 2 only sql/item_strfunc.h: Changed header to GPL version 2 only sql/item_subselect.cc: Changed header to GPL version 2 only sql/item_subselect.h: Changed header to GPL version 2 only sql/item_sum.cc: Changed header to GPL version 2 only sql/item_sum.h: Changed header to GPL version 2 only sql/item_timefunc.cc: Changed header to GPL version 2 only sql/item_timefunc.h: Changed header to GPL version 2 only sql/item_uniq.cc: Changed header to GPL version 2 only sql/item_uniq.h: Changed header to GPL version 2 only sql/key.cc: Changed header to GPL version 2 only sql/lex.h: Changed header to GPL version 2 only sql/lex_symbol.h: Changed header to GPL version 2 only sql/lock.cc: Changed header to GPL version 2 only sql/log.cc: Changed header to GPL version 2 only sql/log_event.cc: Changed header to GPL version 2 only sql/log_event.h: Changed header to GPL version 2 only sql/matherr.c: Changed header to GPL version 2 only sql/mf_iocache.cc: Changed header to GPL version 2 only sql/my_decimal.cc: Changed header to GPL version 2 only sql/my_decimal.h: Changed header to GPL version 2 only sql/my_lock.c: Changed header to GPL version 2 only sql/mysql_priv.h: Changed header to GPL version 2 only sql/mysqld.cc: Changed header to GPL version 2 only sql/mysqld_suffix.h: Changed header to GPL version 2 only sql/net_serv.cc: Changed header to GPL version 2 only sql/opt_range.cc: Changed header to GPL version 2 only sql/opt_range.h: Changed header to GPL version 2 only sql/opt_sum.cc: Changed header to GPL version 2 only sql/parse_file.cc: Changed header to GPL version 2 only sql/parse_file.h: Changed header to GPL version 2 only sql/password.c: Changed header to GPL version 2 only sql/procedure.cc: Changed header to GPL version 2 only sql/procedure.h: Changed header to GPL version 2 only sql/protocol.cc: Changed header to GPL version 2 only sql/protocol.h: Changed header to GPL version 2 only sql/records.cc: Changed header to GPL version 2 only sql/repl_failsafe.cc: Changed header to GPL version 2 only sql/repl_failsafe.h: Changed header to GPL version 2 only sql/set_var.cc: Changed header to GPL version 2 only sql/set_var.h: Changed header to GPL version 2 only sql/slave.cc: Changed header to GPL version 2 only sql/slave.h: Changed header to GPL version 2 only sql/sp.cc: Changed header to GPL version 2 only sql/sp.h: Changed header to GPL version 2 only sql/sp_cache.cc: Changed header to GPL version 2 only sql/sp_cache.h: Changed header to GPL version 2 only sql/sp_head.cc: Changed header to GPL version 2 only sql/sp_head.h: Changed header to GPL version 2 only sql/sp_pcontext.cc: Changed header to GPL version 2 only sql/sp_pcontext.h: Changed header to GPL version 2 only sql/sp_rcontext.cc: Changed header to GPL version 2 only sql/sp_rcontext.h: Changed header to GPL version 2 only sql/spatial.cc: Changed header to GPL version 2 only sql/spatial.h: Changed header to GPL version 2 only sql/sql_acl.cc: Changed header to GPL version 2 only sql/sql_acl.h: Changed header to GPL version 2 only sql/sql_analyse.cc: Changed header to GPL version 2 only sql/sql_analyse.h: Changed header to GPL version 2 only sql/sql_array.h: Changed header to GPL version 2 only sql/sql_base.cc: Changed header to GPL version 2 only sql/sql_bitmap.h: Changed header to GPL version 2 only sql/sql_cache.cc: Changed header to GPL version 2 only sql/sql_cache.h: Changed header to GPL version 2 only sql/sql_class.cc: Changed header to GPL version 2 only sql/sql_class.h: Changed header to GPL version 2 only sql/sql_client.cc: Changed header to GPL version 2 only sql/sql_crypt.cc: Changed header to GPL version 2 only sql/sql_crypt.h: Changed header to GPL version 2 only sql/sql_cursor.cc: Changed header to GPL version 2 only sql/sql_cursor.h: Changed header to GPL version 2 only sql/sql_db.cc: Changed header to GPL version 2 only sql/sql_delete.cc: Changed header to GPL version 2 only sql/sql_derived.cc: Changed header to GPL version 2 only sql/sql_do.cc: Changed header to GPL version 2 only sql/sql_error.cc: Changed header to GPL version 2 only sql/sql_error.h: Changed header to GPL version 2 only sql/sql_handler.cc: Changed header to GPL version 2 only sql/sql_help.cc: Changed header to GPL version 2 only sql/sql_insert.cc: Changed header to GPL version 2 only sql/sql_lex.cc: Changed header to GPL version 2 only sql/sql_lex.h: Changed header to GPL version 2 only sql/sql_list.cc: Changed header to GPL version 2 only sql/sql_list.h: Changed header to GPL version 2 only sql/sql_load.cc: Changed header to GPL version 2 only sql/sql_locale.cc: Changed header to GPL version 2 only sql/sql_manager.cc: Changed header to GPL version 2 only sql/sql_manager.h: Changed header to GPL version 2 only sql/sql_map.cc: Changed header to GPL version 2 only sql/sql_map.h: Changed header to GPL version 2 only sql/sql_olap.cc: Changed header to GPL version 2 only sql/sql_parse.cc: Changed header to GPL version 2 only sql/sql_prepare.cc: Changed header to GPL version 2 only sql/sql_rename.cc: Changed header to GPL version 2 only sql/sql_repl.cc: Changed header to GPL version 2 only sql/sql_repl.h: Changed header to GPL version 2 only sql/sql_select.cc: Changed header to GPL version 2 only sql/sql_select.h: Changed header to GPL version 2 only sql/sql_show.cc: Changed header to GPL version 2 only sql/sql_sort.h: Changed header to GPL version 2 only sql/sql_state.c: Changed header to GPL version 2 only sql/sql_string.cc: Changed header to GPL version 2 only sql/sql_string.h: Changed header to GPL version 2 only sql/sql_table.cc: Changed header to GPL version 2 only sql/sql_test.cc: Changed header to GPL version 2 only sql/sql_trigger.cc: Changed header to GPL version 2 only sql/sql_trigger.h: Changed header to GPL version 2 only sql/sql_udf.cc: Changed header to GPL version 2 only sql/sql_udf.h: Changed header to GPL version 2 only sql/sql_union.cc: Changed header to GPL version 2 only sql/sql_update.cc: Changed header to GPL version 2 only sql-bench/Makefile.am: Changed header to GPL version 2 only sql-bench/as3ap.sh: Changed header to GPL version 2 only sql-bench/bench-count-distinct.sh: Changed header to GPL version 2 only sql-bench/bench-init.pl.sh: Changed header to GPL version 2 only sql-bench/compare-results.sh: Changed header to GPL version 2 only sql-bench/copy-db.sh: Changed header to GPL version 2 only sql-bench/crash-me.sh: Changed header to GPL version 2 only sql-bench/print-limit-table: Changed header to GPL version 2 only sql-bench/run-all-tests.sh: Changed header to GPL version 2 only sql/examples/ha_example.cc: Changed header to GPL version 2 only sql/examples/ha_example.h: Changed header to GPL version 2 only sql/examples/ha_tina.cc: Changed header to GPL version 2 only sql/examples/ha_tina.h: Changed header to GPL version 2 only sql/share/Makefile.am: Changed header to GPL version 2 only sql/share/charsets/Index.xml: Changed header to GPL version 2 only sql/share/charsets/armscii8.xml: Changed header to GPL version 2 only sql/share/charsets/ascii.xml: Changed header to GPL version 2 only sql/share/charsets/cp1250.xml: Changed header to GPL version 2 only sql/share/charsets/cp1251.xml: Changed header to GPL version 2 only sql/share/charsets/cp1256.xml: Changed header to GPL version 2 only sql/share/charsets/cp1257.xml: Changed header to GPL version 2 only sql/share/charsets/cp850.xml: Changed header to GPL version 2 only sql/share/charsets/cp852.xml: Changed header to GPL version 2 only sql/share/charsets/cp866.xml: Changed header to GPL version 2 only sql/share/charsets/dec8.xml: Changed header to GPL version 2 only sql/share/charsets/geostd8.xml: Changed header to GPL version 2 only sql/share/charsets/greek.xml: Changed header to GPL version 2 only sql/share/charsets/hebrew.xml: Changed header to GPL version 2 only sql/share/charsets/hp8.xml: Changed header to GPL version 2 only sql/share/charsets/keybcs2.xml: Changed header to GPL version 2 only sql/share/charsets/koi8r.xml: Changed header to GPL version 2 only sql/share/charsets/koi8u.xml: Changed header to GPL version 2 only sql/share/charsets/latin1.xml: Changed header to GPL version 2 only sql/share/charsets/latin2.xml: Changed header to GPL version 2 only sql/share/charsets/latin5.xml: Changed header to GPL version 2 only sql/share/charsets/latin7.xml: Changed header to GPL version 2 only sql/share/charsets/macce.xml: Changed header to GPL version 2 only sql/share/charsets/macroman.xml: Changed header to GPL version 2 only sql/share/charsets/swe7.xml: Changed header to GPL version 2 only sql/sql_view.cc: Changed header to GPL version 2 only sql/sql_view.h: Changed header to GPL version 2 only sql/sql_yacc.yy: Changed header to GPL version 2 only sql/stacktrace.c: Changed header to GPL version 2 only sql/stacktrace.h: Changed header to GPL version 2 only sql/strfunc.cc: Changed header to GPL version 2 only sql/structs.h: Changed header to GPL version 2 only sql/table.cc: Changed header to GPL version 2 only sql/table.h: Changed header to GPL version 2 only sql/thr_malloc.cc: Changed header to GPL version 2 only sql/time.cc: Changed header to GPL version 2 only sql/tzfile.h: Changed header to GPL version 2 only sql/tztime.cc: Changed header to GPL version 2 only sql/tztime.h: Changed header to GPL version 2 only sql/udf_example.c: Changed header to GPL version 2 only sql/uniques.cc: Changed header to GPL version 2 only sql/unireg.cc: Changed header to GPL version 2 only sql/unireg.h: Changed header to GPL version 2 only sql-bench/server-cfg.sh: Changed header to GPL version 2 only sql-bench/test-ATIS.sh: Changed header to GPL version 2 only sql-bench/test-alter-table.sh: Changed header to GPL version 2 only sql-bench/test-big-tables.sh: Changed header to GPL version 2 only sql-bench/test-connect.sh: Changed header to GPL version 2 only sql-bench/test-create.sh: Changed header to GPL version 2 only sql-bench/test-insert.sh: Changed header to GPL version 2 only sql-bench/test-select.sh: Changed header to GPL version 2 only sql-bench/test-transactions.sh: Changed header to GPL version 2 only sql-bench/test-wisconsin.sh: Changed header to GPL version 2 only sql-common/Makefile.am: Changed header to GPL version 2 only sql-common/client.c: Changed header to GPL version 2 only sql-common/my_time.c: Changed header to GPL version 2 only sql-common/my_user.c: Changed header to GPL version 2 only sql-common/pack.c: Changed header to GPL version 2 only strings/Makefile.am: Changed header to GPL version 2 only strings/bchange.c: Changed header to GPL version 2 only strings/bcmp.c: Changed header to GPL version 2 only strings/bcopy-duff.c: Changed header to GPL version 2 only strings/bfill.c: Changed header to GPL version 2 only strings/bmove.c: Changed header to GPL version 2 only strings/bmove512.c: Changed header to GPL version 2 only strings/bmove_upp-sparc.s: Changed header to GPL version 2 only strings/bmove_upp.c: Changed header to GPL version 2 only strings/bzero.c: Changed header to GPL version 2 only strings/conf_to_src.c: Changed header to GPL version 2 only strings/ctype-big5.c: Changed header to GPL version 2 only strings/ctype-bin.c: Changed header to GPL version 2 only strings/ctype-cp932.c: Changed header to GPL version 2 only strings/ctype-czech.c: Changed header to GPL version 2 only strings/ctype-euc_kr.c: Changed header to GPL version 2 only strings/ctype-eucjpms.c: Changed header to GPL version 2 only strings/ctype-gb2312.c: Changed header to GPL version 2 only strings/ctype-gbk.c: Changed header to GPL version 2 only strings/ctype-latin1.c: Changed header to GPL version 2 only strings/ctype-mb.c: Changed header to GPL version 2 only strings/ctype-simple.c: Changed header to GPL version 2 only strings/ctype-sjis.c: Changed header to GPL version 2 only strings/ctype-tis620.c: Changed header to GPL version 2 only strings/ctype-uca.c: Changed header to GPL version 2 only strings/ctype-ucs2.c: Changed header to GPL version 2 only strings/ctype-ujis.c: Changed header to GPL version 2 only strings/ctype-utf8.c: Changed header to GPL version 2 only strings/ctype-win1250ch.c: Changed header to GPL version 2 only strings/ctype.c: Changed header to GPL version 2 only strings/decimal.c: Changed header to GPL version 2 only strings/do_ctype.c: Changed header to GPL version 2 only strings/int2str.c: Changed header to GPL version 2 only strings/is_prefix.c: Changed header to GPL version 2 only strings/llstr.c: Changed header to GPL version 2 only strings/longlong2str-x86.s: Changed header to GPL version 2 only strings/longlong2str.c: Changed header to GPL version 2 only strings/longlong2str_asm.c: Changed header to GPL version 2 only strings/macros.asm: Changed header to GPL version 2 only strings/memcmp.c: Changed header to GPL version 2 only strings/memcpy.c: Changed header to GPL version 2 only strings/memset.c: Changed header to GPL version 2 only strings/my_strtoll10-x86.s: Changed header to GPL version 2 only strings/my_strtoll10.c: Changed header to GPL version 2 only strings/my_vsnprintf.c: Changed header to GPL version 2 only strings/ptr_cmp.asm: Changed header to GPL version 2 only strings/r_strinstr.c: Changed header to GPL version 2 only strings/str2int.c: Changed header to GPL version 2 only strings/str_alloc.c: Changed header to GPL version 2 only strings/str_test.c: Changed header to GPL version 2 only strings/strappend-sparc.s: Changed header to GPL version 2 only strings/strappend.c: Changed header to GPL version 2 only strings/strcat.c: Changed header to GPL version 2 only strings/strcend.c: Changed header to GPL version 2 only strings/strchr.c: Changed header to GPL version 2 only strings/strcmp.c: Changed header to GPL version 2 only strings/strcont.c: Changed header to GPL version 2 only strings/strend-sparc.s: Changed header to GPL version 2 only strings/strend.c: Changed header to GPL version 2 only strings/strfill.c: Changed header to GPL version 2 only strings/strings-not-used.h: Changed header to GPL version 2 only strings/strings-x86.s: Changed header to GPL version 2 only strings/strings.asm: Changed header to GPL version 2 only strings/strinstr-sparc.s: Changed header to GPL version 2 only strings/strinstr.c: Changed header to GPL version 2 only strings/strlen.c: Changed header to GPL version 2 only strings/strmake-sparc.s: Changed header to GPL version 2 only strings/strmake.c: Changed header to GPL version 2 only strings/strmov-sparc.s: Changed header to GPL version 2 only strings/strmov.c: Changed header to GPL version 2 only strings/strnlen.c: Changed header to GPL version 2 only strings/strnmov-sparc.s: Changed header to GPL version 2 only strings/strnmov.c: Changed header to GPL version 2 only strings/strrchr.c: Changed header to GPL version 2 only strings/strstr-sparc.s: Changed header to GPL version 2 only strings/strstr.c: Changed header to GPL version 2 only strings/strto.c: Changed header to GPL version 2 only strings/strtol.c: Changed header to GPL version 2 only strings/strtoll.c: Changed header to GPL version 2 only strings/strtoul.c: Changed header to GPL version 2 only strings/strtoull.c: Changed header to GPL version 2 only strings/strxmov-sparc.s: Changed header to GPL version 2 only strings/strxmov.asm: Changed header to GPL version 2 only strings/strxmov.c: Changed header to GPL version 2 only strings/strxnmov.c: Changed header to GPL version 2 only strings/t_ctype.h: Changed header to GPL version 2 only strings/udiv.c: Changed header to GPL version 2 only strings/xml.c: Changed header to GPL version 2 only support-files/MacOSX/Makefile.am: Changed header to GPL version 2 only support-files/Makefile.am: Changed header to GPL version 2 only support-files/MySQL-shared-compat.spec.sh: Changed header to GPL version 2 only tests/Makefile.am: Changed header to GPL version 2 only tests/connect_test.c: Changed header to GPL version 2 only tests/deadlock_test.c: Changed header to GPL version 2 only tests/insert_test.c: Changed header to GPL version 2 only tests/list_test.c: Changed header to GPL version 2 only tests/mysql_client_test.c: Changed header to GPL version 2 only tests/select_test.c: Changed header to GPL version 2 only tests/showdb_test.c: Changed header to GPL version 2 only tests/ssl_test.c: Changed header to GPL version 2 only tests/thread_test.c: Changed header to GPL version 2 only tools/Makefile.am: Changed header to GPL version 2 only tools/mysqlmanager.c: Changed header to GPL version 2 only vio/Makefile.am: Changed header to GPL version 2 only vio/test-ssl.c: Changed header to GPL version 2 only vio/test-sslclient.c: Changed header to GPL version 2 only vio/test-sslserver.c: Changed header to GPL version 2 only vio/vio.c: Changed header to GPL version 2 only vio/vio_priv.h: Changed header to GPL version 2 only vio/viosocket.c: Changed header to GPL version 2 only vio/viossl.c: Changed header to GPL version 2 only vio/viosslfactories.c: Changed header to GPL version 2 only vio/viotest-ssl.c: Changed header to GPL version 2 only win/Makefile.am: Changed header to GPL version 2 only zlib/Makefile.am: Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <NDBT.hpp>
#include <NDBT_Test.hpp>
#include <HugoTransactions.hpp>
#include <UtilTransactions.hpp>
#include <NdbRestarter.hpp>
#include <Vector.hpp>
#include <random.h>
BUG#21154 The management server consumes too much CPU BUG#13987 Cluster: Loss of data nodes can cause high CPU usage from ndb_mgmd fix the actual problem (getting incomplete line of data), introduced with previous improvement. also add list sessions, get session and get session id to mgmapi to allow the implementation of a test case for this exact problem. ndb/include/mgmapi/mgmapi.h: Add internal ndb_mgm_get_fd for use in test case ndb/include/mgmapi/mgmapi_debug.h: Add internal get_session_id and get_session ndb/include/util/InputStream.hpp: - fix warning when building with gcc 4 - add mutex to be UNLOCKED when blocking (e.g. select(2)) - this means we can list sessions in a threadsafe way - add this weird startover member to SocketInputStream - this helps work out if we've read a newline yet and should start inserting into buffer from the start ndb/include/util/Parser.hpp: add mutex to context to pass down to SocketInputStream ndb/include/util/socket_io.h: readln_socket accepts mutex to UNLOCK around select(2) ndb/src/common/util/InputStream.cpp: remove evil, add more. As ndb/src/common/util/Parser.cpp: set mutex for passing down to InputStream to unlock on select(2). change way detecting of NoLine ndb/src/common/util/socket_io.cpp: unlock a mutex around select so that we can nicely do thread safe listing of sessions. Always retrieve data from the OS so that we instantly get EOF on disconnect and don't end up spinning looking for a newline. ndb/src/mgmapi/mgmapi.cpp: add internal ndb_mgm_get_fd() for internal testing internal/debug: ndb_mgm_get_session_id ndb_mgm_get_session ndb/src/mgmsrv/Services.cpp: Add list sessions, get session id and get session. introduce a session mutex ndb/src/mgmsrv/Services.hpp: Add list and get session. Add session_id to MgmApiSession. ndb/test/ndbapi/testMgm.cpp: Add test for MgmApiSession disconnection (mgmd at 100%)
2006-10-04 02:38:31 +10:00
#include <mgmapi.h>
#include <mgmapi_debug.h>
#include <ndb_logevent.h>
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
#include <InputStream.hpp>
#include <signaldata/EventReport.hpp>
int runLoadTable(NDBT_Context* ctx, NDBT_Step* step){
int records = ctx->getNumRecords();
HugoTransactions hugoTrans(*ctx->getTab());
if (hugoTrans.loadTable(GETNDB(step), records) != 0){
return NDBT_FAILED;
}
return NDBT_OK;
}
int runClearTable(NDBT_Context* ctx, NDBT_Step* step){
int records = ctx->getNumRecords();
UtilTransactions utilTrans(*ctx->getTab());
if (utilTrans.clearTable2(GETNDB(step), records) != 0){
return NDBT_FAILED;
}
return NDBT_OK;
}
int create_index_on_pk(Ndb* pNdb, const char* tabName){
int result = NDBT_OK;
const NdbDictionary::Table * tab = NDBT_Table::discoverTableFromDb(pNdb,
tabName);
// Create index
const char* idxName = "IDX_ON_PK";
ndbout << "Create: " <<idxName << "( ";
NdbDictionary::Index pIdx(idxName);
pIdx.setTable(tabName);
pIdx.setType(NdbDictionary::Index::UniqueHashIndex);
for (int c = 0; c< tab->getNoOfPrimaryKeys(); c++){
pIdx.addIndexColumn(tab->getPrimaryKey(c));
ndbout << tab->getPrimaryKey(c)<<" ";
}
ndbout << ") ";
if (pNdb->getDictionary()->createIndex(pIdx) != 0){
ndbout << "FAILED!" << endl;
const NdbError err = pNdb->getDictionary()->getNdbError();
ERR(err);
result = NDBT_FAILED;
} else {
ndbout << "OK!" << endl;
}
return result;
}
int drop_index_on_pk(Ndb* pNdb, const char* tabName){
int result = NDBT_OK;
const char* idxName = "IDX_ON_PK";
ndbout << "Drop: " << idxName;
if (pNdb->getDictionary()->dropIndex(idxName, tabName) != 0){
ndbout << "FAILED!" << endl;
const NdbError err = pNdb->getDictionary()->getNdbError();
ERR(err);
result = NDBT_FAILED;
} else {
ndbout << "OK!" << endl;
}
return result;
}
#define CHECK(b) if (!(b)) { \
g_err << "ERR: "<< step->getName() \
<< " failed on line " << __LINE__ << endl; \
result = NDBT_FAILED; \
continue; }
int runTestSingleUserMode(NDBT_Context* ctx, NDBT_Step* step){
int result = NDBT_OK;
int loops = ctx->getNumLoops();
int records = ctx->getNumRecords();
Ndb* pNdb = GETNDB(step);
NdbRestarter restarter;
char tabName[255];
strncpy(tabName, ctx->getTab()->getName(), 255);
ndbout << "tabName="<<tabName<<endl;
int i = 0;
int count;
HugoTransactions hugoTrans(*ctx->getTab());
UtilTransactions utilTrans(*ctx->getTab());
while (i<loops && result == NDBT_OK) {
g_info << i << ": ";
int timeout = 120;
// Test that the single user mode api can do everything
CHECK(restarter.enterSingleUserMode(pNdb->getNodeId()) == 0);
CHECK(restarter.waitClusterSingleUser(timeout) == 0);
CHECK(hugoTrans.loadTable(pNdb, records, 128) == 0);
CHECK(hugoTrans.pkReadRecords(pNdb, records) == 0);
CHECK(hugoTrans.pkUpdateRecords(pNdb, records) == 0);
CHECK(utilTrans.selectCount(pNdb, 64, &count) == 0);
CHECK(count == records);
CHECK(hugoTrans.pkDelRecords(pNdb, records/2) == 0);
CHECK(hugoTrans.scanReadRecords(pNdb, records/2, 0, 64) == 0);
CHECK(utilTrans.selectCount(pNdb, 64, &count) == 0);
CHECK(count == (records/2));
CHECK(utilTrans.clearTable(pNdb, records/2) == 0);
CHECK(restarter.exitSingleUserMode() == 0);
CHECK(restarter.waitClusterStarted(timeout) == 0);
// Test create index in single user mode
CHECK(restarter.enterSingleUserMode(pNdb->getNodeId()) == 0);
CHECK(restarter.waitClusterSingleUser(timeout) == 0);
CHECK(create_index_on_pk(pNdb, tabName) == 0);
CHECK(hugoTrans.loadTable(pNdb, records, 128) == 0);
CHECK(hugoTrans.pkReadRecords(pNdb, records) == 0);
CHECK(hugoTrans.pkUpdateRecords(pNdb, records) == 0);
CHECK(utilTrans.selectCount(pNdb, 64, &count) == 0);
CHECK(count == records);
CHECK(hugoTrans.pkDelRecords(pNdb, records/2) == 0);
CHECK(drop_index_on_pk(pNdb, tabName) == 0);
CHECK(restarter.exitSingleUserMode() == 0);
CHECK(restarter.waitClusterStarted(timeout) == 0);
// Test recreate index in single user mode
CHECK(create_index_on_pk(pNdb, tabName) == 0);
CHECK(hugoTrans.loadTable(pNdb, records, 128) == 0);
CHECK(utilTrans.selectCount(pNdb, 64, &count) == 0);
CHECK(restarter.enterSingleUserMode(pNdb->getNodeId()) == 0);
CHECK(restarter.waitClusterSingleUser(timeout) == 0);
CHECK(drop_index_on_pk(pNdb, tabName) == 0);
CHECK(utilTrans.selectCount(pNdb, 64, &count) == 0);
CHECK(create_index_on_pk(pNdb, tabName) == 0);
CHECK(restarter.exitSingleUserMode() == 0);
CHECK(restarter.waitClusterStarted(timeout) == 0);
CHECK(drop_index_on_pk(pNdb, tabName) == 0);
CHECK(utilTrans.clearTable(GETNDB(step), records) == 0);
ndbout << "Restarting cluster" << endl;
CHECK(restarter.restartAll() == 0);
CHECK(restarter.waitClusterStarted(timeout) == 0);
CHECK(pNdb->waitUntilReady(timeout) == 0);
i++;
}
return result;
}
BUG#21154 The management server consumes too much CPU BUG#13987 Cluster: Loss of data nodes can cause high CPU usage from ndb_mgmd fix the actual problem (getting incomplete line of data), introduced with previous improvement. also add list sessions, get session and get session id to mgmapi to allow the implementation of a test case for this exact problem. ndb/include/mgmapi/mgmapi.h: Add internal ndb_mgm_get_fd for use in test case ndb/include/mgmapi/mgmapi_debug.h: Add internal get_session_id and get_session ndb/include/util/InputStream.hpp: - fix warning when building with gcc 4 - add mutex to be UNLOCKED when blocking (e.g. select(2)) - this means we can list sessions in a threadsafe way - add this weird startover member to SocketInputStream - this helps work out if we've read a newline yet and should start inserting into buffer from the start ndb/include/util/Parser.hpp: add mutex to context to pass down to SocketInputStream ndb/include/util/socket_io.h: readln_socket accepts mutex to UNLOCK around select(2) ndb/src/common/util/InputStream.cpp: remove evil, add more. As ndb/src/common/util/Parser.cpp: set mutex for passing down to InputStream to unlock on select(2). change way detecting of NoLine ndb/src/common/util/socket_io.cpp: unlock a mutex around select so that we can nicely do thread safe listing of sessions. Always retrieve data from the OS so that we instantly get EOF on disconnect and don't end up spinning looking for a newline. ndb/src/mgmapi/mgmapi.cpp: add internal ndb_mgm_get_fd() for internal testing internal/debug: ndb_mgm_get_session_id ndb_mgm_get_session ndb/src/mgmsrv/Services.cpp: Add list sessions, get session id and get session. introduce a session mutex ndb/src/mgmsrv/Services.hpp: Add list and get session. Add session_id to MgmApiSession. ndb/test/ndbapi/testMgm.cpp: Add test for MgmApiSession disconnection (mgmd at 100%)
2006-10-04 02:38:31 +10:00
int runTestApiSession(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
Uint64 session_id= 0;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
ndb_mgm_connect(h,0,0,0);
int s= ndb_mgm_get_fd(h);
session_id= ndb_mgm_get_session_id(h);
ndbout << "MGM Session id: " << session_id << endl;
write(s,"get",3);
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
struct NdbMgmSession sess;
int slen= sizeof(struct NdbMgmSession);
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
ndb_mgm_connect(h,0,0,0);
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
NdbSleep_SecSleep(1);
BUG#21154 The management server consumes too much CPU BUG#13987 Cluster: Loss of data nodes can cause high CPU usage from ndb_mgmd fix the actual problem (getting incomplete line of data), introduced with previous improvement. also add list sessions, get session and get session id to mgmapi to allow the implementation of a test case for this exact problem. ndb/include/mgmapi/mgmapi.h: Add internal ndb_mgm_get_fd for use in test case ndb/include/mgmapi/mgmapi_debug.h: Add internal get_session_id and get_session ndb/include/util/InputStream.hpp: - fix warning when building with gcc 4 - add mutex to be UNLOCKED when blocking (e.g. select(2)) - this means we can list sessions in a threadsafe way - add this weird startover member to SocketInputStream - this helps work out if we've read a newline yet and should start inserting into buffer from the start ndb/include/util/Parser.hpp: add mutex to context to pass down to SocketInputStream ndb/include/util/socket_io.h: readln_socket accepts mutex to UNLOCK around select(2) ndb/src/common/util/InputStream.cpp: remove evil, add more. As ndb/src/common/util/Parser.cpp: set mutex for passing down to InputStream to unlock on select(2). change way detecting of NoLine ndb/src/common/util/socket_io.cpp: unlock a mutex around select so that we can nicely do thread safe listing of sessions. Always retrieve data from the OS so that we instantly get EOF on disconnect and don't end up spinning looking for a newline. ndb/src/mgmapi/mgmapi.cpp: add internal ndb_mgm_get_fd() for internal testing internal/debug: ndb_mgm_get_session_id ndb_mgm_get_session ndb/src/mgmsrv/Services.cpp: Add list sessions, get session id and get session. introduce a session mutex ndb/src/mgmsrv/Services.hpp: Add list and get session. Add session_id to MgmApiSession. ndb/test/ndbapi/testMgm.cpp: Add test for MgmApiSession disconnection (mgmd at 100%)
2006-10-04 02:38:31 +10:00
if(ndb_mgm_get_session(h,session_id,&sess,&slen))
{
ndbout << "Failed, session still exists" << endl;
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return NDBT_FAILED;
}
else
{
ndbout << "SUCCESS: session is gone" << endl;
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return NDBT_OK;
}
}
int runTestApiConnectTimeout(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
int result= NDBT_FAILED;
int cc= 0;
int mgmd_nodeid= 0;
ndb_mgm_reply reply;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
ndbout << "TEST connect timeout" << endl;
ndb_mgm_set_timeout(h, 3000);
struct timeval tstart, tend;
int secs;
timerclear(&tstart);
timerclear(&tend);
gettimeofday(&tstart,NULL);
ndb_mgm_connect(h,0,0,0);
gettimeofday(&tend,NULL);
secs= tend.tv_sec - tstart.tv_sec;
ndbout << "Took about: " << secs <<" seconds"<<endl;
if(secs < 4)
result= NDBT_OK;
else
goto done;
ndb_mgm_set_connectstring(h, mgm);
ndbout << "TEST connect timeout" << endl;
ndb_mgm_destroy_handle(&h);
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, "1.1.1.1");
ndbout << "TEST connect timeout (invalid host)" << endl;
ndb_mgm_set_timeout(h, 3000);
timerclear(&tstart);
timerclear(&tend);
gettimeofday(&tstart,NULL);
ndb_mgm_connect(h,0,0,0);
gettimeofday(&tend,NULL);
secs= tend.tv_sec - tstart.tv_sec;
ndbout << "Took about: " << secs <<" seconds"<<endl;
if(secs < 4)
result= NDBT_OK;
else
result= NDBT_FAILED;
done:
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return result;
}
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
int runTestApiTimeoutBasic(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
int result= NDBT_FAILED;
int cc= 0;
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
int mgmd_nodeid= 0;
ndb_mgm_reply reply;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndbout << "TEST timout check_connection" << endl;
int errs[] = { 1, 2, 3, -1};
for(int error_ins_no=0; errs[error_ins_no]!=-1; error_ins_no++)
{
int error_ins= errs[error_ins_no];
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndbout << "trying error " << error_ins << endl;
ndb_mgm_connect(h,0,0,0);
if(ndb_mgm_check_connection(h) < 0)
{
result= NDBT_FAILED;
goto done;
}
mgmd_nodeid= ndb_mgm_get_mgmd_nodeid(h);
if(mgmd_nodeid==0)
{
ndbout << "Failed to get mgmd node id to insert error" << endl;
result= NDBT_FAILED;
goto done;
}
reply.return_code= 0;
if(ndb_mgm_insert_error(h, mgmd_nodeid, error_ins, &reply)< 0)
{
ndbout << "failed to insert error " << endl;
result= NDBT_FAILED;
goto done;
}
ndb_mgm_set_timeout(h,2500);
cc= ndb_mgm_check_connection(h);
if(cc < 0)
result= NDBT_OK;
else
result= NDBT_FAILED;
if(ndb_mgm_is_connected(h))
{
ndbout << "FAILED: still connected" << endl;
result= NDBT_FAILED;
}
}
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndbout << "TEST get_mgmd_nodeid" << endl;
ndb_mgm_connect(h,0,0,0);
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
if(ndb_mgm_insert_error(h, mgmd_nodeid, 0, &reply)< 0)
{
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndbout << "failed to remove inserted error " << endl;
result= NDBT_FAILED;
goto done;
}
cc= ndb_mgm_get_mgmd_nodeid(h);
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndbout << "got node id: " << cc << endl;
if(cc==0)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
ndbout << "FAILED: didn't get node id" << endl;
result= NDBT_FAILED;
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
}
else
result= NDBT_OK;
ndbout << "TEST end_session" << endl;
ndb_mgm_connect(h,0,0,0);
if(ndb_mgm_insert_error(h, mgmd_nodeid, 4, &reply)< 0)
{
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndbout << "FAILED: insert error 1" << endl;
result= NDBT_FAILED;
goto done;
}
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
cc= ndb_mgm_end_session(h);
if(cc==0)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
ndbout << "FAILED: success in calling end_session" << endl;
result= NDBT_FAILED;
}
else if(ndb_mgm_get_latest_error(h)!=ETIMEDOUT)
{
ndbout << "FAILED: Incorrect error code (" << ndb_mgm_get_latest_error(h)
<< " != expected " << ETIMEDOUT << ") desc: "
<< ndb_mgm_get_latest_error_desc(h)
<< " line: " << ndb_mgm_get_latest_error_line(h)
<< " msg: " << ndb_mgm_get_latest_error_msg(h)
<< endl;
result= NDBT_FAILED;
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
}
else
result= NDBT_OK;
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
if(ndb_mgm_is_connected(h))
{
ndbout << "FAILED: is still connected after error" << endl;
result= NDBT_FAILED;
}
done:
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return result;
}
int runTestApiGetStatusTimeout(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
int result= NDBT_OK;
int cc= 0;
int mgmd_nodeid= 0;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
int errs[] = { 0, 5, 6, 7, 8, 9, -1 };
for(int error_ins_no=0; errs[error_ins_no]!=-1; error_ins_no++)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
int error_ins= errs[error_ins_no];
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndb_mgm_connect(h,0,0,0);
if(ndb_mgm_check_connection(h) < 0)
{
result= NDBT_FAILED;
goto done;
}
mgmd_nodeid= ndb_mgm_get_mgmd_nodeid(h);
if(mgmd_nodeid==0)
{
ndbout << "Failed to get mgmd node id to insert error" << endl;
result= NDBT_FAILED;
goto done;
}
ndb_mgm_reply reply;
reply.return_code= 0;
if(ndb_mgm_insert_error(h, mgmd_nodeid, error_ins, &reply)< 0)
{
ndbout << "failed to insert error " << error_ins << endl;
result= NDBT_FAILED;
}
ndbout << "trying error: " << error_ins << endl;
ndb_mgm_set_timeout(h,2500);
struct ndb_mgm_cluster_state *cl= ndb_mgm_get_status(h);
if(cl!=NULL)
free(cl);
/*
* For whatever strange reason,
* get_status is okay with not having the last enter there.
* instead of "fixing" the api, let's have a special case
* so we don't break any behaviour
*/
if(error_ins!=0 && error_ins!=9 && cl!=NULL)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
ndbout << "FAILED: got a ndb_mgm_cluster_state back" << endl;
result= NDBT_FAILED;
}
if(error_ins!=0 && error_ins!=9 && ndb_mgm_is_connected(h))
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
ndbout << "FAILED: is still connected after error" << endl;
result= NDBT_FAILED;
}
if(error_ins!=0 && error_ins!=9 && ndb_mgm_get_latest_error(h)!=ETIMEDOUT)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
ndbout << "FAILED: Incorrect error code (" << ndb_mgm_get_latest_error(h)
<< " != expected " << ETIMEDOUT << ") desc: "
<< ndb_mgm_get_latest_error_desc(h)
<< " line: " << ndb_mgm_get_latest_error_line(h)
<< " msg: " << ndb_mgm_get_latest_error_msg(h)
<< endl;
result= NDBT_FAILED;
}
}
done:
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return result;
}
int runTestMgmApiGetConfigTimeout(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
int result= NDBT_OK;
int mgmd_nodeid= 0;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
int errs[] = { 0, 1, 2, 3, -1 };
for(int error_ins_no=0; errs[error_ins_no]!=-1; error_ins_no++)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
int error_ins= errs[error_ins_no];
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndb_mgm_connect(h,0,0,0);
if(ndb_mgm_check_connection(h) < 0)
{
result= NDBT_FAILED;
goto done;
}
mgmd_nodeid= ndb_mgm_get_mgmd_nodeid(h);
if(mgmd_nodeid==0)
{
ndbout << "Failed to get mgmd node id to insert error" << endl;
result= NDBT_FAILED;
goto done;
}
ndb_mgm_reply reply;
reply.return_code= 0;
if(ndb_mgm_insert_error(h, mgmd_nodeid, error_ins, &reply)< 0)
{
ndbout << "failed to insert error " << error_ins << endl;
result= NDBT_FAILED;
}
ndbout << "trying error: " << error_ins << endl;
ndb_mgm_set_timeout(h,2500);
struct ndb_mgm_configuration *c= ndb_mgm_get_configuration(h,0);
if(c!=NULL)
free(c);
if(error_ins!=0 && c!=NULL)
{
ndbout << "FAILED: got a ndb_mgm_configuration back" << endl;
result= NDBT_FAILED;
}
if(error_ins!=0 && ndb_mgm_is_connected(h))
{
ndbout << "FAILED: is still connected after error" << endl;
result= NDBT_FAILED;
}
if(error_ins!=0 && ndb_mgm_get_latest_error(h)!=ETIMEDOUT)
{
ndbout << "FAILED: Incorrect error code (" << ndb_mgm_get_latest_error(h)
<< " != expected " << ETIMEDOUT << ") desc: "
<< ndb_mgm_get_latest_error_desc(h)
<< " line: " << ndb_mgm_get_latest_error_line(h)
<< " msg: " << ndb_mgm_get_latest_error_msg(h)
<< endl;
result= NDBT_FAILED;
}
}
done:
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return result;
}
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
int runTestMgmApiEventTimeout(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
int result= NDBT_OK;
int mgmd_nodeid= 0;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
int errs[] = { 10000, 0, -1 };
for(int error_ins_no=0; errs[error_ins_no]!=-1; error_ins_no++)
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
int error_ins= errs[error_ins_no];
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
ndb_mgm_connect(h,0,0,0);
if(ndb_mgm_check_connection(h) < 0)
{
result= NDBT_FAILED;
goto done;
}
mgmd_nodeid= ndb_mgm_get_mgmd_nodeid(h);
if(mgmd_nodeid==0)
{
ndbout << "Failed to get mgmd node id to insert error" << endl;
result= NDBT_FAILED;
goto done;
}
ndb_mgm_reply reply;
reply.return_code= 0;
if(ndb_mgm_insert_error(h, mgmd_nodeid, error_ins, &reply)< 0)
{
ndbout << "failed to insert error " << error_ins << endl;
result= NDBT_FAILED;
}
ndbout << "trying error: " << error_ins << endl;
ndb_mgm_set_timeout(h,2500);
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP,
1, NDB_MGM_EVENT_CATEGORY_STARTUP,
0 };
int fd= ndb_mgm_listen_event(h, filter);
if(fd==NDB_INVALID_SOCKET)
{
ndbout << "FAILED: could not listen to event" << endl;
result= NDBT_FAILED;
}
Uint32 theData[25];
EventReport *fake_event = (EventReport*)theData;
fake_event->setEventType(NDB_LE_NDBStopForced);
fake_event->setNodeId(42);
theData[2]= 0;
theData[3]= 0;
theData[4]= 0;
theData[5]= 0;
ndb_mgm_report_event(h, theData, 6);
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
char *tmp= 0;
char buf[512];
SocketInputStream in(fd,2000);
for(int i=0; i<20; i++)
{
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
if((tmp = in.gets(buf, sizeof(buf))))
{
// const char ping_token[]="<PING>";
// if(memcmp(ping_token,tmp,sizeof(ping_token)-1))
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
if(tmp && strlen(tmp))
ndbout << tmp;
}
else
{
if(in.timedout())
{
ndbout << "TIMED OUT READING EVENT at iteration " << i << endl;
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
break;
}
}
}
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
/*
* events go through a *DIFFERENT* socket than the NdbMgmHandle
* so we should still be connected (and be able to check_connection)
*
*/
if(ndb_mgm_check_connection(h) && !ndb_mgm_is_connected(h))
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
{
ndbout << "FAILED: is still connected after error" << endl;
result= NDBT_FAILED;
}
ndb_mgm_disconnect(h);
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
}
done:
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return result;
}
int runTestMgmApiStructEventTimeout(NDBT_Context* ctx, NDBT_Step* step)
{
char *mgm= ctx->getRemoteMgm();
int result= NDBT_OK;
int mgmd_nodeid= 0;
NdbMgmHandle h;
h= ndb_mgm_create_handle();
ndb_mgm_set_connectstring(h, mgm);
int errs[] = { 10000, 0, -1 };
for(int error_ins_no=0; errs[error_ins_no]!=-1; error_ins_no++)
{
int error_ins= errs[error_ins_no];
ndb_mgm_connect(h,0,0,0);
if(ndb_mgm_check_connection(h) < 0)
{
result= NDBT_FAILED;
goto done;
}
mgmd_nodeid= ndb_mgm_get_mgmd_nodeid(h);
if(mgmd_nodeid==0)
{
ndbout << "Failed to get mgmd node id to insert error" << endl;
result= NDBT_FAILED;
goto done;
}
ndb_mgm_reply reply;
reply.return_code= 0;
if(ndb_mgm_insert_error(h, mgmd_nodeid, error_ins, &reply)< 0)
{
ndbout << "failed to insert error " << error_ins << endl;
result= NDBT_FAILED;
}
ndbout << "trying error: " << error_ins << endl;
ndb_mgm_set_timeout(h,2500);
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP,
1, NDB_MGM_EVENT_CATEGORY_STARTUP,
0 };
NdbLogEventHandle le_handle= ndb_mgm_create_logevent_handle(h, filter);
struct ndb_logevent le;
for(int i=0; i<20; i++)
{
if(error_ins==0 || (error_ins!=0 && i<5))
{
Uint32 theData[25];
EventReport *fake_event = (EventReport*)theData;
fake_event->setEventType(NDB_LE_NDBStopForced);
fake_event->setNodeId(42);
theData[2]= 0;
theData[3]= 0;
theData[4]= 0;
theData[5]= 0;
ndb_mgm_report_event(h, theData, 6);
}
int r= ndb_logevent_get_next(le_handle, &le, 2500);
if(r>0)
{
ndbout << "Receieved event" << endl;
}
else if(r<0)
{
ndbout << "ERROR" << endl;
}
else // no event
{
ndbout << "TIMED OUT READING EVENT at iteration " << i << endl;
if(error_ins==0)
result= NDBT_FAILED;
else
result= NDBT_OK;
break;
}
}
/*
* events go through a *DIFFERENT* socket than the NdbMgmHandle
* so we should still be connected (and be able to check_connection)
*
*/
if(ndb_mgm_check_connection(h) && !ndb_mgm_is_connected(h))
{
ndbout << "FAILED: is still connected after error" << endl;
result= NDBT_FAILED;
}
ndb_mgm_disconnect(h);
}
done:
ndb_mgm_disconnect(h);
ndb_mgm_destroy_handle(&h);
return result;
}
NDBT_TESTSUITE(testMgm);
TESTCASE("SingleUserMode",
"Test single user mode"){
INITIALIZER(runTestSingleUserMode);
FINALIZER(runClearTable);
}
BUG#21154 The management server consumes too much CPU BUG#13987 Cluster: Loss of data nodes can cause high CPU usage from ndb_mgmd fix the actual problem (getting incomplete line of data), introduced with previous improvement. also add list sessions, get session and get session id to mgmapi to allow the implementation of a test case for this exact problem. ndb/include/mgmapi/mgmapi.h: Add internal ndb_mgm_get_fd for use in test case ndb/include/mgmapi/mgmapi_debug.h: Add internal get_session_id and get_session ndb/include/util/InputStream.hpp: - fix warning when building with gcc 4 - add mutex to be UNLOCKED when blocking (e.g. select(2)) - this means we can list sessions in a threadsafe way - add this weird startover member to SocketInputStream - this helps work out if we've read a newline yet and should start inserting into buffer from the start ndb/include/util/Parser.hpp: add mutex to context to pass down to SocketInputStream ndb/include/util/socket_io.h: readln_socket accepts mutex to UNLOCK around select(2) ndb/src/common/util/InputStream.cpp: remove evil, add more. As ndb/src/common/util/Parser.cpp: set mutex for passing down to InputStream to unlock on select(2). change way detecting of NoLine ndb/src/common/util/socket_io.cpp: unlock a mutex around select so that we can nicely do thread safe listing of sessions. Always retrieve data from the OS so that we instantly get EOF on disconnect and don't end up spinning looking for a newline. ndb/src/mgmapi/mgmapi.cpp: add internal ndb_mgm_get_fd() for internal testing internal/debug: ndb_mgm_get_session_id ndb_mgm_get_session ndb/src/mgmsrv/Services.cpp: Add list sessions, get session id and get session. introduce a session mutex ndb/src/mgmsrv/Services.hpp: Add list and get session. Add session_id to MgmApiSession. ndb/test/ndbapi/testMgm.cpp: Add test for MgmApiSession disconnection (mgmd at 100%)
2006-10-04 02:38:31 +10:00
TESTCASE("ApiSessionFailure",
"Test failures in MGMAPI session"){
INITIALIZER(runTestApiSession);
}
TESTCASE("ApiConnectTimeout",
"Connect timeout tests for MGMAPI"){
INITIALIZER(runTestApiConnectTimeout);
}
[PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream. In case of timeout, we set NdbMgmHandle->last_error and return NULL. In api calls not using ndb_mgm_call (or using it in conjunction with own IO), they'll need to check for timeouts manually. Macros are provided to do this. Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors (so we don't clobber NdbMgmHandle->last_error). This helps us provide the *consistent* semantic that on timeout we leave the NdbMgmHandle *disconnected*. We check for this in testMgm. Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error This will pick up the ETIMEDOUT errors and return them to client (through returning correct failure code for API call and setting NdbMgmHandle error). Applications written to MGMAPI before this patch will behave as before, and even hopefully check get_last_error and report the error back to the end user! Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we slightly change behaviour of mgmapi. Previously, if disconnect midway through a reply, where there were only optional parameters left, we'd get a Properties object from ndb_mgm_call() containing NULLs for the optional parameters, leading to interesting error messages. This enables the returning of the *real* message and actually improves the API without breaking compatibility. ndb_mgm_start_signallog ndb_mgm_stop_signallog ndb_mgm_log_signals ndb_mgm_set_trace ndb_mgm_insert_error ndb_mgm_set_int64_parameter [1] ndb_mgm_set_string_parameter [1] ndb_mgm_purge_stale_sessions [2] - return error code on error during ndb_mgm_call TODO: ndb_mgm_report_event [2] [1] marked for removal, unused. [2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented. Server side: in Services (per session) add macro for injecting timeout error (just waiting 10 seconds before continuing... it does work!) We inject these errors in a number of critical places - including the tricky api functions that don't just use ndb_mgm_call but do their own thing (get_config, get_status and friends) ATRT: Expand testMgm to add timout tests for API. Fully automated. *THEORETICALLY* timing dependent - an ultra-slow network will cause problems and "fake" failures... I welcome other solutions. Tests aren't exhaustive, but cover the generics and the tricky bits. Also test some calling semantics (incl disconnected on error). It is encouraged to add *more* mgmapi tests, not less :) InputStream: Fix where timedout error is set Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp =================================================================== storage/ndb/src/common/util/InputStream.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmapi/mgmapi_internal.h: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/src/mgmsrv/Services.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi storage/ndb/test/ndbapi/testMgm.cpp: WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
TESTCASE("ApiTimeoutBasic",
"Basic timeout tests for MGMAPI"){
INITIALIZER(runTestApiTimeoutBasic);
}
TESTCASE("ApiGetStatusTimeout",
"Test timeout for MGMAPI getStatus"){
INITIALIZER(runTestApiGetStatusTimeout);
}
TESTCASE("ApiGetConfigTimeout",
"Test timeouts for mgmapi get_configuration"){
INITIALIZER(runTestMgmApiGetConfigTimeout);
}
TESTCASE("ApiMgmEventTimeout",
"Test timeouts for mgmapi get_configuration"){
INITIALIZER(runTestMgmApiEventTimeout);
}
TESTCASE("ApiMgmStructEventTimeout",
"Test timeouts for mgmapi get_configuration"){
INITIALIZER(runTestMgmApiStructEventTimeout);
BUG#21154 The management server consumes too much CPU BUG#13987 Cluster: Loss of data nodes can cause high CPU usage from ndb_mgmd fix the actual problem (getting incomplete line of data), introduced with previous improvement. also add list sessions, get session and get session id to mgmapi to allow the implementation of a test case for this exact problem. ndb/include/mgmapi/mgmapi.h: Add internal ndb_mgm_get_fd for use in test case ndb/include/mgmapi/mgmapi_debug.h: Add internal get_session_id and get_session ndb/include/util/InputStream.hpp: - fix warning when building with gcc 4 - add mutex to be UNLOCKED when blocking (e.g. select(2)) - this means we can list sessions in a threadsafe way - add this weird startover member to SocketInputStream - this helps work out if we've read a newline yet and should start inserting into buffer from the start ndb/include/util/Parser.hpp: add mutex to context to pass down to SocketInputStream ndb/include/util/socket_io.h: readln_socket accepts mutex to UNLOCK around select(2) ndb/src/common/util/InputStream.cpp: remove evil, add more. As ndb/src/common/util/Parser.cpp: set mutex for passing down to InputStream to unlock on select(2). change way detecting of NoLine ndb/src/common/util/socket_io.cpp: unlock a mutex around select so that we can nicely do thread safe listing of sessions. Always retrieve data from the OS so that we instantly get EOF on disconnect and don't end up spinning looking for a newline. ndb/src/mgmapi/mgmapi.cpp: add internal ndb_mgm_get_fd() for internal testing internal/debug: ndb_mgm_get_session_id ndb_mgm_get_session ndb/src/mgmsrv/Services.cpp: Add list sessions, get session id and get session. introduce a session mutex ndb/src/mgmsrv/Services.hpp: Add list and get session. Add session_id to MgmApiSession. ndb/test/ndbapi/testMgm.cpp: Add test for MgmApiSession disconnection (mgmd at 100%)
2006-10-04 02:38:31 +10:00
}
NDBT_TESTSUITE_END(testMgm);
int main(int argc, const char** argv){
ndb_init() to all ndb programs ndb/examples/ndbapi_async_example/ndbapi_async.cpp: ndb_init() ndb/examples/ndbapi_example1/ndbapi_example1.cpp: ndb_init() ndb/examples/ndbapi_example2/ndbapi_example2.cpp: ndb_init() ndb/examples/ndbapi_example3/ndbapi_example3.cpp: ndb_init() ndb/examples/ndbapi_example4/ndbapi_example4.cpp: ndb_init() ndb/examples/ndbapi_example5/ndbapi_example5.cpp: ndb_init() ndb/examples/ndbapi_scan_example/ndbapi_scan.cpp: ndb_init() ndb/examples/select_all/select_all.cpp: ndb_init() ndb/include/ndb_global.h: ndb_init() ndb/src/common/util/Makefile.am: ndb_init() ndb/src/kernel/blocks/backup/read.cpp: ndb_init() ndb/src/kernel/blocks/backup/restore/main.cpp: ndb_init() ndb/src/kernel/main.cpp: ndb_init() ndb/src/kernel/vm/Configuration.cpp: ndb_init() ndb/src/mgmclient/main.cpp: ndb_init() ndb/src/mgmsrv/main.cpp: ndb_init() ndb/src/mgmsrv/mkconfig/mkconfig.cpp: ndb_init() ndb/src/ndbapi/Ndbinit.cpp: ndb_init() ndb/test/ndbapi/acid.cpp: ndb_init() ndb/test/ndbapi/acid2.cpp: ndb_init() ndb/test/ndbapi/benchronja.cpp: ndb_init() ndb/test/ndbapi/bulk_copy.cpp: ndb_init() ndb/test/ndbapi/cdrserver.cpp: ndb_init() ndb/test/ndbapi/celloDb.cpp: ndb_init() ndb/test/ndbapi/create_all_tabs.cpp: ndb_init() ndb/test/ndbapi/create_tab.cpp: ndb_init() ndb/test/ndbapi/drop_all_tabs.cpp: ndb_init() ndb/test/ndbapi/flexAsynch.cpp: ndb_init() ndb/test/ndbapi/flexBench.cpp: ndb_init() ndb/test/ndbapi/flexHammer.cpp: ndb_init() ndb/test/ndbapi/flexScan.cpp: ndb_init() ndb/test/ndbapi/flexTT.cpp: ndb_init() ndb/test/ndbapi/flexTimedAsynch.cpp: ndb_init() ndb/test/ndbapi/flex_bench_mysql.cpp: ndb_init() ndb/test/ndbapi/index.cpp: ndb_init() ndb/test/ndbapi/index2.cpp: ndb_init() ndb/test/ndbapi/initronja.cpp: ndb_init() ndb/test/ndbapi/interpreterInTup.cpp: ndb_init() ndb/test/ndbapi/mainAsyncGenerator.cpp: ndb_init() ndb/test/ndbapi/msa.cpp: ndb_init() ndb/test/ndbapi/restarter.cpp: ndb_init() ndb/test/ndbapi/restarter2.cpp: ndb_init() ndb/test/ndbapi/restarts.cpp: ndb_init() ndb/test/ndbapi/size.cpp: ndb_init() ndb/test/ndbapi/slow_select.cpp: ndb_init() ndb/test/ndbapi/testBackup.cpp: ndb_init() ndb/test/ndbapi/testBasic.cpp: ndb_init() ndb/test/ndbapi/testBasicAsynch.cpp: ndb_init() ndb/test/ndbapi/testBlobs.cpp: ndb_init() ndb/test/ndbapi/testDataBuffers.cpp: ndb_init() ndb/test/ndbapi/testDeadlock.cpp: ndb_init() ndb/test/ndbapi/testDict.cpp: ndb_init() ndb/test/ndbapi/testGrep.cpp: ndb_init() ndb/test/ndbapi/testGrepVerify.cpp: ndb_init() ndb/test/ndbapi/testIndex.cpp: ndb_init() ndb/test/ndbapi/testInterpreter.cpp: ndb_init() ndb/test/ndbapi/testMgm.cpp: ndb_init() ndb/test/ndbapi/bank/bankCreator.cpp: ndb_init() ndb/test/ndbapi/bank/bankMakeGL.cpp: ndb_init() ndb/test/ndbapi/bank/bankSumAccounts.cpp: ndb_init() ndb/test/ndbapi/bank/bankTimer.cpp: ndb_init() ndb/test/ndbapi/bank/bankTransactionMaker.cpp: ndb_init() ndb/test/ndbapi/bank/bankValidateAllGLs.cpp: ndb_init() ndb/test/ndbapi/bank/testBank.cpp: ndb_init() ndb/test/ndbapi/testNdbApi.cpp: ndb_init() ndb/test/ndbapi/testNodeRestart.cpp: ndb_init() ndb/test/ndbapi/testOIBasic.cpp: ndb_init() ndb/test/ndbapi/testOperations.cpp: ndb_init() ndb/test/ndbapi/testOrderedIndex.cpp: ndb_init() ndb/test/ndbapi/testReadPerf.cpp: ndb_init() ndb/test/ndbapi/testRestartGci.cpp: ndb_init() ndb/test/ndbapi/testScan.cpp: ndb_init() ndb/test/ndbapi/testScanInterpreter.cpp: ndb_init() ndb/test/ndbapi/testScanPerf.cpp: ndb_init() ndb/test/ndbapi/testSystemRestart.cpp: ndb_init() ndb/test/ndbapi/testTimeout.cpp: ndb_init() ndb/test/ndbapi/testTransactions.cpp: ndb_init() ndb/test/ndbapi/test_event.cpp: ndb_init() ndb/test/run-test/main.cpp: ndb_init() ndb/test/src/NDBT_Test.cpp: ndb_init() ndb/test/tools/copy_tab.cpp: ndb_init() ndb/test/tools/cpcc.cpp: ndb_init() ndb/test/tools/create_index.cpp: ndb_init() ndb/test/tools/hugoCalculator.cpp: ndb_init() ndb/test/tools/hugoFill.cpp: ndb_init() ndb/test/tools/hugoLoad.cpp: ndb_init() ndb/test/tools/hugoLockRecords.cpp: ndb_init() ndb/test/tools/hugoPkDelete.cpp: ndb_init() ndb/test/tools/hugoPkRead.cpp: ndb_init() ndb/test/tools/hugoPkReadRecord.cpp: ndb_init() ndb/test/tools/hugoPkUpdate.cpp: ndb_init() ndb/test/tools/hugoScanRead.cpp: ndb_init() ndb/test/tools/hugoScanUpdate.cpp: ndb_init() ndb/test/tools/restart.cpp: ndb_init() ndb/test/tools/transproxy.cpp: ndb_init() ndb/test/tools/verify_index.cpp: ndb_init() ndb/tools/delete_all.cpp: ndb_init() ndb/tools/desc.cpp: ndb_init() ndb/tools/drop_index.cpp: ndb_init() ndb/tools/drop_tab.cpp: ndb_init() ndb/tools/listTables.cpp: ndb_init() ndb/tools/ndbsql.cpp: ndb_init() ndb/tools/select_all.cpp: ndb_init() ndb/tools/select_count.cpp: ndb_init() ndb/tools/waiter.cpp: ndb_init()
2004-09-15 11:49:18 +02:00
ndb_init();
myRandom48Init(NdbTick_CurrentMillisecond());
return testMgm.execute(argc, argv);
}