You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by da...@apache.org on 2007/04/27 03:13:42 UTC

svn commit: r532924 - in /webservices/sandesha/trunk/c/src/storage/mysql: permanent_bean_mgr.c sandesha2_permanent_bean_mgr.h

Author: damitha
Date: Thu Apr 26 18:13:41 2007
New Revision: 532924

URL: http://svn.apache.org/viewvc?view=rev&rev=532924
Log:
Make some improvements in database accessing

Modified:
    webservices/sandesha/trunk/c/src/storage/mysql/permanent_bean_mgr.c
    webservices/sandesha/trunk/c/src/storage/mysql/sandesha2_permanent_bean_mgr.h

Modified: webservices/sandesha/trunk/c/src/storage/mysql/permanent_bean_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/mysql/permanent_bean_mgr.c?view=diff&rev=532924&r1=532923&r2=532924
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/mysql/permanent_bean_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/mysql/permanent_bean_mgr.c Thu Apr 26 18:13:41 2007
@@ -185,6 +185,7 @@
     axis2_char_t *sql_stmt_insert)
 {
     int rc = -1;
+    int num_rows = -1;
     MYSQL *dbconn = NULL;
     MYSQL_RES *res;
     sandesha2_rm_bean_t *retrieve_bean = NULL;
@@ -208,51 +209,38 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt:%s. sql error: %s",
             sql_stmt_retrieve, mysql_error(dbconn));
         printf("sql_stmt_retrieve:%s\n", sql_stmt_retrieve);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
-    retrieve_func(res, args);
-    mysql_free_result(res);
-    if(args->data)
-        retrieve_bean = (sandesha2_rm_bean_t *) args->data;
-    if(args)
-        AXIS2_FREE(env->allocator, args);
-    if(retrieve_bean)
+    num_rows = mysql_num_rows(res);
+    if(num_rows > 0)
     {
-        rc = mysql_query(dbconn, sql_stmt_update);
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[sandesha2]Record already inserted. So no need to try again");
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
+        return AXIS2_TRUE;
+    }
+    else
+    {
+        rc = mysql_query(dbconn, sql_stmt_insert);
         if(rc)
         {
+            AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
+            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt: %s. sql error: %s", 
+                sql_stmt_insert, mysql_error(dbconn));
+            printf("sql_stmt_insert:%s\n", sql_stmt_insert);
+            printf("insert error_msg:%s\n", mysql_error(dbconn));
             mysql_close(dbconn);
             axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
-            AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, 
-                AXIS2_FAILURE);
-            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt: %s.sql error: %s", 
-                sql_stmt_update, mysql_error(dbconn));
-            printf("sql_stmt_update:%s\n", sql_stmt_update);
-            printf("update error_msg:%s\n", mysql_error(dbconn));
             return AXIS2_FALSE;
         }
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
-        return AXIS2_TRUE;
-    }
-    rc = mysql_query(dbconn, sql_stmt_insert);
-    if(rc)
-    {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
-        AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt: %s. sql error: %s", 
-            sql_stmt_insert, mysql_error(dbconn));
-        printf("sql_stmt_insert:%s\n", sql_stmt_insert);
-        printf("insert error_msg:%s\n", mysql_error(dbconn));
-        return AXIS2_FALSE;
     }
     axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
     return AXIS2_TRUE;
@@ -288,13 +276,13 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt: %s. sql error: %s",
             sql_stmt_retrieve, mysql_error(dbconn));
         printf("sql_stmt_retrieve:%s\n", sql_stmt_retrieve);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -307,13 +295,13 @@
     rc = mysql_query(dbconn, sql_stmt_remove);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt: %s. sql error: %s",
             sql_stmt_remove, mysql_error(dbconn));
         printf("sql_stmt_remove:%s\n", sql_stmt_remove);
         printf("remove error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
@@ -349,13 +337,13 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql stmt: %s. sql error: %s",
             sql_stmt_retrieve, mysql_error(dbconn));
         printf("sql_stmt_retrieve:%s\n", sql_stmt_retrieve);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -413,8 +401,6 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve_old_bean);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         if(args)
             AXIS2_FREE(env->allocator, args);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
