svn commit: r704789 - in /webservices/sandesha/trunk/c/src: handlers/sandesha2_in_handler.c handlers/sandesha2_out_handler.c msgprocessors/app_msg_processor.c util/msg_retrans_adjuster.c util/sandesha2_utils.c util/terminate_mgr.c

[email protected]
Newsgroups gmane.comp.apache.webservices.fx.devel
Message-ID <[email protected]>
Author: damitha
Date: Tue Oct 14 23:19:19 2008
New Revision: 704789

URL: http://svn.apache.org/viewvc?rev=704789&view=rev
Log:
Fixing the sporadic failure when run with Apache2/C. The reason is creating the policy property bean in request
pool. Fixed by allocating it from global pool

Modified:
    webservices/sandesha/trunk/c/src/handlers/sandesha2_in_handler.c
    webservices/sandesha/trunk/c/src/handlers/sandesha2_out_handler.c
    webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c
    webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c
    webservices/sandesha/trunk/c/src/util/sandesha2_utils.c
    webservices/sandesha/trunk/c/src/util/terminate_mgr.c

Modified: webservices/sandesha/trunk/c/src/handlers/sandesha2_in_handler.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/handlers/sandesha2_in_handler.c?rev=704789&r1=704788&r2=704789&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/handlers/sandesha2_in_handler.c (original)
+++ webservices/sandesha/trunk/c/src/handlers/sandesha2_in_handler.c Tue Oct 14 23:19:19 2008
@@ -17,7 +17,6 @@
 #include <axis2_engine.h>
 #include <axis2_handler_desc.h>
 #include <axutil_array_list.h>
-#include <axis2_svc.h>
 #include <axis2_msg_ctx.h>
 #include <axutil_property.h>
 #include <axis2_conf_ctx.h>
@@ -100,7 +99,6 @@
     axis2_ctx_t *ctx = NULL;
     axis2_char_t *str_done = NULL;
     axis2_char_t *reinjected_msg = NULL;
-    axis2_svc_t *svc = NULL;
     sandesha2_msg_ctx_t *rm_msg_ctx = NULL;
     sandesha2_msg_processor_t *msg_processor = NULL;
     sandesha2_seq_ack_t *seq_ack = NULL;
@@ -113,7 +111,6 @@
     axis2_bool_t dropped = AXIS2_FALSE;
     axis2_char_t *value = NULL;
     axutil_property_t *property = NULL;
-    sandesha2_property_bean_t *property_bean = NULL; 
 
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2] Start:sandesha2_in_handler_invoke");
@@ -158,23 +155,6 @@
     }
 
     conf = axis2_conf_ctx_get_conf(conf_ctx, env);
-    svc = axis2_msg_ctx_get_svc(msg_ctx, env);
-    if(!svc)
-    {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Axis2 Service is NULL");
-
-        AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_SVC_NULL, AXIS2_FAILURE);
-        return AXIS2_FAILURE;
-    }
-
-    property_bean = sandesha2_utils_get_property_bean(env, svc);
-    if(!property_bean)
-    {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                "[sandesha2] Could not retrieve property bean from service");
-
-        return AXIS2_FAILURE;
-    }
 
     rm_msg_ctx = sandesha2_msg_init_init_msg(env, msg_ctx);
     dbname = sandesha2_util_get_dbname(env, conf_ctx);
@@ -415,6 +395,9 @@
                     if(drop)
                     {
                         app_msg_processor = sandesha2_app_msg_processor_create(env);
+                        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+                            "[sandesha2] Applicatoin message already received. So current "\
+                            "application message dropped. Sending an ack message");
                         sandesha2_app_msg_processor_send_ack_if_reqd(env, rm_msg_ctx, bean_value, 
                             rmd_sequence_id, storage_mgr, sender_mgr, seq_prop_mgr, -1);
                         sandesha2_msg_processor_free(app_msg_processor, env);
@@ -556,6 +539,9 @@
                 else
                 {
                     app_msg_processor = sandesha2_app_msg_processor_create(env);
+                    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+                        "[sandesha2] Applicatoin message already received. So current application"\
+                        "message dropped. Sending an ack message");
                     sandesha2_app_msg_processor_send_ack_if_reqd(env, rm_msg_ctx, rcvd_msgs_str, 
                         rmd_sequence_id, storage_mgr, sender_mgr, seq_prop_mgr, -1);
                     

Modified: webservices/sandesha/trunk/c/src/handlers/sandesha2_out_handler.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/handlers/sandesha2_out_handler.c?rev=704789&r1=704788&r2=704789&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/handlers/sandesha2_out_handler.c (original)
+++ webservices/sandesha/trunk/c/src/handlers/sandesha2_out_handler.c Tue Oct 14 23:19:19 2008
@@ -80,8 +80,6 @@
     sandesha2_msg_ctx_t *rm_msg_ctx = NULL;
     sandesha2_msg_processor_t *msg_processor = NULL;
     int msg_type = -1;
