OSDN Git Service

* temp commit.
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Tue, 6 May 2008 18:55:34 +0000 (18:55 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Tue, 6 May 2008 18:55:34 +0000 (18:55 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/RELEASE_0_12_0@2625 1a406e8e-add9-4483-a2c8-d8cac5b7c224

src/chxj_cookie.c
src/chxj_memcache.c
src/chxj_mysql.c

index c289572..7ffe72b 100644 (file)
@@ -817,7 +817,6 @@ chxj_delete_cookie(request_rec *r, const char *cookie_id)
     done_proc = 1;
   }
 #endif
-
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_delete_cookie_memcache(r, dconf, cookie_id)) {
@@ -948,7 +947,7 @@ chxj_cookie_expire_gc(request_rec *r)
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_cookie_expire_gc_mysql(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_expire_gc_mysql()");
+      ERR(r, "%s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_mysql()", APLOG_MARK);
       return;
     }
     done_proc = 1;
@@ -957,7 +956,7 @@ chxj_cookie_expire_gc(request_rec *r)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_cookie_expire_gc_memcache(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_expire_gc_memcache()");
+      ERR(r, "%s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_memcache()", APLOG_MARK);
       return;
     }
     done_proc = 1;
@@ -965,7 +964,7 @@ chxj_cookie_expire_gc(request_rec *r)
 #endif
   if (!done_proc) {
     if (! chxj_cookie_expire_gc_dbm(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_expire_gc_dbm()");
+      ERR(r, "%s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_dbm()", APLOG_MARK);
       return;
     }
   }
@@ -997,7 +996,7 @@ chxj_cookie_lock(request_rec *r)
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_cookie_lock_mysql(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_lock_mysql()");
+      ERR(r, "%s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_mysql()", APLOG_MARK);
       return 0;
     }
     done_proc = 1;
@@ -1006,7 +1005,7 @@ chxj_cookie_lock(request_rec *r)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_cookie_lock_memcache(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_lock_memcache()");
+      ERR(r, "%s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_memcache()", APLOG_MARK);
       return 0;
     }
     done_proc = 1;
@@ -1014,7 +1013,7 @@ chxj_cookie_lock(request_rec *r)
 #endif
   if (!done_proc) {
     if (! chxj_cookie_lock_dbm(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_lock_dbm()");
+      ERR(r, "%s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_dbm()", APLOG_MARK);
       return 0;
     }
   }
index c19a939..7e68c0b 100644 (file)
@@ -40,8 +40,8 @@
 #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)
@@ -70,8 +70,7 @@ chxj_memcache_init(request_rec *r, mod_chxj_config *m)
   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);
@@ -92,18 +91,17 @@ chxj_memcache_and_memcache_server_create(request_rec *r, mod_chxj_config *m, apr
                                  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()");
@@ -124,7 +122,7 @@ chxj_memcache_set_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_
       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;
     }
   }
@@ -143,12 +141,12 @@ chxj_memcache_reset_cookie(request_rec *r, mod_chxj_config *m, const char *cooki
 
 
   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;
   }
 
@@ -168,10 +166,12 @@ chxj_memcache_get_cookie(request_rec *r, mod_chxj_config *UNUSED(m), const char
 
   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;
     }
   }
@@ -197,7 +197,7 @@ chxj_memcache_delete_cookie(request_rec *r, mod_chxj_config *UNUSED(m),  const c
       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;
     }
   }
@@ -214,14 +214,13 @@ chxj_save_cookie_memcache(request_rec *r, mod_chxj_config *m, const char *cookie
 {
   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));
@@ -235,14 +234,14 @@ chxj_update_cookie_memcache(request_rec *r, mod_chxj_config *m, const char *cook
 {
   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);
@@ -257,14 +256,13 @@ chxj_load_cookie_memcache(request_rec *r, mod_chxj_config *m, const char *cookie
   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);
@@ -277,14 +275,13 @@ chxj_delete_cookie_memcache(request_rec *r, mod_chxj_config *m, const char *cook
 {
   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);
@@ -297,14 +294,13 @@ chxj_save_cookie_expire_memcache(request_rec *r, mod_chxj_config *m, const char
 {
   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);
@@ -338,8 +334,14 @@ chxj_cookie_lock_memcache(request_rec *r, mod_chxj_config *m)
   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);
@@ -353,10 +355,10 @@ chxj_cookie_lock_memcache(request_rec *r, mod_chxj_config *m)
     }
     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()");
@@ -369,12 +371,18 @@ chxj_cookie_unlock_memcache(request_rec *r, mod_chxj_config *UNUSED(m))
 {
   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;
index 569fd81..4219b84 100644 (file)
@@ -35,7 +35,7 @@
 #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 {
@@ -161,6 +161,7 @@ chxj_mysql_exist_cookie_table(request_rec *r, mod_chxj_config *m)
   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);
@@ -178,7 +179,7 @@ chxj_mysql_exist_cookie_table(request_rec *r, mod_chxj_config *m)
           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);
