Usability improvements

- Replaced some proxy_error() with daemon_log()
- glovars.proxy_restart_on_error is configurable via command line
- glovars.proxy_restart_delay is hardcoded to 1 second
- disabled listeners on telnet
- Option --admin-socket overwrite the default admin socket
pull/317/head
René Cannaò 11 years ago
parent 062e1a6a67
commit e31d0f4c29

@ -499,7 +499,7 @@ struct _global_variables_t {
char *proxy_errorlog;
char *proxy_debuglog;
char *proxy_configfile;
int proxy_restart_on_error;
bool proxy_restart_on_error;
int proxy_restart_delay;
int http_start;
//GHashTable *usernames;

@ -1308,18 +1308,19 @@ __end_while_pool:
int s = ( atoi(port) ? listen_on_port(add, atoi(port), 50) : listen_on_unix(add, 50));
if (s>0) { fds[nfds].fd=s; fds[nfds].events=POLLIN; fds[nfds].revents=0; callback_func[nfds]=0; socket_names[nfds]=strdup(sn); nfds++; }
}
for (j=0; j<S_amll.ifaces_telnet_admin->ifaces->len; j++) {
char *add=NULL; char *port=NULL; char *sn=(char *)S_amll.ifaces_telnet_admin->ifaces->index(j);
c_split_2(sn, ":" , &add, &port);
int s = ( atoi(port) ? listen_on_port(add, atoi(port), 50) : listen_on_unix(add, 50));
if (s>0) { fds[nfds].fd=s; fds[nfds].events=POLLIN; fds[nfds].revents=0; callback_func[nfds]=1; socket_names[nfds]=strdup(sn); nfds++; }
}
for (j=0; j<S_amll.ifaces_telnet_stats->ifaces->len; j++) {
char *add=NULL; char *port=NULL; char *sn=(char *)S_amll.ifaces_telnet_stats->ifaces->index(j);
c_split_2(sn, ":" , &add, &port);
int s = ( atoi(port) ? listen_on_port(add, atoi(port), 50) : listen_on_unix(add, 50));
if (s>0) { fds[nfds].fd=s; fds[nfds].events=POLLIN; fds[nfds].revents=0; callback_func[nfds]=2; socket_names[nfds]=strdup(sn); nfds++; }
}
// FIXME: disabling this part until telnet modules will be implemented
// for (j=0; j<S_amll.ifaces_telnet_admin->ifaces->len; j++) {
// char *add=NULL; char *port=NULL; char *sn=(char *)S_amll.ifaces_telnet_admin->ifaces->index(j);
// c_split_2(sn, ":" , &add, &port);
// int s = ( atoi(port) ? listen_on_port(add, atoi(port), 50) : listen_on_unix(add, 50));
// if (s>0) { fds[nfds].fd=s; fds[nfds].events=POLLIN; fds[nfds].revents=0; callback_func[nfds]=1; socket_names[nfds]=strdup(sn); nfds++; }
// }
// for (j=0; j<S_amll.ifaces_telnet_stats->ifaces->len; j++) {
// char *add=NULL; char *port=NULL; char *sn=(char *)S_amll.ifaces_telnet_stats->ifaces->index(j);
// c_split_2(sn, ":" , &add, &port);
// int s = ( atoi(port) ? listen_on_port(add, atoi(port), 50) : listen_on_unix(add, 50));
// if (s>0) { fds[nfds].fd=s; fds[nfds].events=POLLIN; fds[nfds].revents=0; callback_func[nfds]=2; socket_names[nfds]=strdup(sn); nfds++; }
// }
S_amll.wrunlock();
}
@ -1356,7 +1357,11 @@ ProxySQL_Admin::ProxySQL_Admin() {
spinlock_rwlock_init(&rwlock);
variables.admin_credentials=strdup("admin:admin");
variables.stats_credentials=strdup("stats:stats");
variables.mysql_ifaces=strdup("127.0.0.1:6032");
if (GloVars.__cmd_proxysql_admin_socket) {
variables.mysql_ifaces=strdup(GloVars.__cmd_proxysql_admin_socket);
} else {
variables.mysql_ifaces=strdup("127.0.0.1:6032");
}
variables.telnet_admin_ifaces=NULL;
variables.telnet_stats_ifaces=NULL;
//variables.telnet_admin_ifaces=strdup("127.0.0.1:6030");

@ -66,8 +66,9 @@ ProxySQL_GlobalVariables::ProxySQL_GlobalVariables() {
#endif /* DEBUG */
opt->add((const char *)"",0,0,0,(const char *)"Starts only the admin service",(const char *)"-n",(const char *)"--no-start");
opt->add((const char *)"",0,0,0,(const char *)"Run in foreground",(const char *)"-f",(const char *)"--foreground");
opt->add((const char *)"",0,0,0,(const char *)"Do not restart ProxySQL if crashes",(const char *)"-e",(const char *)"--exit-on-error");
opt->add((const char *)"~/proxysql.cnf",0,1,0,(const char *)"Configuraton file",(const char *)"-c",(const char *)"--config");
opt->add((const char *)"",0,0,0,(const char *)"Enable custom memory allocator",(const char *)"-m",(const char *)"--custom-memory");
// opt->add((const char *)"",0,0,0,(const char *)"Enable custom memory allocator",(const char *)"-m",(const char *)"--custom-memory");
opt->add((const char *)"",0,1,0,(const char *)"Datadir",(const char *)"-D",(const char *)"--datadir");
opt->add((const char *)"",0,0,0,(const char *)"Rename/empty database file",(const char *)"--initial");
opt->add((const char *)"",0,0,0,(const char *)"Merge config file into database file",(const char *)"--reload");
@ -105,6 +106,13 @@ void ProxySQL_GlobalVariables::process_opts_pre() {
global.gdbg=true;
}
if (opt->isSet("-e")) {
glovars.proxy_restart_on_error=false;
} else {
glovars.proxy_restart_on_error=true;
glovars.proxy_restart_delay=1;
}
if (opt->isSet("-c")) {
std::string configfile;
opt->get("-c")->getString(configfile);

@ -435,7 +435,7 @@ bool ProxySQL_daemonize_phase2() {
/* Send OK to parent process */
daemon_retval_send(0);
GloAdmin->flush_error_log();
proxy_error("Starting ProxySQL\n");
daemon_log(LOG_INFO, "Starting ProxySQL\n");
daemon_log(LOG_INFO, "Sucessfully started");
return true;
@ -444,7 +444,7 @@ bool ProxySQL_daemonize_phase2() {
bool ProxySQL_daemonize_phase3() {
int rc;
int status;
proxy_error("Angel process started ProxySQL process %d\n", pid);
daemon_log(LOG_INFO, "Angel process started ProxySQL process %d\n", pid);
rc=waitpid(pid, &status, 0);
if (rc==-1) {
perror("waitpid");
@ -455,14 +455,14 @@ bool ProxySQL_daemonize_phase3() {
if (rc) { // client exit()ed
rc=WEXITSTATUS(status);
if (rc==0) {
proxy_error("Shutdown angel process\n");
daemon_log(LOG_INFO, "Shutdown angel process\n");
exit(EXIT_SUCCESS);
} else {
proxy_error("ProxySQL exited with code %d . Restarting!\n", rc);
daemon_log(LOG_INFO, "ProxySQL exited with code %d . Restarting!\n", rc);
return false;;
}
} else {
proxy_error("ProxySQL crashed. Restarting!\n");
daemon_log(LOG_INFO, "ProxySQL crashed. Restarting!\n");
return false;
}
return true;
@ -483,7 +483,7 @@ int main(int argc, const char * argv[]) {
if ((pid = daemon_fork()) < 0) {
/* Exit on error */
daemon_retval_done();
return EXIT_FAILURE;
exit(EXIT_FAILURE);
} else if (pid) { /* The parent */
@ -498,18 +498,17 @@ int main(int argc, const char * argv[]) {
}
laststart=0;
// if (glovars.proxy_restart_on_error) {
if (true) {
if (glovars.proxy_restart_on_error) {
gotofork:
if (laststart) {
proxy_error("Angel process is waiting %d seconds before starting a new ProxySQL process\n", glovars.proxy_restart_delay);
daemon_log(LOG_INFO, "Angel process is waiting %d seconds before starting a new ProxySQL process\n", glovars.proxy_restart_delay);
sleep(glovars.proxy_restart_delay);
}
laststart=time(NULL);
pid = fork();
if (pid < 0) {
proxy_error("[FATAL]: Error in fork()\n");
return EXIT_FAILURE;
daemon_log(LOG_INFO, "[FATAL]: Error in fork()\n");
exit(EXIT_FAILURE);
}
if (pid) {

Loading…
Cancel
Save