-    sandesha2_property_bean_t *property_bean = NULL;
-
 
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2] Entry:sandesha2_out_handler_invoke");
@@ -134,15 +132,6 @@
         axutil_qname_free(module_qname, env);
     }
 
-    property_bean = sandesha2_utils_get_property_bean(env, svc);
-    if(!property_bean)
-    {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                "[sandesha2] Could not retrieve property bean from service");
-
-        return AXIS2_FAILURE;
-    }
-
     temp_prop = axis2_msg_ctx_get_property(msg_ctx, env, SANDESHA2_APPLICATION_PROCESSING_DONE);
     if(temp_prop)
     {

Modified: webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c?rev=704789&r1=704788&r2=704789&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c (original)
+++ webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c Tue Oct 14 23:19:19 2008
@@ -323,19 +323,6 @@
         return AXIS2_FAILURE;
     }
 
-    svc = axis2_msg_ctx_get_svc(app_msg_ctx, env);
-    if(!svc)
-    {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Service is NULL");
-        return AXIS2_FAILURE;
-    }
-
-    property_bean = sandesha2_utils_get_property_bean(env, svc);
-    if(!property_bean)
-    {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Property bean is NULL");
-        return AXIS2_FAILURE;
-    }
 
     property = sandesha2_msg_ctx_get_property(rm_msg_ctx, env, 
         SANDESHA2_APPLICATION_PROCESSING_DONE);
@@ -740,10 +727,21 @@
 
     sandesha2_next_msg_bean_free(next_msg_bean, env);
 
-    /*in_order_invoke = sandesha2_property_bean_is_in_order(sandesha2_utils_get_property_bean(env, 
-            axis2_conf_ctx_get_conf(conf_ctx, env)), env);*/
+    svc = axis2_msg_ctx_get_svc(app_msg_ctx, env);
+    if(!svc)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Service is NULL");
+        return AXIS2_FAILURE;
+    }
 
+    property_bean = sandesha2_utils_get_property_bean(env, svc);
+    if(!property_bean)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Property bean is NULL");
+        return AXIS2_FAILURE;
+    }
     in_order_invoke =  sandesha2_property_bean_is_in_order(property_bean, env);
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "in_order_invoke:%d", in_order_invoke);
 
     /* test code */
     if(axis2_msg_ctx_get_server_side(app_msg_ctx, env))
@@ -2106,6 +2104,8 @@
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Property bean is NULL");
         return AXIS2_FAILURE;
     }
+    
+    retrans_interval = sandesha2_property_bean_get_retrans_interval(property_bean, env); 
 
     /* If this is a one way message and if use_separate_listener property is set to true we need to 
      * start a listener manager so that create sequence response could be listened at. Note that
@@ -2281,8 +2281,6 @@
         sandesha2_msg_ctx_free(create_seq_rm_msg_ctx, env);
     }
 
-    retrans_interval = sandesha2_property_bean_get_retrans_interval(property_bean, env); 
-
     create_seq_op = axis2_msg_ctx_get_op(create_seq_msg_ctx, env);
     transport_out = axis2_msg_ctx_get_transport_out_desc(create_seq_msg_ctx, env);
     transport_sender = axis2_transport_out_desc_get_sender(transport_out, env);
@@ -2802,6 +2800,8 @@
         return AXIS2_FAILURE;
     }
 
+    retrans_interval = sandesha2_property_bean_get_retrans_interval(property_bean, env);
+
     relates_to = axis2_msg_ctx_get_relates_to(app_msg_ctx, env);
     if(relates_to)
     {
@@ -3173,7 +3173,6 @@
             axis2_msg_ctx_get_current_handler_index(app_msg_ctx, env) + 1);
 
     conf = axis2_conf_ctx_get_conf(conf_ctx, env);
-    retrans_interval = sandesha2_property_bean_get_retrans_interval(property_bean, env);
 
     if(!is_svr_side && (!reply_to_addr || sandesha2_utils_is_anon_uri(env, reply_to_addr)))
     {

Modified: webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c?rev=704789&r1=704788&r2=704789&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c (original)
+++ webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c Tue Oct 14 23:19:19 2008
@@ -88,12 +88,11 @@
     internal_sequence_id = sandesha2_sender_bean_get_internal_seq_id(sender_bean, env);
    
     property_bean = sandesha2_utils_get_property_bean(env, svc);
+    max_attempts = sandesha2_property_bean_get_max_retrans_count(property_bean, env);
 
     sent_count = sandesha2_sender_bean_get_sent_count(sender_bean, env) + 1;
     sandesha2_sender_bean_set_sent_count(sender_bean, env, sent_count);
-    sandesha2_msg_retrans_adjuster_adjust_next_retrans_time(env, sender_bean, property_bean);
 
-    max_attempts = sandesha2_property_bean_get_max_retrans_count(property_bean, env);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "max_attempts:%d", max_attempts);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "sent_count:%d", sent_count);
     if(max_attempts > 0 &&  sent_count > max_attempts)

Modified: webservices/sandesha/trunk/c/src/util/sandesha2_utils.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/sandesha2_utils.c?rev=704789&r1=704788&r2=704789&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/sandesha2_utils.c (original)
+++ webservices/sandesha/trunk/c/src/util/sandesha2_utils.c Tue Oct 14 23:19:19 2008
@@ -224,8 +224,9 @@
     sandesha2_property_bean_t *property_bean = NULL; 
     
     AXIS2_PARAM_CHECK(env->error, svc, NULL);
-    
-    /*param = axis2_svc_get_param(svc, env, SANDESHA2_SANDESHA_PROPERTY_BEAN);*/
+
+    axutil_allocator_switch_to_global_pool(env->allocator);
+    param = axis2_svc_get_param(svc, env, SANDESHA2_SANDESHA_PROPERTY_BEAN);
     if(!param)
     {
         axis2_rm_assertion_t *rm_assertion = NULL;
@@ -244,12 +245,14 @@
             else
             {
                 AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Cannot create Property bean");
+                axutil_allocator_switch_to_local_pool(env->allocator);
                 return NULL;
             }
         }   
         else
         {
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Cannot Retreive RM assertion");
+            axutil_allocator_switch_to_local_pool(env->allocator);
             return NULL;
         }
     }
