#define MEMCACHE_TTL_CONNECTION (60)
#define MEMCACHE_LOCK_KEY "chxj::lock"
-#define MEMCACHE_WAIT_TIME (1)
-#define MEMCACHE_LOCK_RETRY_COUNT (10)
+#define MEMCACHE_WAIT_MICRO_SECOND (5000)
+#define MEMCACHE_LOCK_RETRY_COUNT (30)
#define MEMCACHE_MAX_SERVER (10)
DBG(r, "start chxj_memcache_init()");
if (! mc) {
if (!chxj_memcache_and_memcache_server_create(r, m, &st, &mc)) {
- ERR(r, "failed: chxj_memcache_and_memcache_server_create()");
- DBG(r, "end chxj_memcache_init()");
+ ERR(r, "%s:%d end chxj_memcache_init() failed: chxj_memcache_and_memcache_server_create()", APLOG_MARK);
return CHXJ_FALSE;
}
apr_pool_cleanup_register(r->pool, (void *)NULL, _memcache_cleanup, _memcache_cleanup);
MEMCACHE_MAX_CONNECTION,
MEMCACHE_TTL_CONNECTION,
memcache_server) != APR_SUCCESS) {
- ERR(r, "failed apr_memcache_server_create() host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
- DBG(r, "end chxj_memcache_server_create()");
+ ERR(r, "%s:%d end chxj_memcache_server_create() failed apr_memcache_server_create() host:[%s] port:[%d]", APLOG_MARK, m->memcache.host, m->memcache.port);
return CHXJ_FALSE;
}
DBG(r, "done create_server");
if (apr_memcache_create(r->pool, MEMCACHE_MAX_SERVER, MEMCACHE_FLAGS, memcache) != APR_SUCCESS) {
- ERR(r, "failed apr_memcache_create()");
+ ERR(r, "%s:%d end chxj_memcache_server_create() failed apr_memcache_create()", APLOG_MARK);
return CHXJ_FALSE;
}
DBG(r, "done create memcache");
if (apr_memcache_add_server(*memcache, *memcache_server) != APR_SUCCESS) {
- ERR(r, "failed apr_memcache_add_server()");
+ ERR(r, "%s:%d end chxj_memcache_server_create() failed apr_memcache_add_server()", APLOG_MARK);
return CHXJ_FALSE;
}
DBG(r, "end chxj_memcache_server_create()");
if (ret == APR_EAGAIN) {
continue;
}
- ERR(r, "failed: apr_memcache_set() ret:[%d]", ret);
+ ERR(r, "%s:%d chxj_memcache_set_cookie() failed: apr_memcache_set() ret:[%d]", APLOG_MARK, ret);
return CHXJ_FALSE;
}
}
if (! (store_string = chxj_memcache_get_cookie(r, m, cookie_id))) {
- ERR(r, "failed: chxj_memcache_get_cookie() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d chxj_memcache_reset_cookie() failed: chxj_memcache_get_cookie() cookie_id:[%s]", APLOG_MARK, cookie_id);
return CHXJ_FALSE;
}
if (! chxj_memcache_set_cookie(r, m, cookie_id, store_string)) {
- ERR(r, "failed: apr_memcache_set()");
+ ERR(r, "%s:%d chxj_memcache_reset_cookie() failed: apr_memcache_set() cookie_id:[%s]", APLOG_MARK, cookie_id);
return CHXJ_FALSE;
}
do {
if ((ret = apr_memcache_getp(mc, r->pool, cookie_id, &load_string, &len, 0)) != APR_SUCCESS) {
+ char errstr[255];
if (ret == APR_EAGAIN) {
continue;
}
- ERR(r, "failed: apr_memcache_get() cookie_id:[%s] ret:[%d]", cookie_id, ret);
+ ERR(r, "%s:%d chxj_memcache_get_cookie() failed: apr_memcache_get() cookie_id:[%s] ret:[%d:%s]", APLOG_MARK,
+ cookie_id, ret, apr_strerror(ret,errstr,255));
return NULL;
}
}
if (ret == APR_EAGAIN) {
continue;
}
- ERR(r, "failed: apr_memcache_delete() cookie_id:[%s] ret:[%d]", cookie_id, ret);
+ ERR(r, "%s:%d chxj_memcache_delete_cookie(): failed: apr_memcache_delete() cookie_id:[%s] ret:[%d]", APLOG_MARK, cookie_id, ret);
return CHXJ_FALSE;
}
}
{
DBG(r, "start chxj_save_cookie_memcache() cookie_id:[%s]", cookie_id);
if (! chxj_memcache_init(r, m)) {
- ERR(r, "Cannot create memcache server");
- DBG(r, "end chxj_save_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_save_cookie_memcache(): Cannot create memcache server: cookie_id:[%s] store_string:[%s]", APLOG_MARK, cookie_id, store_string);
return CHXJ_FALSE;
}
if (! chxj_memcache_set_cookie(r, m, cookie_id, store_string)) {
- ERR(r, "cannot store to memcache host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
- DBG(r, "end chxj_save_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_save_cookie_memcache(): cannot store to memcache host:[%s] port:[%d] cookie_id:[%s] store_string:[%s]",
+ APLOG_MARK, m->memcache.host, m->memcache.port, cookie_id, store_string);
return CHXJ_FALSE;
}
DBG(r, "stored DATA:[%s]", chxj_memcache_get_cookie(r, m, cookie_id));
{
DBG(r, "start chxj_update_cookie_memcache() cookie_id:[%s]", cookie_id);
if (! chxj_memcache_init(r, m)) {
- ERR(r, "Cannot create memcache server");
- DBG(r, "end chxj_update_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_update_cookie_memcache(): Cannot create memcache server: cookie_id:[%s] store_string:[%s]",APLOG_MARK,cookie_id, store_string);
return CHXJ_FALSE;
}
if (! chxj_memcache_set_cookie(r, m, cookie_id, store_string)) {
- ERR(r, "cannot store to memcache host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
- DBG(r, "end chxj_update_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r,
+ "%s:%d end chxj_update_cookie_memcache(): cannot store to memcache host:[%s] port:[%d] cookie_id:[%s] store_string:[%s]",
+ APLOG_MARK, m->memcache.host, m->memcache.port, cookie_id, store_string);
return CHXJ_FALSE;
}
DBG(r, "end chxj_update_cookie_memcache() cookie_id:[%s]", cookie_id);
DBG(r, "start chxj_load_cookie_memcache() cookie_id:[%s]", cookie_id);
if (! chxj_memcache_init(r, m)) {
- ERR(r, "Cannot create memcache server");
- DBG(r, "end chxj_load_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_load_cookie_memcache(): Cannot create memcache server: cookie_id:[%s]",APLOG_MARK, cookie_id);
return NULL;
}
if (! (load_string = chxj_memcache_get_cookie(r, m, cookie_id))) {
- ERR(r, "cannot store to memcache host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
- DBG(r, "end chxj_load_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_load_cookie_memcache(): cannot store to memcache host:[%s] port:[%d] cookie_id:[%s]", APLOG_MARK,
+ m->memcache.host, m->memcache.port, cookie_id);
return NULL;
}
DBG(r, "end chxj_load_cookie_memcache() cookie_id:[%s]", cookie_id);
{
DBG(r, "start chxj_delete_cookie_memcache() cookie_id:[%s]", cookie_id);
if (! chxj_memcache_init(r, m)) {
- ERR(r, "Cannot create memcache server");
- DBG(r, "end chxj_delete_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_delete_cookie_memcache(): Cannot create memcache server: cookie_id:[%s]",APLOG_MARK, cookie_id);
return CHXJ_FALSE;
}
if (! chxj_memcache_delete_cookie(r, m, cookie_id)) {
- ERR(r, "cannot store to memcache host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
- DBG(r, "end chxj_delete_cookie_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_delete_cookie_memcache(): Cannot store to memcache host:[%s] port:[%d] cookie_id:[%s]", APLOG_MARK,
+ m->memcache.host, m->memcache.port, cookie_id);
return CHXJ_FALSE;
}
DBG(r, "end chxj_delete_cookie_memcache() cookie_id:[%s]", cookie_id);
{
DBG(r, "start chxj_save_cookie_expire_memcache() cookie_id:[%s]", cookie_id);
if (! chxj_memcache_init(r, m)) {
- ERR(r, "Cannot create memcache server");
- DBG(r, "end chxj_save_cookie_expire_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_save_cookie_expire_memcache(): Cannot create memcache server: cookie_id:[%s]",APLOG_MARK,cookie_id);
return CHXJ_FALSE;
}
if (! chxj_memcache_reset_cookie(r, m, cookie_id)) {
- ERR(r, "cannot store to memcache host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
- DBG(r, "end chxj_save_cookie_expire_memcache() cookie_id:[%s]", cookie_id);
+ ERR(r, "%s:%d end chxj_save_cookie_expire_memcache(): Cannot store to memcache host:[%s] port:[%d] cookie_id:[%s]", APLOG_MARK,
+ m->memcache.host, m->memcache.port, cookie_id);
return CHXJ_FALSE;
}
DBG(r, "end chxj_save_cookie_expire_memcache() cookie_id:[%s]", cookie_id);
char baton[256];
int retry_count = 0;
apr_uint32_t timeout = (apr_uint32_t) ((m->cookie_timeout) ? m->cookie_timeout : DEFAULT_COOKIE_TIMEOUT);
+ apr_interval_time_t wait_time = MEMCACHE_WAIT_MICRO_SECOND;
DBG(r, "start chxj_cookie_lock_memcache()");
+ if (! chxj_memcache_init(r, m)) {
+ ERR(r, "%s:%d end chxj_cookie_lock_memcache(): Cannot create memcache server", APLOG_MARK);
+ return CHXJ_FALSE;
+ }
+
apr_snprintf(baton, sizeof(baton)-1, "dummy");
while(1) {
apr_status_t rv = apr_memcache_add(mc, MEMCACHE_LOCK_KEY, baton, strlen(baton), timeout, 0);
}
retry_count++;
if (retry_count >= MEMCACHE_LOCK_RETRY_COUNT) {
- DBG(r, "couldn't get lock");
+ ERR(r, "%s:%d end chxj_cookie_lock_memcache(): retry over.",APLOG_MARK);
return CHXJ_FALSE;
}
- sleep(MEMCACHE_WAIT_TIME);
+ apr_sleep(wait_time);
}
DBG(r, "end chxj_cookie_lock_memcache()");
{
apr_status_t ret;
DBG(r, "start chxj_cookie_unlock_memcache()");
+ if (! mc) {
+ ERR(r, "%s:%d end chxj_cookie_unlock_memcache(): runtime exception: programing failure.", APLOG_MARK);
+ return CHXJ_FALSE;
+ }
+
while(1) {
if ((ret = apr_memcache_delete(mc, MEMCACHE_LOCK_KEY, 0)) != APR_SUCCESS) {
+ char errstr[255];
if (ret == APR_EAGAIN) {
continue;
}
- ERR(r, "failed: apr_memcache_delete() (lock data) ret:[%d]", ret);
+ ERR(r, "%s:%d end chxj_cookie_unlock_memcache(): failed: apr_memcache_delete() (lock data) ret:[%d:%s]", APLOG_MARK,ret, apr_strerror(ret, errstr, 255));
return CHXJ_FALSE;
}
break;
#include <errmsg.h>
-#define CHXJ_MYSQL_RECONNECT_WAIT_TIME (1)
+#define CHXJ_MYSQL_RECONNECT_WAIT_TIME (5000)
#define CHXJ_MYSQL_RECONNECT_COUNT (3)
typedef struct {
MYSQL_RES *result;
char query[MAX_STRING_LEN];
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
apr_snprintf(query, sizeof(query)-1, "desc %s", m->mysql.tablename);
DBG(r, "start chxj_mysql_exist_cookie_table() query:[%s]", query);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
MYSQL_RES *result;
char query[MAX_STRING_LEN];
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
apr_snprintf(query, sizeof(query)-1, "desc %s_expire", m->mysql.tablename);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
MYSQL_RES *result;
char query[MAX_STRING_LEN];
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
apr_snprintf(query, sizeof(query)-1, "CREATE TABLE %s (cookie_id VARCHAR(%d) NOT NULL, data TEXT, PRIMARY KEY(cookie_id)) TYPE=InnoDB;",
m->mysql.tablename,
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
MYSQL_RES *result;
char query[MAX_STRING_LEN];
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
apr_snprintf(query, sizeof(query)-1, "CREATE TABLE %s_expire (cookie_id VARCHAR(%d) NOT NULL, created_at DATETIME, PRIMARY KEY(cookie_id)) TYPE=InnoDB;",
m->mysql.tablename,
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
apr_size_t clen = strlen(cookie_id);
char *sql_safe_cookie_id = apr_palloc(r->pool, clen*2+1);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
mysql_escape_string(sql_safe_cookie_id,cookie_id,clen);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
char *retval = NULL;
char *sql_safe_cookie_id = apr_palloc(r->pool, clen*2+1);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
mysql_escape_string(sql_safe_cookie_id,cookie_id,clen);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
char *cid = ap_escape_logitem(r->pool, cookie_id);
char *cdt = ap_escape_logitem(r->pool, data);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
DBG(r, "start chxj_mysql_insert_or_update_cookie() data:[%s]", data);
do {
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
ERR(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
char query[MAX_STRING_LEN];
char *cid = ap_escape_logitem(r->pool, cookie_id);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
DBG(r, "start chxj_mysql_insert_or_update_cookie_expire()");
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
ERR(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK,mysql_error(connection.handle), r->uri);
char *retval = NULL;
char *sql_safe_cookie_id = apr_palloc(r->pool, clen*2+1);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
mysql_escape_string(sql_safe_cookie_id,cookie_id,clen);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return NULL;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
apr_size_t clen = strlen(cookie_id);
char *sql_safe_cookie_id = apr_palloc(r->pool, clen*2+1);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
mysql_escape_string(sql_safe_cookie_id,cookie_id,clen);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK,mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
WRN(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
char query[MAX_STRING_LEN];
char *cid = ap_escape_logitem(r->pool, cookie_id);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
DBG(r, "start chxj_mysql_delete_cookie() cookie_id:[%s]", cookie_id);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK,mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
ERR(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
char query[MAX_STRING_LEN];
char *cid = ap_escape_logitem(r->pool, cookie_id);
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
DBG(r, "start chxj_mysql_delete_cookie_expire() cookie_id:[%s]", cookie_id);
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK,mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
ERR(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK,mysql_error(connection.handle), r->uri);
char query[MAX_STRING_LEN];
char *retval = NULL;
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
DBG(r, "start chxj_mysql_get_timeout_localtime()");
do {
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK, mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
ERR(r, "%s:%d MySQL WARN: %s: %s", APLOG_MARK, mysql_error(connection.handle), r->uri);
char query[MAX_STRING_LEN];
char *timeout;
int retry_count = 0;
+ apr_interval_time_t wait_time = CHXJ_MYSQL_RECONNECT_WAIT_TIME;
+
DBG(r, "start chxj_mysql_delete_expired_cookie()");
do {
ERR(r, "%s:%d MySQL ERROR: %s: %s(retry over)", APLOG_MARK,mysql_error(connection.handle), r->uri);
return 0;
}
- sleep(CHXJ_MYSQL_RECONNECT_WAIT_TIME);
+ apr_sleep(wait_time);
continue;
}
ERR(r, "%s:%d MySQL ERROR: %s: %s", APLOG_MARK,mysql_error(connection.handle), r->uri);