Modified: webservices/sandesha/trunk/c/src/storage/permanent/permanent_transaction.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/permanent/permanent_transaction.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/storage/permanent/permanent_transaction.c (original) +++ webservices/sandesha/trunk/c/src/storage/permanent/permanent_transaction.c Mon Apr 16 21:55:30 2007 @@ -30,7 +30,7 @@ #include <axis2_module_desc.h> #include <sandesha2_permanent_bean_mgr.h> #include <platforms/axutil_platform_auto_sense.h> -#include <sqlite3.h> +#include <mysql.h> typedef struct sandesha2_permanent_transaction_impl sandesha2_permanent_transaction_impl_t; @@ -45,7 +45,7 @@ sandesha2_storage_mgr_t *storage_mgr; axutil_array_list_t *enlisted_beans; axutil_thread_mutex_t *mutex; - sqlite3 *dbconn; + MYSQL *dbconn; axis2_bool_t is_active; unsigned long int thread_id; }; @@ -95,7 +95,9 @@ unsigned long int thread_id) { sandesha2_permanent_transaction_impl_t *trans_impl = NULL; - axis2_char_t *error_msg = NULL; + char *server = "localhost"; + char *user = "g"; + char *password = "g"; axis2_char_t *path = NULL; axis2_char_t *db_name = NULL; int rc = -1; @@ -110,7 +112,8 @@ trans_impl = (sandesha2_permanent_transaction_impl_t *)AXIS2_MALLOC (env->allocator, sizeof(sandesha2_permanent_transaction_impl_t)); - trans_impl->mutex = sandesha2_permanent_storage_mgr_get_mutex(storage_mgr, env); + trans_impl->mutex = sandesha2_permanent_storage_mgr_get_mutex(storage_mgr, + env); trans_impl->storage_mgr = storage_mgr; trans_impl->thread_id = thread_id; trans_impl->dbconn = NULL; @@ -121,9 +124,7 @@ if(conf_ctx) conf = axis2_conf_ctx_get_conf((const axis2_conf_ctx_t *) conf_ctx, env); else - { return NULL; - } prop_bean = (sandesha2_property_bean_t *)sandesha2_utils_get_property_bean( env, conf); /*path = sandesha2_property_bean_get_db_path(prop_bean, env);*/ @@ -148,36 +149,35 @@ SANDESHA2_IS_SVR_SIDE); if(!property) { - db_name = axutil_strcat(env, path, AXIS2_PATH_SEP_STR, - "sandesha2_svr_db", NULL); + /*db_name = axutil_strcat(env, path, AXIS2_PATH_SEP_STR, + "sandesha2_svr_db", NULL);*/ + db_name = "sandesha2_svr_db"; } else { - db_name = axutil_strcat(env, path, AXIS2_PATH_SEP_STR, - "sandesha2_client_db", NULL); - } - rc = sqlite3_open(db_name, &(trans_impl->dbconn)); - if(rc != SQLITE_OK) + /*db_name = axutil_strcat(env, path, AXIS2_PATH_SEP_STR, + "sandesha2_client_db", NULL);*/ + db_name = "sandesha2_client_db"; + } + trans_impl->dbconn = mysql_init(NULL); + if (!mysql_real_connect(trans_impl->dbconn, server, + user, password, db_name, 0, NULL, 0)) { + mysql_close(trans_impl->dbconn); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Can't open database: %s\n", - sqlite3_errmsg(trans_impl->dbconn)); + mysql_error(trans_impl->dbconn)); AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_CANNOT_OPEN_DATABASE, AXIS2_FAILURE); - sqlite3_close(trans_impl->dbconn); return NULL; } - rc = sqlite3_exec(trans_impl->dbconn, "BEGIN TRANSACTION;", 0, 0, - &error_msg); - if(rc == SQLITE_BUSY) - rc = sandesha2_permanent_bean_mgr_busy_handler(trans_impl->dbconn, - "BEGIN TRANSACTION", 0, 0, &error_msg, rc); - if(rc != SQLITE_OK ) + rc = mysql_query(trans_impl->dbconn, "begin;"); + if(rc ) { + mysql_close(trans_impl->dbconn); AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "SQL Error %s", - error_msg); - printf("transaction begin error_msg:%s\n", error_msg); - sqlite3_free(error_msg); + mysql_error(trans_impl->dbconn)); + printf("transaction begin error_msg:%s\n", mysql_error(trans_impl->dbconn)); sandesha2_transaction_free(&(trans_impl->trans), env); return NULL; } @@ -208,7 +208,7 @@ return AXIS2_SUCCESS; } -sqlite3 *AXIS2_CALL +MYSQL *AXIS2_CALL sandesha2_permanent_transaction_get_dbconn( sandesha2_transaction_t *trans, const axutil_env_t *env) @@ -244,30 +244,24 @@ sandesha2_transaction_t *trans, const axutil_env_t *env) { - axis2_char_t *error_msg = NULL; int rc = -1; sandesha2_permanent_transaction_impl_t *trans_impl = NULL; trans_impl = SANDESHA2_INTF_TO_IMPL(trans); axutil_thread_mutex_lock(trans_impl->mutex); - rc = sqlite3_exec(trans_impl->dbconn, "COMMIT TRANSACTION;", 0, 0, &error_msg); - if(rc == SQLITE_BUSY) - { - rc = sandesha2_permanent_bean_mgr_busy_handler(trans_impl->dbconn, - "COMMIT TRANSACTION", 0, 0, &error_msg, rc); - } - if(rc != SQLITE_OK ) + rc = mysql_query(trans_impl->dbconn, "commit;"); + if(rc ) { + mysql_close(trans_impl->dbconn); axutil_thread_mutex_unlock(trans_impl->mutex); AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", - error_msg); - printf("commit error_msg:%s\n", error_msg); - sqlite3_free(error_msg); + mysql_error(trans_impl->dbconn)); + printf("commit error_msg:%s\n", mysql_error(trans_impl->dbconn)); } - sqlite3_close(trans_impl->dbconn); trans_impl->is_active = AXIS2_FALSE; sandesha2_permanent_transaction_release_locks(trans, env); + mysql_close(trans_impl->dbconn); axutil_thread_mutex_unlock(trans_impl->mutex); } @@ -276,29 +270,24 @@ sandesha2_transaction_t *trans, const axutil_env_t *env) { - axis2_char_t *error_msg = NULL; int rc = -1; sandesha2_permanent_transaction_impl_t *trans_impl = NULL; trans_impl = SANDESHA2_INTF_TO_IMPL(trans); axutil_thread_mutex_lock(trans_impl->mutex); - rc = sqlite3_exec(trans_impl->dbconn, "ROLLBACK TRANSACTION;", 0, 0, - &error_msg); - if(rc == SQLITE_BUSY) - rc = sandesha2_permanent_bean_mgr_busy_handler(trans_impl->dbconn, - "ROLLBACK TRANSACTION", 0, 0, &error_msg, rc); - if(rc != SQLITE_OK ) + rc = mysql_query(trans_impl->dbconn, "rollback;"); + if(rc ) { + mysql_close(trans_impl->dbconn); axutil_thread_mutex_unlock(trans_impl->mutex); AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SQL_ERROR, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "sql error %s", - error_msg); - printf("sql_stmt_rollback:%s\n", "ROLLBACK TRANSACTION;"); - printf("rollback error_msg:%s\n", error_msg); - sqlite3_free(error_msg); + mysql_error(trans_impl->dbconn)); + printf("sql_stmt_rollback:%s\n", "rollback;"); + printf("rollback error_msg:%s\n", mysql_error(trans_impl->dbconn)); } - sqlite3_close(trans_impl->dbconn); trans_impl->is_active = AXIS2_FALSE; sandesha2_permanent_transaction_release_locks(trans, env); + mysql_close(trans_impl->dbconn); axutil_thread_mutex_unlock(trans_impl->mutex); } @@ -377,4 +366,31 @@ AXIS2_LOG_INFO(env->log, "[sandesha2]Exit:sandesha2_permanent_transaction_enlist"); } + +/*int +sandesha2_permanent_transaction_busy_handler( + MYSQL* dbconn, + char *sql_stmt, + int (*callback_func)(void *, int, char **, char **), + void *args, + char **error_msg, + int rc) +{ + int counter = 0; + printf("in busy handler3\n"); + while(rc == SQLITE_BUSY && counter < 512) + { + printf("in busy handler33\n"); + counter++; +#ifdef WIN32 + Sleep(100); +#else + usleep(100000); +#endif + rc = mysql_query(dbconn, sql_stmt, callback_func, args, error_msg); + } + printf("in busy handler4\n"); + return rc; +} +*/
Modified: webservices/sandesha/trunk/c/src/util/Makefile.am URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/Makefile.am?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/util/Makefile.am (original) +++ webservices/sandesha/trunk/c/src/util/Makefile.am Mon Apr 16 21:55:30 2007 @@ -17,4 +17,5 @@ INCLUDES = -I$(top_builddir)/include \ -I$(top_builddir)/include/sandesha2 \ + -I/usr/include/mysql \ @AXIS2INC@ Modified: webservices/sandesha/trunk/c/src/util/ack_mgr.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/ack_mgr.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/util/ack_mgr.c (original) +++ webservices/sandesha/trunk/c/src/util/ack_mgr.c Mon Apr 16 21:55:30 2007 @@ -183,7 +183,7 @@ sandesha2_sender_bean_set_resend(ack_bean, env, AXIS2_FALSE); sandesha2_sender_bean_set_seq_id(ack_bean, env, seq_id); sandesha2_sender_bean_set_send(ack_bean, env, AXIS2_TRUE); - + sandesha2_sender_bean_set_seq_id(ack_bean, env, seq_id); property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST, AXIS2_FALSE, 0, AXIS2_VALUE_FALSE); axis2_msg_ctx_set_property(ack_msg_ctx, env, Modified: webservices/sandesha/trunk/c/src/util/msg_creator.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_creator.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/util/msg_creator.c (original) +++ webservices/sandesha/trunk/c/src/util/msg_creator.c Mon Apr 16 21:55:30 2007 @@ -329,17 +329,21 @@ sandesha2_create_seq_t *cs = NULL; int soap_version = -1; + AXIS2_LOG_INFO(env->log, + "[sandesha2] Start:sandesha2_msg_creator_create_create_seq_res_msg"); temp_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(create_seq_msg, env); conf_ctx = axis2_msg_ctx_get_conf_ctx(temp_msg_ctx, env); msg_part = (sandesha2_iom_rm_element_t *) sandesha2_msg_ctx_get_msg_part( - create_seq_msg, env, SANDESHA2_MSG_PART_CREATE_SEQ); + create_seq_msg, env, SANDESHA2_MSG_PART_CREATE_SEQ); cs = (sandesha2_create_seq_t *) msg_part; rm_version = sandesha2_utils_get_rm_version(env, new_seq_id, storage_mgr); if(!rm_version) { + AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, + "Cannot find rm version of given message"); AXIS2_ERROR_SET(env->error, - SANDESHA2_ERROR_CANNOT_FIND_RM_VERSION_OF_GIVEN_MSG, - AXIS2_FAILURE); + SANDESHA2_ERROR_CANNOT_FIND_RM_VERSION_OF_GIVEN_MSG, + AXIS2_FAILURE); return NULL; } rm_ns_value = sandesha2_spec_specific_consts_get_rm_ns_val(env, rm_version); @@ -413,6 +417,8 @@ temp_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(create_seq_msg, env); sandesha2_msg_creator_finalize_creation(env, temp_msg_ctx, out_msg); axis2_msg_ctx_set_server_side(temp_msg_ctx, env, AXIS2_TRUE); + AXIS2_LOG_INFO(env->log, + "[sandesha2] Exit:sandesha2_msg_creator_create_create_seq_res_msg"); return create_seq_response; } Modified: webservices/sandesha/trunk/c/src/util/msg_init.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_init.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/util/msg_init.c (original) +++ webservices/sandesha/trunk/c/src/util/msg_init.c Mon Apr 16 21:55:30 2007 @@ -443,7 +443,7 @@ { axis2_char_t *spec_version = NULL; axis2_char_t *seq_rm_ns = NULL; - AXIS2_LOG_INFO(env->log, "prop_key:%s\n", prop_key); + AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "prop_key:%s\n", prop_key); spec_version = sandesha2_utils_get_rm_version(env, prop_key, storage_mgr); if(spec_version) Modified: webservices/sandesha/trunk/c/src/util/terminate_mgr.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/terminate_mgr.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/util/terminate_mgr.c (original) +++ webservices/sandesha/trunk/c/src/util/terminate_mgr.c Mon Apr 16 21:55:30 2007 @@ -638,9 +638,12 @@ axis2_engine_t *engine = NULL; axis2_char_t *temp_action = NULL; axutil_string_t *soap_action = NULL; + axis2_status_t status = AXIS2_FALSE; const axis2_char_t *to_addr = NULL; long send_time = -1; + AXIS2_LOG_INFO(env->log, + "[sandesha2] Start:sandesha2_terminate_mgr_add_terminate_seq_msg"); AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, rm_msg_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, out_seq_id, AXIS2_FAILURE); @@ -659,6 +662,10 @@ { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Terminate was" " added previously"); + /* If we do not return at this, there will be two terminate messsages + * sent to the client + */ + return AXIS2_SUCCESS; } terminate_rm_msg = sandesha2_msg_creator_create_terminate_seq_msg(env, rm_msg_ctx, out_seq_id, int_seq_id, storage_mgr); @@ -747,10 +754,29 @@ sandesha2_sender_bean_set_msg_id(terminate_bean, env, sandesha2_msg_ctx_get_msg_id(terminate_rm_msg, env)); sandesha2_sender_bean_set_send(terminate_bean, env, AXIS2_TRUE); - + + + + + sandesha2_terminate_seq_t *terminate_seq = NULL; + terminate_seq = (sandesha2_terminate_seq_t*) + sandesha2_msg_ctx_get_msg_part(terminate_rm_msg, env, + SANDESHA2_MSG_PART_TERMINATE_SEQ); + axis2_char_t *seq_id = sandesha2_identifier_get_identifier( + sandesha2_terminate_seq_get_identifier(terminate_seq, + env), env); + axis2_char_t *internal_seq_id = sandesha2_utils_get_seq_property(env, seq_id, + SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, storage_mgr); + sandesha2_sender_bean_set_seq_id(terminate_bean, env, internal_seq_id); + + + + property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_FALSE); sandesha2_msg_ctx_set_property(terminate_rm_msg, env, SANDESHA2_QUALIFIED_FOR_SENDING, property); + sandesha2_sender_bean_set_msg_type(terminate_bean, env, + SANDESHA2_MSG_TYPE_TERMINATE_SEQ); sandesha2_sender_bean_set_resend(terminate_bean, env, AXIS2_FALSE); retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); @@ -792,6 +818,9 @@ axis2_msg_ctx_set_reply_to(msg_ctx1, env, reply_to_epr); } engine = axis2_engine_create(env, conf_ctx); - return axis2_engine_send(engine, env, msg_ctx1); + status = axis2_engine_send(engine, env, msg_ctx1); + AXIS2_LOG_INFO(env->log, + "[sandesha2] Exit:sandesha2_terminate_mgr_add_terminate_seq_msg"); + return status; } Modified: webservices/sandesha/trunk/c/src/workers/sender.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/workers/sender.c (original) +++ webservices/sandesha/trunk/c/src/workers/sender.c Mon Apr 16 21:55:30 2007 @@ -267,7 +267,12 @@ sandesha2_sender_worker_t *sender_worker = NULL; axis2_char_t *msg_id = NULL; axis2_char_t *seq_id = NULL; + axis2_char_t *out_int_seq_id = NULL; + axis2_char_t *out_seq_id = NULL; int no_of_seqs = 0; + axis2_bool_t seq_completed = AXIS2_FALSE; + sandesha2_seq_property_bean_t *terminated_bean = NULL; + axis2_char_t *terminated = NULL; no_of_seqs = axutil_array_list_size(sender->working_seqs, env); if(sender->seq_index >= no_of_seqs) { @@ -280,6 +285,7 @@ } seq_id = axutil_array_list_get(sender->working_seqs, env, sender->seq_index++); + transaction = sandesha2_storage_mgr_get_transaction(storage_mgr, env); if(!transaction) @@ -287,14 +293,15 @@ AXIS2_SLEEP(SANDESHA2_SENDER_SLEEP_TIME); continue; } - mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr( storage_mgr, env); + mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); sender_bean = sandesha2_sender_mgr_get_next_msg_to_send(mgr, env, seq_id); if(!sender_bean) { sandesha2_transaction_commit(transaction, env); - AXIS2_SLEEP(SANDESHA2_SENDER_SLEEP_TIME); + /*AXIS2_SLEEP(SANDESHA2_SENDER_SLEEP_TIME);*/ + usleep(100000); continue; } msg_id = sandesha2_sender_bean_get_msg_id((sandesha2_rm_bean_t *) Modified: webservices/sandesha/trunk/c/src/workers/sender_worker.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender_worker.c?view=diff&rev=529486&r1=529485&r2=529486 ============================================================================== --- webservices/sandesha/trunk/c/src/workers/sender_worker.c (original) +++ webservices/sandesha/trunk/c/src/workers/sender_worker.c Mon Apr 16 21:55:30 2007 @@ -510,6 +510,7 @@ sandesha2_terminate_mgr_terminate_sending_side(env, conf_ctx, internal_seq_id, axis2_msg_ctx_get_server_side(msg_ctx, env), storage_mgr); + sender_worker->status = AXIS2_FAILURE; } property = axis2_msg_ctx_get_property(msg_ctx, env, SANDESHA2_WITHIN_TRANSACTION); @@ -590,13 +591,13 @@ * Message Receiver (may be callback MR). */ axis2_msg_ctx_set_server_side(res_msg_ctx, env, AXIS2_TRUE); - property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_TRANSPORT_IN); + /*property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_TRANSPORT_IN); if(property) { axutil_property_t *temp_prop = axutil_property_clone(property, env); axis2_msg_ctx_set_property(res_msg_ctx, env, AXIS2_TRANSPORT_IN, temp_prop); - } + }*/ axis2_msg_ctx_set_svc_ctx(res_msg_ctx, env, axis2_msg_ctx_get_svc_ctx( msg_ctx, env)); axis2_msg_ctx_set_svc_grp_ctx(res_msg_ctx, env, --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
