mariadb/server-tools/instance-manager/guardian.h

128 lines
3.7 KiB
C
Raw Normal View History

Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
#ifndef INCLUDES_MYSQL_INSTANCE_MANAGER_GUARDIAN_H
#define INCLUDES_MYSQL_INSTANCE_MANAGER_GUARDIAN_H
/* Copyright (C) 2004 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
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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 <my_global.h>
Fix for AIX compilation failure: sacred knowledge of my_global.h nature (it should be included before any other include) was hidden from me. server-tools/instance-manager/commands.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/commands.h: Fix for AIX compilation failure & cleanup server-tools/instance-manager/factory.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/guardian.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/guardian.h: Fix for AIX compilation failure & cleanup server-tools/instance-manager/instance.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/instance.h: Fix for AIX compilation failure & cleanup server-tools/instance-manager/instance_map.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/instance_map.h: Fix for AIX compilation failure & cleanup server-tools/instance-manager/instance_options.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/log.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/manager.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/messages.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/messages.h: Fix for AIX compilation failure & cleanup server-tools/instance-manager/mysql_connection.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/mysqlmanager.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/options.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/parse.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/parse_output.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/protocol.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/protocol.h: Fix for AIX compilation failure & cleanup server-tools/instance-manager/thread_registry.cc: Fix for AIX compilation failure & cleanup server-tools/instance-manager/user_map.h: Fix for AIX compilation failure & cleanup
2005-03-22 02:04:14 +03:00
#include "thread_registry.h"
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
#include <my_sys.h>
#include <my_list.h>
Some minor fixes revealed as warnings by Intel compiler. client/mysqltest.c: Fixed a warning from using reference to a memory area, which is outside an object. This is just a minor clean-up, not a bug fix. server-tools/instance-manager/buffer.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/buffer.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/command.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/command.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/guardian.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/guardian.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/instance.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/instance.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/instance_map.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/instance_map.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/instance_options.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/instance_options.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/listener.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/listener.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/mysql_connection.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/mysql_connection.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/options.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/options.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/parse_output.cc: Removed unused goto. server-tools/instance-manager/thread_registry.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/thread_registry.h: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/user_map.cc: Fixed pragma warning for those compilers that do not support it. server-tools/instance-manager/user_map.h: Fixed pragma warning for those compilers that do not support it. sql/field.cc: Fixed a warning about overflow. sql/item.h: Fixed implicit function declaration warning. sql/item_sum.cc: Fixed implicit function declaration warning.
2005-09-23 21:28:56 +03:00
#if defined(__GNUC__) && defined(USE_PRAGMA_INTERFACE)
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
#pragma interface
#endif
more fixes for IM to substitude mysqld_safe in startup scripts BitKeeper/deleted/.del-thread_repository.cc~bba09f64f8cb4037: Delete: server-tools/instance-manager/thread_repository.cc BitKeeper/deleted/.del-thread_repository.h~e6a3b9cab7a6612a: Delete: server-tools/instance-manager/thread_repository.h server-tools/instance-manager/commands.cc: All instances are guarded by default now, so we need to perform check on whether the instance is nonguarded, rather then guarded when adding it to the list of guarded instnces. server-tools/instance-manager/guardian.cc: Guardian rewritten to start instances by default, and shut them down, when exiting. Behaviour of the guardian in case of the instance crash has changed. Now it tries to restart an instance constantly in the first 2 seconds after the crash was noticed, and then it tries restart an instance once in the MONITORING_INTERVAL. If it failed to restart instance for "restart_retry" (compiled-in value) times, guardian stops trying to restart it. server-tools/instance-manager/guardian.h: Several new functions and variables declared. server-tools/instance-manager/instance.cc: now start doesn't call stop(), but rather tries to remove the pidfile itself server-tools/instance-manager/instance.h: cleanup server-tools/instance-manager/instance_map.cc: no more "admin" options server-tools/instance-manager/instance_map.h: User and password purged from instance_map options, as IM shouldn't know them server-tools/instance-manager/instance_options.cc: new option added -- shutdown_delay, guarded option now called nonguaded and has the opposite meaning server-tools/instance-manager/instance_options.h: appropriate changes, reflecting options addition/removal server-tools/instance-manager/manager.cc: shutdown process is complicated a bit -- at first signal thread should stop guardian, and only then the IM itself server-tools/instance-manager/messages.cc: update error message server-tools/instance-manager/options.cc: admin user/password purged from mysqlmanager options
2005-01-31 23:54:08 +03:00
class Instance;
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
class Instance_map;
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
class Thread_registry;
struct GUARD_NODE;
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
C_MODE_START
pthread_handler_decl(guardian, arg);
C_MODE_END
struct Guardian_thread_args
{
Thread_registry &thread_registry;
Instance_map *instance_map;
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
int monitoring_interval;
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
Guardian_thread_args(Thread_registry &thread_registry_arg,
Instance_map *instance_map_arg,
uint monitoring_interval_arg) :
thread_registry(thread_registry_arg),
instance_map(instance_map_arg),
monitoring_interval(monitoring_interval_arg)
{}
};
/*
The guardian thread is responsible for monitoring and restarting of guarded
instances.
*/
class Guardian_thread: public Guardian_thread_args
{
public:
/* states of an instance */
Cleanup the instance manager code. BitKeeper/deleted/.del-factory.h~c1679505d3a6dd53: Delete: server-tools/instance-manager/factory.h BitKeeper/deleted/.del-factory.cc~6836cccd4cd35b4d: Delete: server-tools/instance-manager/factory.cc server-tools/instance-manager/Makefile.am: - remove Commands_factory: it'll be needed when we add support for NNTP/HTTP connections, currently it only adds unnecessary complexity. server-tools/instance-manager/commands.cc: - fix coding style: no else after return; fix comments, make one place a bit faster. server-tools/instance-manager/guardian.cc: - fix coding style and comments. - we must register the current thread in the thread registry before entering pthread_cond_timedwait, because at shutdown the thread registry will try to kick out of wait all blocked threads. Unregistered threads are not awakened by the registry. This fixes the failinig assert in Thread_registry::~Thread_registry at shutdown, when shutdown is requested and there is an instance monitored by Guardian. server-tools/instance-manager/guardian.h: - fix coding style: enums must start with enum_ server-tools/instance-manager/instance.h: - move comment to the variable it comments server-tools/instance-manager/instance_map.cc: - cleanup server-tools/instance-manager/instance_options.cc: - cleanup; no else after return (fix coding style). server-tools/instance-manager/manager.cc: - fix alignment; make some code easier to read. server-tools/instance-manager/mysql_connection.cc: - remove Commands_factory server-tools/instance-manager/options.cc: - fix a possible crash when the instance manager is started with --no-defaults --defaults-file=~/.my.cnf: if we return without cloning saved_argv by calling load_defaults, Options::cleanup will crash on attempt to free_defaults(saved_argv); server-tools/instance-manager/parse.cc: - get rid of Commands_factory server-tools/instance-manager/parse.h: - get rid of Commands_factory server-tools/instance-manager/parse_output.cc: - in parse_output_and_get_value return error also if the specified pattern was not found, or the command failed to execute. server-tools/instance-manager/portability.h: - fix coding style (// comments are allowed only at ends of lines) server-tools/instance-manager/thread_registry.cc: - implement Thread_registry::cond_timedwait server-tools/instance-manager/thread_registry.h: - implement Thread_registry::cond_timedwait; remove unused out parameter from Thread_registry::cond_wait. server-tools/instance-manager/user_map.cc: - safety: newline can take 2 bytes.
2005-08-29 23:29:35 +04:00
enum enum_instance_state { NOT_STARTED= 1, STARTING, STARTED, JUST_CRASHED,
CRASHED, CRASHED_AND_ABANDONED, STOPPING };
/*
The Guardian list node structure. Guardian utilizes it to store
guarded instances plus some additional info.
*/
struct GUARD_NODE
{
Instance *instance;
/* state of an instance (i.e. STARTED, CRASHED, etc.) */
Cleanup the instance manager code. BitKeeper/deleted/.del-factory.h~c1679505d3a6dd53: Delete: server-tools/instance-manager/factory.h BitKeeper/deleted/.del-factory.cc~6836cccd4cd35b4d: Delete: server-tools/instance-manager/factory.cc server-tools/instance-manager/Makefile.am: - remove Commands_factory: it'll be needed when we add support for NNTP/HTTP connections, currently it only adds unnecessary complexity. server-tools/instance-manager/commands.cc: - fix coding style: no else after return; fix comments, make one place a bit faster. server-tools/instance-manager/guardian.cc: - fix coding style and comments. - we must register the current thread in the thread registry before entering pthread_cond_timedwait, because at shutdown the thread registry will try to kick out of wait all blocked threads. Unregistered threads are not awakened by the registry. This fixes the failinig assert in Thread_registry::~Thread_registry at shutdown, when shutdown is requested and there is an instance monitored by Guardian. server-tools/instance-manager/guardian.h: - fix coding style: enums must start with enum_ server-tools/instance-manager/instance.h: - move comment to the variable it comments server-tools/instance-manager/instance_map.cc: - cleanup server-tools/instance-manager/instance_options.cc: - cleanup; no else after return (fix coding style). server-tools/instance-manager/manager.cc: - fix alignment; make some code easier to read. server-tools/instance-manager/mysql_connection.cc: - remove Commands_factory server-tools/instance-manager/options.cc: - fix a possible crash when the instance manager is started with --no-defaults --defaults-file=~/.my.cnf: if we return without cloning saved_argv by calling load_defaults, Options::cleanup will crash on attempt to free_defaults(saved_argv); server-tools/instance-manager/parse.cc: - get rid of Commands_factory server-tools/instance-manager/parse.h: - get rid of Commands_factory server-tools/instance-manager/parse_output.cc: - in parse_output_and_get_value return error also if the specified pattern was not found, or the command failed to execute. server-tools/instance-manager/portability.h: - fix coding style (// comments are allowed only at ends of lines) server-tools/instance-manager/thread_registry.cc: - implement Thread_registry::cond_timedwait server-tools/instance-manager/thread_registry.h: - implement Thread_registry::cond_timedwait; remove unused out parameter from Thread_registry::cond_wait. server-tools/instance-manager/user_map.cc: - safety: newline can take 2 bytes.
2005-08-29 23:29:35 +04:00
enum_instance_state state;
/* the amount of attemts to restart instance (cleaned up at success) */
int restart_counter;
/* triggered at a crash */
time_t crash_moment;
/* General time field. Used to provide timeouts (at shutdown and restart) */
time_t last_checked;
};
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
Guardian_thread(Thread_registry &thread_registry_arg,
Instance_map *instance_map_arg,
uint monitoring_interval_arg);
~Guardian_thread();
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
/* Main funtion of the thread */
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
void run();
/* Initialize or refresh the list of guarded instances */
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
int init();
/* Request guardian shutdown. Stop instances if needed */
void request_shutdown(bool stop_instances);
/* Start instance protection */
int guard(Instance *instance, bool nolock= FALSE);
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
/* Stop instance protection */
Various post-review fixes server-tools/instance-manager/buffer.cc: simplified buffer interface server-tools/instance-manager/buffer.h: simplified buffer interface server-tools/instance-manager/command.cc: Command class now uses instance_map directly server-tools/instance-manager/command.h: Made Command to use instance_map directly (not through the factory, which is not needed here in fact) server-tools/instance-manager/commands.cc: Moved mysql client/server protocol-specific functions to the commands server-tools/instance-manager/commands.h: Added a comment for Syntax_error command, fixed classes to use instance map instead of the factory server-tools/instance-manager/factory.cc: Fixed factory to give appropriate class to the commands server-tools/instance-manager/guardian.cc: Fixed guardian to delay start of new instances monitoring. Moved guardian initialization to the class from Instance map. server-tools/instance-manager/guardian.h: interface fixed server-tools/instance-manager/instance.cc: added some loging server-tools/instance-manager/instance_map.cc: All non-instance map specific functions moved from the class. Added iterator for instance_map server-tools/instance-manager/instance_map.h: All non-instance map related functions moved from the class. Added iterator for instance_map. server-tools/instance-manager/listener.cc: Added FD_CLOEXEC flag to sockets, as we don't want instances to inherit them after exec. server-tools/instance-manager/manager.cc: use guardian method moved from the instance map server-tools/instance-manager/mysql_connection.cc: cleanup server-tools/instance-manager/protocol.cc: fix according to the changes in the Buffer class
2004-10-26 23:22:12 +04:00
int stop_guard(Instance *instance);
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
/* Returns true if guardian thread is stopped */
int is_stopped();
void lock();
void unlock();
Various post-review fixes server-tools/instance-manager/buffer.cc: simplified buffer interface server-tools/instance-manager/buffer.h: simplified buffer interface server-tools/instance-manager/command.cc: Command class now uses instance_map directly server-tools/instance-manager/command.h: Made Command to use instance_map directly (not through the factory, which is not needed here in fact) server-tools/instance-manager/commands.cc: Moved mysql client/server protocol-specific functions to the commands server-tools/instance-manager/commands.h: Added a comment for Syntax_error command, fixed classes to use instance map instead of the factory server-tools/instance-manager/factory.cc: Fixed factory to give appropriate class to the commands server-tools/instance-manager/guardian.cc: Fixed guardian to delay start of new instances monitoring. Moved guardian initialization to the class from Instance map. server-tools/instance-manager/guardian.h: interface fixed server-tools/instance-manager/instance.cc: added some loging server-tools/instance-manager/instance_map.cc: All non-instance map specific functions moved from the class. Added iterator for instance_map server-tools/instance-manager/instance_map.h: All non-instance map related functions moved from the class. Added iterator for instance_map. server-tools/instance-manager/listener.cc: Added FD_CLOEXEC flag to sockets, as we don't want instances to inherit them after exec. server-tools/instance-manager/manager.cc: use guardian method moved from the instance map server-tools/instance-manager/mysql_connection.cc: cleanup server-tools/instance-manager/protocol.cc: fix according to the changes in the Buffer class
2004-10-26 23:22:12 +04:00
public:
pthread_cond_t COND_guardian;
Various post-review fixes server-tools/instance-manager/buffer.cc: simplified buffer interface server-tools/instance-manager/buffer.h: simplified buffer interface server-tools/instance-manager/command.cc: Command class now uses instance_map directly server-tools/instance-manager/command.h: Made Command to use instance_map directly (not through the factory, which is not needed here in fact) server-tools/instance-manager/commands.cc: Moved mysql client/server protocol-specific functions to the commands server-tools/instance-manager/commands.h: Added a comment for Syntax_error command, fixed classes to use instance map instead of the factory server-tools/instance-manager/factory.cc: Fixed factory to give appropriate class to the commands server-tools/instance-manager/guardian.cc: Fixed guardian to delay start of new instances monitoring. Moved guardian initialization to the class from Instance map. server-tools/instance-manager/guardian.h: interface fixed server-tools/instance-manager/instance.cc: added some loging server-tools/instance-manager/instance_map.cc: All non-instance map specific functions moved from the class. Added iterator for instance_map server-tools/instance-manager/instance_map.h: All non-instance map related functions moved from the class. Added iterator for instance_map. server-tools/instance-manager/listener.cc: Added FD_CLOEXEC flag to sockets, as we don't want instances to inherit them after exec. server-tools/instance-manager/manager.cc: use guardian method moved from the instance map server-tools/instance-manager/mysql_connection.cc: cleanup server-tools/instance-manager/protocol.cc: fix according to the changes in the Buffer class
2004-10-26 23:22:12 +04:00
private:
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
/* Prepares Guardian shutdown. Stops instances is needed */
int stop_instances(bool stop_instances_arg);
/* check instance state and act accordingly */
void process_instance(Instance *instance, GUARD_NODE *current_node,
LIST **guarded_instances, LIST *elem);
int stopped;
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
private:
pthread_mutex_t LOCK_guardian;
Thread_info thread_info;
LIST *guarded_instances;
MEM_ROOT alloc;
enum { MEM_ROOT_BLOCK_SIZE= 512 };
more fixes for IM to substitude mysqld_safe in startup scripts BitKeeper/deleted/.del-thread_repository.cc~bba09f64f8cb4037: Delete: server-tools/instance-manager/thread_repository.cc BitKeeper/deleted/.del-thread_repository.h~e6a3b9cab7a6612a: Delete: server-tools/instance-manager/thread_repository.h server-tools/instance-manager/commands.cc: All instances are guarded by default now, so we need to perform check on whether the instance is nonguarded, rather then guarded when adding it to the list of guarded instnces. server-tools/instance-manager/guardian.cc: Guardian rewritten to start instances by default, and shut them down, when exiting. Behaviour of the guardian in case of the instance crash has changed. Now it tries to restart an instance constantly in the first 2 seconds after the crash was noticed, and then it tries restart an instance once in the MONITORING_INTERVAL. If it failed to restart instance for "restart_retry" (compiled-in value) times, guardian stops trying to restart it. server-tools/instance-manager/guardian.h: Several new functions and variables declared. server-tools/instance-manager/instance.cc: now start doesn't call stop(), but rather tries to remove the pidfile itself server-tools/instance-manager/instance.h: cleanup server-tools/instance-manager/instance_map.cc: no more "admin" options server-tools/instance-manager/instance_map.h: User and password purged from instance_map options, as IM shouldn't know them server-tools/instance-manager/instance_options.cc: new option added -- shutdown_delay, guarded option now called nonguaded and has the opposite meaning server-tools/instance-manager/instance_options.h: appropriate changes, reflecting options addition/removal server-tools/instance-manager/manager.cc: shutdown process is complicated a bit -- at first signal thread should stop guardian, and only then the IM itself server-tools/instance-manager/messages.cc: update error message server-tools/instance-manager/options.cc: admin user/password purged from mysqlmanager options
2005-01-31 23:54:08 +03:00
/* this variable is set to TRUE when we want to stop Guardian thread */
Post-review fixes + some bugs fixed + several minor features BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
2005-02-11 14:21:59 +03:00
bool shutdown_requested;
Intermediate commit - just to make new files visible to bk in the new tree server-tools/instance-manager/Makefile.am: Fixed IM linking to avoid using both mysys and libmysql as the define the same symbols and therefore conflict server-tools/instance-manager/listener.cc: Added ability to listen network ports server-tools/instance-manager/listener.h: Various additions to the Listener_thread_args server-tools/instance-manager/log.cc: merge server-tools/instance-manager/log.h: merge server-tools/instance-manager/manager.cc: Fixes and additions to enable guardian functionality server-tools/instance-manager/manager.h: Changed manager() signature server-tools/instance-manager/mysqlmanager.cc: Various fixes server-tools/instance-manager/options.cc: Added handling of default values for new options in the Options struct. (such as default_user, default_password, monitoring_interval e.t.c) server-tools/instance-manager/options.h: Added new options to the Options struct sql/net_serv.cc: Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM server-tools/instance-manager/buffer.cc: Simple implementation of variable-length buffer server-tools/instance-manager/command.cc: Abstract command. All commands are derived from Command class server-tools/instance-manager/commands.h: Interfaces for all commands we have server-tools/instance-manager/factory.cc: Commands factory. This class hides command instantiation. The idea is to handle various protocols this way. (different commands for different protocols server-tools/instance-manager/guardian.cc: Guardian thread implementation (monitor and restart instances in case of a failure server-tools/instance-manager/guardian.h: Guardian_thread and Guardian_thread_args class interface. The Guardian_thread is responsible for monitoring and restarting instances server-tools/instance-manager/instance.cc: Instance class contains methods and data to manage a single instance server-tools/instance-manager/instance.h: This file contains class an instance class interface. The class is responsible for starting/stopping an instance server-tools/instance-manager/instance_map.cc: The instance repository. This class is also responsible for initialization of Instance class objects. server-tools/instance-manager/instance_options.cc: The Instance_options class contains all methods to get and handle options of an instance server-tools/instance-manager/mysql_connection.cc: The class responsible for handling MySQL client/server protocol connections server-tools/instance-manager/mysql_manager_error.h: The list of Instance Manger-specific errors server-tools/instance-manager/parse.cc: Simple query parser server-tools/instance-manager/parse.h: Parser interface server-tools/instance-manager/protocol.cc: Here implemented functions used to handle mysql client/server protocol server-tools/instance-manager/protocol.h: Interface for MySQL client/server protocol server-tools/instance-manager/thread_registry.cc: Thread registry stores information about every thread. It's main function is to provide graceful shutdown for all threads. server-tools/instance-manager/user_map.h: User map contains hash with user names and passwords
2004-10-23 11:32:52 +04:00
};
#endif /* INCLUDES_MYSQL_INSTANCE_MANAGER_GUARDIAN_H */