@@ -422,6 +408,8 @@
             mysql_error(dbconn));
         printf("sql_stmt_retrieve_old_bean:%s\n", sql_stmt_retrieve_old_bean);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -430,13 +418,13 @@
     rc = mysql_query(dbconn, sql_stmt_update);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", 
             mysql_error(dbconn));
         printf("sql_stmt_update:%s\n", sql_stmt_update);
         printf("update error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
@@ -446,7 +434,6 @@
         key = sandesha2_rm_bean_get_key(old_bean, env);
     if(!key)
         return AXIS2_FALSE;
-    /*sandesha2_storage_mgr_enlist_bean(bean_mgr_impl->storage_mgr, env, old_bean);*/
     if(args)
         AXIS2_FREE(env->allocator, args);
     return AXIS2_TRUE;
@@ -491,8 +478,6 @@
     rc = mysql_query(dbconn, sql_stmt_find);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         if(data_array)
             axutil_array_list_free(data_array, env);
         if(args)
@@ -502,6 +487,8 @@
             mysql_error(dbconn));
         printf("sql_stmt_find:%s\n", sql_stmt_find);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return NULL;
     }
     res = mysql_store_result(dbconn);
@@ -532,15 +519,6 @@
         axutil_array_list_free(data_array, env);
     if(args)
         AXIS2_FREE(env->allocator, args);
-    /* Now we have a point-in-time view of the beans, lock them all.*/
-    /*size = axutil_array_list_size(beans, env);
-    for(i = 0; i < size; i++)
-    {
-        sandesha2_rm_bean_t *temp = axutil_array_list_get(beans, env, i);
-        if(temp)
-            sandesha2_storage_mgr_enlist_bean(bean_mgr_impl->storage_mgr, env, 
-                temp);
-    }*/
     /* Finally remove any beans that are no longer in the table */
     size = axutil_array_list_size(beans, env);
     for(i = 0; i < size; i++)
@@ -553,13 +531,13 @@
             rc = mysql_query(dbconn, sql_stmt_count);
             if(rc)
             {
-                mysql_close(dbconn);
-                axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
                 AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
                 AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", 
                     mysql_error(dbconn));
                 printf("sql_stmt_count:%s\n", sql_stmt_count);
                 printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+                mysql_close(dbconn);
+                axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
                 return NULL;
             }
             res = mysql_store_result(dbconn);
@@ -642,13 +620,13 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s",
             mysql_error(dbconn));
         printf("sql_stmt_retrieve:%s\n", sql_stmt_retrieve);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -748,13 +726,13 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s",
             mysql_error(dbconn));
         printf("sql_stmt_retrieve:%s\n", sql_stmt_retrieve);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -779,8 +757,6 @@
         rc = mysql_query(dbconn, sql_stmt_update);
         if(rc)
         {
-            mysql_close(dbconn);
-            axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
             AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, 
                 AXIS2_FAILURE);
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", 
@@ -788,6 +764,8 @@
             printf("sql_stmt_update:%s\n", sql_stmt_update);
             printf("update error_msg:%s\n", mysql_error(dbconn));
             AXIS2_FREE(env->allocator, sql_stmt_update);
+            mysql_close(dbconn);
+            axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
             return AXIS2_FALSE;
         }
         AXIS2_FREE(env->allocator, sql_stmt_update);
