MXS-1775 Handle config param disk_space_check_interval
This commit is contained in:
parent
938865de3d
commit
af9beecaef
@ -267,6 +267,7 @@ struct mxs_monitor
|
||||
uint32_t script_timeout; /**< Timeout in seconds for the monitor scripts */
|
||||
uint8_t journal_hash[SHA_DIGEST_LENGTH]; /**< SHA1 hash of the latest written journal */
|
||||
MxsDiskSpaceThreshold* disk_space_threshold; /**< Disk space thresholds */
|
||||
int64_t disk_space_check_interval; /**< How often should a disk space check be made at most. */
|
||||
struct mxs_monitor *next; /**< Next monitor in the linked list */
|
||||
};
|
||||
|
||||
@ -307,14 +308,15 @@ static const char MXS_MONITOR_EVENT_DEFAULT_VALUE[] = "master_down,master_up,sla
|
||||
* Monitor configuration parameters names
|
||||
*/
|
||||
extern const char CN_BACKEND_CONNECT_ATTEMPTS[];
|
||||
extern const char CN_BACKEND_CONNECT_TIMEOUT[];
|
||||
extern const char CN_BACKEND_READ_TIMEOUT[];
|
||||
extern const char CN_BACKEND_WRITE_TIMEOUT[];
|
||||
extern const char CN_BACKEND_CONNECT_TIMEOUT[];
|
||||
extern const char CN_MONITOR_INTERVAL[];
|
||||
extern const char CN_JOURNAL_MAX_AGE[];
|
||||
extern const char CN_SCRIPT_TIMEOUT[];
|
||||
extern const char CN_SCRIPT[];
|
||||
extern const char CN_DISK_SPACE_CHECK_INTERVAL[];
|
||||
extern const char CN_EVENTS[];
|
||||
extern const char CN_JOURNAL_MAX_AGE[];
|
||||
extern const char CN_MONITOR_INTERVAL[];
|
||||
extern const char CN_SCRIPT[];
|
||||
extern const char CN_SCRIPT_TIMEOUT[];
|
||||
|
||||
bool check_monitor_permissions(MXS_MONITOR* monitor, const char* query);
|
||||
|
||||
|
@ -285,6 +285,7 @@ const char *config_monitor_params[] =
|
||||
CN_BACKEND_WRITE_TIMEOUT,
|
||||
CN_BACKEND_CONNECT_ATTEMPTS,
|
||||
CN_DISK_SPACE_THRESHOLD,
|
||||
CN_DISK_SPACE_CHECK_INTERVAL,
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -3373,8 +3374,8 @@ int create_new_server(CONFIG_CONTEXT *obj)
|
||||
}
|
||||
}
|
||||
|
||||
const char* disk_space_threshold = config_get_value_string(obj->parameters, CN_DISK_SPACE_THRESHOLD);
|
||||
if (*disk_space_threshold)
|
||||
const char* disk_space_threshold = config_get_value(obj->parameters, CN_DISK_SPACE_THRESHOLD);
|
||||
if (disk_space_threshold)
|
||||
{
|
||||
if (!server_set_disk_space_threshold(server, disk_space_threshold))
|
||||
{
|
||||
@ -3665,8 +3666,8 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
|
||||
}
|
||||
}
|
||||
|
||||
const char* disk_space_threshold = config_get_value_string(obj->parameters, CN_DISK_SPACE_THRESHOLD);
|
||||
if (*disk_space_threshold)
|
||||
const char* disk_space_threshold = config_get_value(obj->parameters, CN_DISK_SPACE_THRESHOLD);
|
||||
if (disk_space_threshold)
|
||||
{
|
||||
if (!monitor_set_disk_space_threshold(monitor, disk_space_threshold))
|
||||
{
|
||||
@ -3676,6 +3677,24 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
|
||||
}
|
||||
}
|
||||
|
||||
const char* disk_space_check_interval =
|
||||
config_get_value(obj->parameters, CN_DISK_SPACE_CHECK_INTERVAL);
|
||||
if (disk_space_check_interval)
|
||||
{
|
||||
char* endptr;
|
||||
long int value = strtoll(disk_space_check_interval, &endptr, 0);
|
||||
if (*endptr == 0 && value >= 0)
|
||||
{
|
||||
monitor->disk_space_check_interval = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
MXS_ERROR("Invalid value for '%s': %s",
|
||||
CN_DISK_SPACE_CHECK_INTERVAL, disk_space_check_interval);
|
||||
++error_count;
|
||||
}
|
||||
}
|
||||
|
||||
if (servers)
|
||||
{
|
||||
/* get the servers to monitor */
|
||||
|
@ -65,15 +65,16 @@ enum stored_value_type
|
||||
using std::string;
|
||||
using std::set;
|
||||
|
||||
const char CN_BACKEND_CONNECT_ATTEMPTS[] = "backend_connect_attempts";
|
||||
const char CN_BACKEND_READ_TIMEOUT[] = "backend_read_timeout";
|
||||
const char CN_BACKEND_WRITE_TIMEOUT[] = "backend_write_timeout";
|
||||
const char CN_BACKEND_CONNECT_TIMEOUT[] = "backend_connect_timeout";
|
||||
const char CN_MONITOR_INTERVAL[] = "monitor_interval";
|
||||
const char CN_JOURNAL_MAX_AGE[] = "journal_max_age";
|
||||
const char CN_SCRIPT_TIMEOUT[] = "script_timeout";
|
||||
const char CN_SCRIPT[] = "script";
|
||||
const char CN_EVENTS[] = "events";
|
||||
const char CN_BACKEND_CONNECT_ATTEMPTS[] = "backend_connect_attempts";
|
||||
const char CN_BACKEND_CONNECT_TIMEOUT[] = "backend_connect_timeout";
|
||||
const char CN_BACKEND_READ_TIMEOUT[] = "backend_read_timeout";
|
||||
const char CN_BACKEND_WRITE_TIMEOUT[] = "backend_write_timeout";
|
||||
const char CN_DISK_SPACE_CHECK_INTERVAL[] = "disk_space_check_interval";
|
||||
const char CN_EVENTS[] = "events";
|
||||
const char CN_JOURNAL_MAX_AGE[] = "journal_max_age";
|
||||
const char CN_MONITOR_INTERVAL[] = "monitor_interval";
|
||||
const char CN_SCRIPT[] = "script";
|
||||
const char CN_SCRIPT_TIMEOUT[] = "script_timeout";
|
||||
|
||||
static MXS_MONITOR *allMonitors = NULL;
|
||||
static SPINLOCK monLock = SPINLOCK_INIT;
|
||||
@ -138,6 +139,7 @@ MXS_MONITOR* monitor_create(const char *name, const char *module)
|
||||
mon->server_pending_changes = false;
|
||||
memset(mon->journal_hash, 0, sizeof(mon->journal_hash));
|
||||
mon->disk_space_threshold = NULL;
|
||||
mon->disk_space_check_interval = 0;
|
||||
spinlock_init(&mon->lock);
|
||||
|
||||
if ((mon->instance = mon->api->createInstance(mon)) == NULL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user