@@ -202,6 +203,7 @@ chxj_mysql_exist_cookie_table_expire(request_rec *r, mod_chxj_config *m)
   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);
 
@@ -221,7 +223,7 @@ chxj_mysql_exist_cookie_table_expire(request_rec *r, mod_chxj_config *m)
           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);
@@ -244,6 +246,7 @@ chxj_mysql_create_cookie_table(request_rec *r, mod_chxj_config *m)
   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,
@@ -263,7 +266,7 @@ chxj_mysql_create_cookie_table(request_rec *r, mod_chxj_config *m)
           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);
@@ -286,6 +289,7 @@ chxj_mysql_create_cookie_expire_table(request_rec *r, mod_chxj_config *m)
   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,
@@ -307,7 +311,7 @@ chxj_mysql_create_cookie_expire_table(request_rec *r, mod_chxj_config *m)
           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);
@@ -334,6 +338,7 @@ chxj_mysql_get_cookie_from_cookie_id(request_rec *r, mod_chxj_config *m, const c
   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);
 
@@ -353,7 +358,7 @@ chxj_mysql_get_cookie_from_cookie_id(request_rec *r, mod_chxj_config *m, const c
           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);
@@ -393,6 +398,7 @@ chxj_mysql_get_cookie_expire_from_cookie_id(request_rec *r, mod_chxj_config *m,
   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);
 
@@ -415,7 +421,7 @@ chxj_mysql_get_cookie_expire_from_cookie_id(request_rec *r, mod_chxj_config *m,
           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);
@@ -452,6 +458,7 @@ chxj_mysql_insert_or_update_cookie(request_rec *r, mod_chxj_config *m, const cha
   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 {
@@ -470,7 +477,7 @@ chxj_mysql_insert_or_update_cookie(request_rec *r, mod_chxj_config *m, const cha
           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);
@@ -520,6 +527,7 @@ chxj_mysql_insert_or_update_cookie_expire(request_rec *r, mod_chxj_config *m, co
   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()");
 
@@ -539,7 +547,7 @@ chxj_mysql_insert_or_update_cookie_expire(request_rec *r, mod_chxj_config *m, co
           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);
@@ -612,6 +620,7 @@ chxj_mysql_load_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id
   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);
 
@@ -633,7 +642,7 @@ chxj_mysql_load_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id
           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);
@@ -673,6 +682,7 @@ chxj_mysql_load_cookie_expire(request_rec *r, mod_chxj_config *m, const char *co
   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);
 
@@ -698,7 +708,7 @@ chxj_mysql_load_cookie_expire(request_rec *r, mod_chxj_config *m, const char *co
           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);
@@ -733,6 +743,7 @@ chxj_mysql_delete_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_
   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);
 
@@ -752,7 +763,7 @@ chxj_mysql_delete_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_
           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);
@@ -797,6 +808,7 @@ chxj_mysql_delete_cookie_expire(request_rec *r, mod_chxj_config *m, const char *
   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);
 
@@ -816,7 +828,7 @@ chxj_mysql_delete_cookie_expire(request_rec *r, mod_chxj_config *m, const char *
           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);
@@ -860,6 +872,7 @@ chxj_mysql_get_timeout_localtime(request_rec *r, mod_chxj_config *m)
   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 {
@@ -879,7 +892,7 @@ chxj_mysql_get_timeout_localtime(request_rec *r, mod_chxj_config *m)
           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);
@@ -913,6 +926,8 @@ chxj_mysql_delete_expired_cookie(request_rec *r, mod_chxj_config *m)
   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 {
@@ -931,7 +946,7 @@ chxj_mysql_delete_expired_cookie(request_rec *r, mod_chxj_config *m)
           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);