@@ -258,6 +261,7 @@
         property_bean = (sandesha2_property_bean_t*) axutil_param_get_value(param, env);
     }
 
+    axutil_allocator_switch_to_local_pool(env->allocator);
     if(!property_bean)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
@@ -1598,7 +1602,7 @@
     if(!action)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
-            "[sandesha][sandesha_util] WSA action is NULL.");
+            "[sandesha] WSA action is NULL.");
         return AXIS2_FALSE;
     }
     
@@ -1621,7 +1625,7 @@
     else
     {
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
-            "[sandesha][sandesha_util] Not a RSTR message.");
+            "[sandesha] Not a RSTR message.");
         return AXIS2_FALSE;
     }
 }

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?rev=704789&r1=704788&r2=704789&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/terminate_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/terminate_mgr.c Tue Oct 14 23:19:19 2008
@@ -851,6 +851,7 @@
     axis2_bool_t is_svr_side = AXIS2_FALSE;
     axis2_char_t *msg_id = NULL;
     axis2_svc_t *svc = NULL;
+    long retrans_delay = -1;
 
 
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
@@ -881,6 +882,10 @@
         return AXIS2_FAILURE;
     }
     
+    terminate_delay = sandesha2_property_bean_get_terminate_delay(property_bean, env); 
+    retrans_delay = sandesha2_property_bean_get_retrans_interval(property_bean, env); 
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "retrans_delay:%ld", retrans_delay);
+    
     terminate_rm_msg_ctx = sandesha2_msg_creator_create_terminate_seq_msg(env, ack_rm_msg_ctx, 
             rms_sequence_id, internal_sequence_id, seq_prop_mgr);
 
@@ -1049,7 +1054,6 @@
     terminate_sender_bean = sandesha2_sender_bean_create(env);
     sandesha2_sender_bean_set_msg_ctx_ref_key(terminate_sender_bean, env, key);
     /*sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, key, terminate_msg_ctx, AXIS2_TRUE);*/
-    terminate_delay = sandesha2_property_bean_get_terminate_delay(property_bean, env); 
     send_time = sandesha2_utils_get_current_time_in_millis(env) + terminate_delay;
     sandesha2_sender_bean_set_time_to_send(terminate_sender_bean, env, send_time);
 
@@ -1143,7 +1147,6 @@
             while(!res_envelope)
             {
                 axis2_bool_t continue_sending = AXIS2_FALSE;
-                long retrans_delay = -1;
 
                 AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
                     "[sandesha2] Terminate Sequence response message not found. So continuing");
@@ -1160,8 +1163,6 @@
                     break;
                 }
 
-                retrans_delay = sandesha2_property_bean_get_retrans_interval(property_bean, env); 
-                AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "retrans_delay:%ld", retrans_delay);
                 AXIS2_SLEEP(retrans_delay);
 
                 if(transport_sender)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.