mirror of https://github.com/yandex/odyssey.git
odissey: add client_fwd_error configuration tweak
This commit is contained in:
parent
a08eb30987
commit
e9eeca8a95
|
@ -77,6 +77,7 @@ database default
|
||||||
pool_discard yes
|
pool_discard yes
|
||||||
pool_rollback yes
|
pool_rollback yes
|
||||||
|
|
||||||
|
#client_fwd_error no
|
||||||
#client_max 100
|
#client_max 100
|
||||||
#client_encoding "UTF8"
|
#client_encoding "UTF8"
|
||||||
#datestyle "ISO"
|
#datestyle "ISO"
|
||||||
|
|
109
sources/config.c
109
sources/config.c
|
@ -64,6 +64,7 @@ enum
|
||||||
OD_LPIPELINING,
|
OD_LPIPELINING,
|
||||||
OD_LWORKERS,
|
OD_LWORKERS,
|
||||||
OD_LCLIENT_MAX,
|
OD_LCLIENT_MAX,
|
||||||
|
OD_LCLIENT_FWD_ERROR,
|
||||||
OD_LCLIENT_ENCODING,
|
OD_LCLIENT_ENCODING,
|
||||||
OD_LDATESTYLE,
|
OD_LDATESTYLE,
|
||||||
OD_LTIMEZONE,
|
OD_LTIMEZONE,
|
||||||
|
@ -105,60 +106,61 @@ typedef struct
|
||||||
static od_keyword_t od_config_keywords[] =
|
static od_keyword_t od_config_keywords[] =
|
||||||
{
|
{
|
||||||
/* main */
|
/* main */
|
||||||
od_keyword("yes", OD_LYES),
|
od_keyword("yes", OD_LYES),
|
||||||
od_keyword("no", OD_LNO),
|
od_keyword("no", OD_LNO),
|
||||||
od_keyword("include", OD_LINCLUDE),
|
od_keyword("include", OD_LINCLUDE),
|
||||||
od_keyword("daemonize", OD_LDAEMONIZE),
|
od_keyword("daemonize", OD_LDAEMONIZE),
|
||||||
od_keyword("log_debug", OD_LLOG_DEBUG),
|
od_keyword("log_debug", OD_LLOG_DEBUG),
|
||||||
od_keyword("log_to_stdout", OD_LLOG_TO_STDOUT),
|
od_keyword("log_to_stdout", OD_LLOG_TO_STDOUT),
|
||||||
od_keyword("log_config", OD_LLOG_CONFIG),
|
od_keyword("log_config", OD_LLOG_CONFIG),
|
||||||
od_keyword("log_session", OD_LLOG_SESSION),
|
od_keyword("log_session", OD_LLOG_SESSION),
|
||||||
od_keyword("log_file", OD_LLOG_FILE),
|
od_keyword("log_file", OD_LLOG_FILE),
|
||||||
od_keyword("log_format", OD_LLOG_FORMAT),
|
od_keyword("log_format", OD_LLOG_FORMAT),
|
||||||
od_keyword("log_stats", OD_LLOG_STATS),
|
od_keyword("log_stats", OD_LLOG_STATS),
|
||||||
od_keyword("pid_file", OD_LPID_FILE),
|
od_keyword("pid_file", OD_LPID_FILE),
|
||||||
od_keyword("syslog", OD_LSYSLOG),
|
od_keyword("syslog", OD_LSYSLOG),
|
||||||
od_keyword("syslog_ident", OD_LSYSLOG_IDENT),
|
od_keyword("syslog_ident", OD_LSYSLOG_IDENT),
|
||||||
od_keyword("syslog_facility", OD_LSYSLOG_FACILITY),
|
od_keyword("syslog_facility", OD_LSYSLOG_FACILITY),
|
||||||
od_keyword("stats_interval", OD_LSTATS_INTERVAL),
|
od_keyword("stats_interval", OD_LSTATS_INTERVAL),
|
||||||
/* listen */
|
/* listen */
|
||||||
od_keyword("listen", OD_LLISTEN),
|
od_keyword("listen", OD_LLISTEN),
|
||||||
od_keyword("host", OD_LHOST),
|
od_keyword("host", OD_LHOST),
|
||||||
od_keyword("port", OD_LPORT),
|
od_keyword("port", OD_LPORT),
|
||||||
od_keyword("backlog", OD_LBACKLOG),
|
od_keyword("backlog", OD_LBACKLOG),
|
||||||
od_keyword("nodelay", OD_LNODELAY),
|
od_keyword("nodelay", OD_LNODELAY),
|
||||||
od_keyword("keepalive", OD_LKEEPALIVE),
|
od_keyword("keepalive", OD_LKEEPALIVE),
|
||||||
od_keyword("readahead", OD_LREADAHEAD),
|
od_keyword("readahead", OD_LREADAHEAD),
|
||||||
od_keyword("pipelining", OD_LPIPELINING),
|
od_keyword("pipelining", OD_LPIPELINING),
|
||||||
od_keyword("workers", OD_LWORKERS),
|
od_keyword("workers", OD_LWORKERS),
|
||||||
od_keyword("client_max", OD_LCLIENT_MAX),
|
od_keyword("client_max", OD_LCLIENT_MAX),
|
||||||
od_keyword("client_encoding", OD_LCLIENT_ENCODING),
|
od_keyword("client_fwd_error", OD_LCLIENT_FWD_ERROR),
|
||||||
od_keyword("datestyle", OD_LDATESTYLE),
|
od_keyword("client_encoding", OD_LCLIENT_ENCODING),
|
||||||
od_keyword("timezone", OD_LTIMEZONE),
|
od_keyword("datestyle", OD_LDATESTYLE),
|
||||||
od_keyword("tls", OD_LTLS),
|
od_keyword("timezone", OD_LTIMEZONE),
|
||||||
od_keyword("tls_ca_file", OD_LTLS_CA_FILE),
|
od_keyword("tls", OD_LTLS),
|
||||||
od_keyword("tls_key_file", OD_LTLS_KEY_FILE),
|
od_keyword("tls_ca_file", OD_LTLS_CA_FILE),
|
||||||
od_keyword("tls_cert_file", OD_LTLS_CERT_FILE),
|
od_keyword("tls_key_file", OD_LTLS_KEY_FILE),
|
||||||
od_keyword("tls_protocols", OD_LTLS_PROTOCOLS),
|
od_keyword("tls_cert_file", OD_LTLS_CERT_FILE),
|
||||||
|
od_keyword("tls_protocols", OD_LTLS_PROTOCOLS),
|
||||||
/* storage */
|
/* storage */
|
||||||
od_keyword("storage", OD_LSTORAGE),
|
od_keyword("storage", OD_LSTORAGE),
|
||||||
od_keyword("type", OD_LTYPE),
|
od_keyword("type", OD_LTYPE),
|
||||||
od_keyword("default", OD_LDEFAULT),
|
od_keyword("default", OD_LDEFAULT),
|
||||||
/* database */
|
/* database */
|
||||||
od_keyword("database", OD_LDATABASE),
|
od_keyword("database", OD_LDATABASE),
|
||||||
od_keyword("user", OD_LUSER),
|
od_keyword("user", OD_LUSER),
|
||||||
od_keyword("password", OD_LPASSWORD),
|
od_keyword("password", OD_LPASSWORD),
|
||||||
od_keyword("pool", OD_LPOOL),
|
od_keyword("pool", OD_LPOOL),
|
||||||
od_keyword("pool_size", OD_LPOOL_SIZE),
|
od_keyword("pool_size", OD_LPOOL_SIZE),
|
||||||
od_keyword("pool_timeout", OD_LPOOL_TIMEOUT),
|
od_keyword("pool_timeout", OD_LPOOL_TIMEOUT),
|
||||||
od_keyword("pool_ttl", OD_LPOOL_TTL),
|
od_keyword("pool_ttl", OD_LPOOL_TTL),
|
||||||
od_keyword("pool_cancel", OD_LPOOL_CANCEL),
|
od_keyword("pool_cancel", OD_LPOOL_CANCEL),
|
||||||
od_keyword("pool_discard", OD_LPOOL_DISCARD),
|
od_keyword("pool_discard", OD_LPOOL_DISCARD),
|
||||||
od_keyword("pool_rollback", OD_LPOOL_ROLLBACK),
|
od_keyword("pool_rollback", OD_LPOOL_ROLLBACK),
|
||||||
od_keyword("storage_db", OD_LSTORAGE_DB),
|
od_keyword("storage_db", OD_LSTORAGE_DB),
|
||||||
od_keyword("storage_user", OD_LSTORAGE_USER),
|
od_keyword("storage_user", OD_LSTORAGE_USER),
|
||||||
od_keyword("storage_password", OD_LSTORAGE_PASSWORD),
|
od_keyword("storage_password", OD_LSTORAGE_PASSWORD),
|
||||||
od_keyword("authentication", OD_LAUTHENTICATION),
|
od_keyword("authentication", OD_LAUTHENTICATION),
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -623,6 +625,11 @@ od_config_parse_route(od_config_t *config, char *db_name, int db_name_len,
|
||||||
return -1;
|
return -1;
|
||||||
route->client_max_set = 1;
|
route->client_max_set = 1;
|
||||||
continue;
|
continue;
|
||||||
|
/* client_fwd_error */
|
||||||
|
case OD_LCLIENT_FWD_ERROR:
|
||||||
|
if (! od_config_next_yes_no(config, &route->client_fwd_error))
|
||||||
|
return -1;
|
||||||
|
continue;
|
||||||
/* client_encoding */
|
/* client_encoding */
|
||||||
case OD_LCLIENT_ENCODING:
|
case OD_LCLIENT_ENCODING:
|
||||||
if (! od_config_next_string(config, &route->client_encoding))
|
if (! od_config_next_string(config, &route->client_encoding))
|
||||||
|
|
|
@ -561,6 +561,10 @@ int od_schemeroute_compare(od_schemeroute_t *a, od_schemeroute_t *b)
|
||||||
if (a->client_max != b->client_max)
|
if (a->client_max != b->client_max)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* client_fwd_error */
|
||||||
|
if (a->client_fwd_error != b->client_fwd_error)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -846,19 +850,19 @@ void od_scheme_print(od_scheme_t *scheme, od_logger_t *logger, int routes_only)
|
||||||
od_schemelisten_t *listen;
|
od_schemelisten_t *listen;
|
||||||
listen = od_container_of(i, od_schemelisten_t, link);
|
listen = od_container_of(i, od_schemelisten_t, link);
|
||||||
od_log(logger, "listen");
|
od_log(logger, "listen");
|
||||||
od_log(logger, " host %s", listen->host);
|
od_log(logger, " host %s", listen->host);
|
||||||
od_log(logger, " port %d", listen->port);
|
od_log(logger, " port %d", listen->port);
|
||||||
od_log(logger, " backlog %d", listen->backlog);
|
od_log(logger, " backlog %d", listen->backlog);
|
||||||
if (listen->tls)
|
if (listen->tls)
|
||||||
od_log(logger, " tls %s", listen->tls);
|
od_log(logger, " tls %s", listen->tls);
|
||||||
if (listen->tls_ca_file)
|
if (listen->tls_ca_file)
|
||||||
od_log(logger, " tls_ca_file %s", listen->tls_ca_file);
|
od_log(logger, " tls_ca_file %s", listen->tls_ca_file);
|
||||||
if (listen->tls_key_file)
|
if (listen->tls_key_file)
|
||||||
od_log(logger, " tls_key_file %s", listen->tls_key_file);
|
od_log(logger, " tls_key_file %s", listen->tls_key_file);
|
||||||
if (listen->tls_cert_file)
|
if (listen->tls_cert_file)
|
||||||
od_log(logger, " tls_cert_file %s", listen->tls_cert_file);
|
od_log(logger, " tls_cert_file %s", listen->tls_cert_file);
|
||||||
if (listen->tls_protocols)
|
if (listen->tls_protocols)
|
||||||
od_log(logger, " tls_protocols %s", listen->tls_protocols);
|
od_log(logger, " tls_protocols %s", listen->tls_protocols);
|
||||||
od_log(logger, "");
|
od_log(logger, "");
|
||||||
}
|
}
|
||||||
log_routes:;
|
log_routes:;
|
||||||
|
@ -869,45 +873,48 @@ log_routes:;
|
||||||
route->db_name,
|
route->db_name,
|
||||||
route->user_name, route->version,
|
route->user_name, route->version,
|
||||||
route->is_obsolete ? "(obsolete)" : "");
|
route->is_obsolete ? "(obsolete)" : "");
|
||||||
od_log(logger, " authentication %s", route->auth);
|
od_log(logger, " authentication %s", route->auth);
|
||||||
od_log(logger, " pool %s", route->pool_sz);
|
od_log(logger, " pool %s", route->pool_sz);
|
||||||
od_log(logger, " pool_size %d", route->pool_size);
|
od_log(logger, " pool_size %d", route->pool_size);
|
||||||
od_log(logger, " pool_timeout %d", route->pool_timeout);
|
od_log(logger, " pool_timeout %d", route->pool_timeout);
|
||||||
od_log(logger, " pool_ttl %d", route->pool_ttl);
|
od_log(logger, " pool_ttl %d", route->pool_ttl);
|
||||||
od_log(logger, " pool_cancel %s",
|
od_log(logger, " pool_cancel %s",
|
||||||
route->pool_cancel ? "yes" : "no");
|
route->pool_cancel ? "yes" : "no");
|
||||||
od_log(logger, " pool_rollback %s",
|
od_log(logger, " pool_rollback %s",
|
||||||
route->pool_rollback ? "yes" : "no");
|
route->pool_rollback ? "yes" : "no");
|
||||||
od_log(logger, " pool_discard %s",
|
od_log(logger, " pool_discard %s",
|
||||||
route->pool_discard ? "yes" : "no");
|
route->pool_discard ? "yes" : "no");
|
||||||
if (route->client_max_set)
|
if (route->client_max_set)
|
||||||
od_log(logger, " client_max %d", route->client_max);
|
od_log(logger, " client_max %d", route->client_max);
|
||||||
|
if (route->client_fwd_error)
|
||||||
|
od_log(logger, " client_fwd_error %s",
|
||||||
|
od_scheme_yes_no(route->client_fwd_error));
|
||||||
if (route->client_encoding)
|
if (route->client_encoding)
|
||||||
od_log(logger, " client_encoding %s", route->client_encoding);
|
od_log(logger, " client_encoding %s", route->client_encoding);
|
||||||
if (route->datestyle)
|
if (route->datestyle)
|
||||||
od_log(logger, " datestyle %s", route->datestyle);
|
od_log(logger, " datestyle %s", route->datestyle);
|
||||||
if (route->timezone)
|
if (route->timezone)
|
||||||
od_log(logger, " timezone %s", route->timezone);
|
od_log(logger, " timezone %s", route->timezone);
|
||||||
od_log(logger, " storage %s", route->storage_name);
|
od_log(logger, " storage %s", route->storage_name);
|
||||||
od_log(logger, " type %s", route->storage->type);
|
od_log(logger, " type %s", route->storage->type);
|
||||||
if (route->storage->host)
|
if (route->storage->host)
|
||||||
od_log(logger, " host %s", route->storage->host);
|
od_log(logger, " host %s", route->storage->host);
|
||||||
if (route->storage->port)
|
if (route->storage->port)
|
||||||
od_log(logger, " port %d", route->storage->port);
|
od_log(logger, " port %d", route->storage->port);
|
||||||
if (route->storage->tls)
|
if (route->storage->tls)
|
||||||
od_log(logger, " tls %s", route->storage->tls);
|
od_log(logger, " tls %s", route->storage->tls);
|
||||||
if (route->storage->tls_ca_file)
|
if (route->storage->tls_ca_file)
|
||||||
od_log(logger, " tls_ca_file %s", route->storage->tls_ca_file);
|
od_log(logger, " tls_ca_file %s", route->storage->tls_ca_file);
|
||||||
if (route->storage->tls_key_file)
|
if (route->storage->tls_key_file)
|
||||||
od_log(logger, " tls_key_file %s", route->storage->tls_key_file);
|
od_log(logger, " tls_key_file %s", route->storage->tls_key_file);
|
||||||
if (route->storage->tls_cert_file)
|
if (route->storage->tls_cert_file)
|
||||||
od_log(logger, " tls_cert_file %s", route->storage->tls_cert_file);
|
od_log(logger, " tls_cert_file %s", route->storage->tls_cert_file);
|
||||||
if (route->storage->tls_protocols)
|
if (route->storage->tls_protocols)
|
||||||
od_log(logger, " tls_protocols %s", route->storage->tls_protocols);
|
od_log(logger, " tls_protocols %s", route->storage->tls_protocols);
|
||||||
if (route->storage_db)
|
if (route->storage_db)
|
||||||
od_log(logger, " storage_db %s", route->storage_db);
|
od_log(logger, " storage_db %s", route->storage_db);
|
||||||
if (route->storage_user)
|
if (route->storage_user)
|
||||||
od_log(logger, " storage_user %s", route->storage_user);
|
od_log(logger, " storage_user %s", route->storage_user);
|
||||||
od_log(logger, "");
|
od_log(logger, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,13 +90,6 @@ struct od_schemeroute
|
||||||
int storage_user_len;
|
int storage_user_len;
|
||||||
char *storage_password;
|
char *storage_password;
|
||||||
int storage_password_len;
|
int storage_password_len;
|
||||||
/* client options */
|
|
||||||
char *client_encoding;
|
|
||||||
int client_encoding_len;
|
|
||||||
char *datestyle;
|
|
||||||
int datestyle_len;
|
|
||||||
char *timezone;
|
|
||||||
int timezone_len;
|
|
||||||
/* pool */
|
/* pool */
|
||||||
od_pooling_t pool;
|
od_pooling_t pool;
|
||||||
char *pool_sz;
|
char *pool_sz;
|
||||||
|
@ -106,7 +99,15 @@ struct od_schemeroute
|
||||||
int pool_cancel;
|
int pool_cancel;
|
||||||
int pool_discard;
|
int pool_discard;
|
||||||
int pool_rollback;
|
int pool_rollback;
|
||||||
/* limits */
|
/* client options */
|
||||||
|
char *client_encoding;
|
||||||
|
int client_encoding_len;
|
||||||
|
char *datestyle;
|
||||||
|
int datestyle_len;
|
||||||
|
char *timezone;
|
||||||
|
int timezone_len;
|
||||||
|
/* misc */
|
||||||
|
int client_fwd_error;
|
||||||
int client_max_set;
|
int client_max_set;
|
||||||
int client_max;
|
int client_max;
|
||||||
od_list_t link;
|
od_list_t link;
|
||||||
|
|
Loading…
Reference in New Issue