@@ -807,13 +785,13 @@
     rc = mysql_query(dbconn, sql_stmt_insert);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", mysql_error(dbconn));
         printf("sql_stmt_insert:%s\n", sql_stmt_insert);
         printf("insert error_msg:%s\n", mysql_error(dbconn));
         AXIS2_FREE(env->allocator, sql_stmt_insert);
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     AXIS2_FREE(env->allocator, sql_stmt_insert);
@@ -845,13 +823,13 @@
     rc = mysql_query(dbconn, sql_stmt_remove);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s",
             mysql_error(dbconn));
         printf("sql_stmt_remove:%s\n", sql_stmt_remove);
         printf("remove error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
@@ -894,13 +872,13 @@
     rc = mysql_query(dbconn, sql_stmt_count);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", 
             mysql_error(dbconn));
         printf("sql_stmt_count:%s\n", sql_stmt_count);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -915,8 +893,6 @@
         rc = mysql_query(dbconn, sql_stmt_update);
         if(rc)
         {
-            mysql_close(dbconn);
-            axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
             AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, 
                 AXIS2_FAILURE);
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", 
@@ -924,6 +900,8 @@
             printf("sql_stmt_update:%s\n", sql_stmt_update);
             printf("update error_msg:%s\n", mysql_error(dbconn));
             AXIS2_FREE(env->allocator, sql_stmt_update);
+            mysql_close(dbconn);
+            axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
             return AXIS2_FALSE;
         }
         AXIS2_FREE(env->allocator, sql_stmt_update);
@@ -939,13 +917,13 @@
         rc = mysql_query(dbconn, sql_stmt_insert);
         if(rc)
         {
-            mysql_close(dbconn);
-            axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
             AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", mysql_error(dbconn));
             printf("sql_stmt_insert:%s\n", sql_stmt_insert);
             printf("insert error_msg:%s\n", mysql_error(dbconn));
             AXIS2_FREE(env->allocator, sql_stmt_insert);
+            mysql_close(dbconn);
+            axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
             return AXIS2_FALSE;
         }
         AXIS2_FREE(env->allocator, sql_stmt_insert);
@@ -980,13 +958,13 @@
     rc = mysql_query(dbconn, sql_stmt_remove);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s",
             mysql_error(dbconn));
         printf("sql_stmt_remove:%s\n", sql_stmt_remove);
         printf("remove error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
@@ -1024,13 +1002,13 @@
     rc = mysql_query(dbconn, sql_stmt_retrieve);
     if(rc)
     {
-        mysql_close(dbconn);
-        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s",
             mysql_error(dbconn));
         printf("sql_stmt_retrieve:%s\n", sql_stmt_retrieve);
         printf("retrieve error_msg:%s\n", mysql_error(dbconn));
+        mysql_close(dbconn);
+        axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
         return AXIS2_FALSE;
     }
     res = mysql_store_result(dbconn);
@@ -1039,28 +1017,4 @@
     axutil_thread_mutex_unlock(bean_mgr_impl->mutex);
     return (sandesha2_response_t *) args->data;
 }
-
-int
-sandesha2_permanent_bean_mgr_busy_handler(
-    MYSQL* dbconn,
-    char *sql_stmt,
-    int rc)
-{
-    int counter = 0;
-    printf("in busy handler1\n");
-    while(rc == 1 && counter < 512)
-    {
-        printf("in busy handler11\n");
-        counter++;
-#ifdef WIN32
-		Sleep(100);
-#else
-        usleep(100000);
-#endif
-        rc = mysql_query(dbconn, sql_stmt);
-    }
-    printf("in busy handler2\n");
-    return rc;
-}
-
 

Modified: webservices/sandesha/trunk/c/src/storage/mysql/sandesha2_permanent_bean_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/mysql/sandesha2_permanent_bean_mgr.h?view=diff&rev=532924&r1=532923&r2=532924
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/mysql/sandesha2_permanent_bean_mgr.h (original)
+++ webservices/sandesha/trunk/c/src/storage/mysql/sandesha2_permanent_bean_mgr.h Thu Apr 26 18:13:41 2007
@@ -192,12 +192,6 @@
     axis2_char_t *seq_id,
     int msg_no);
 
-int
-sandesha2_permanent_bean_mgr_busy_handler(
-    MYSQL * dbconn,
-    char *sql_stmt,
-    int rc);
-
 /** @} */
 #ifdef __cplusplus
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org