Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
catching exceptions if some during amok_bw_request and saturate_start and
authordimitrov <dimitrov@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 12 Jul 2006 16:22:25 +0000 (16:22 +0000)
committerdimitrov <dimitrov@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 12 Jul 2006 16:22:25 +0000 (16:22 +0000)
rethrowing them with a value indicating which host died

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2546 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/amok/Bandwidth/bandwidth.c
src/amok/Bandwidth/saturate.c

index b2774aa..4b05ce4 100644 (file)
@@ -375,21 +375,29 @@ void amok_bw_request(const char* from_name,unsigned int from_port,
   /* The request */
   bw_request_t request;
   bw_res_t result;
   /* The request */
   bw_request_t request;
   bw_res_t result;
-
+xbt_ex_t e;
   request=xbt_new0(s_bw_request_t,1);
   request->buf_size=buf_size;
   request->exp_size=exp_size;
   request->msg_size=msg_size;
   request->min_duration = min_duration;
 
   request=xbt_new0(s_bw_request_t,1);
   request->buf_size=buf_size;
   request->exp_size=exp_size;
   request->msg_size=msg_size;
   request->min_duration = min_duration;
 
+
   request->peer.name = (char*)to_name;
   request->peer.port = to_port;
 
   request->peer.name = (char*)to_name;
   request->peer.port = to_port;
 
+
   sock = gras_socket_client(from_name,from_port);
   sock = gras_socket_client(from_name,from_port);
+    
   DEBUG4("Ask for a BW test between %s:%d and %s:%d",  from_name,from_port, to_name,to_port);
   DEBUG4("Ask for a BW test between %s:%d and %s:%d",  from_name,from_port, to_name,to_port);
-
+ TRY{
   gras_msg_rpccall(sock,20*60,gras_msgtype_by_name("BW request"), &request, &result);
   gras_msg_rpccall(sock,20*60,gras_msgtype_by_name("BW request"), &request, &result);
-  
+   }CATCH(e){
+     if (e.value==1)  THROW1(0,1,"%s",to_name);
+    THROW1(0,0,"%s",from_name);
+  }
   if (sec)
     *sec=result->sec;
   if (bw)
   if (sec)
     *sec=result->sec;
   if (bw)
@@ -411,19 +419,23 @@ int amok_bw_cb_bw_request(gras_msg_cb_ctx_t ctx,
   bw_request_t request = *(bw_request_t*)payload;
   bw_res_t result = xbt_new0(s_bw_res_t,1);
   gras_socket_t peer,asker;
   bw_request_t request = *(bw_request_t*)payload;
   bw_res_t result = xbt_new0(s_bw_res_t,1);
   gras_socket_t peer,asker;
+  xbt_ex_t e;
 
   asker=gras_msg_cb_ctx_from(ctx);
   VERB4("Asked by %s:%d to conduct a bw XP with %s:%d",        
        gras_socket_peer_name(asker),gras_socket_peer_port(asker),
 
   asker=gras_msg_cb_ctx_from(ctx);
   VERB4("Asked by %s:%d to conduct a bw XP with %s:%d",        
        gras_socket_peer_name(asker),gras_socket_peer_port(asker),
+
        request->peer.name,request->peer.port);
   peer = gras_socket_client(request->peer.name,request->peer.port);
        request->peer.name,request->peer.port);
   peer = gras_socket_client(request->peer.name,request->peer.port);
+TRY{
   amok_bw_test(peer,
               request->buf_size,request->exp_size,request->msg_size,
               request->min_duration,
               &(result->sec),&(result->bw));
   amok_bw_test(peer,
               request->buf_size,request->exp_size,request->msg_size,
               request->min_duration,
               &(result->sec),&(result->bw));
-
   gras_msg_rpcreturn(240,ctx,&result);
   gras_msg_rpcreturn(240,ctx,&result);
-
+ }CATCH(e){THROW1(0,1,"%s",request->host.name);
+  }
   gras_os_sleep(1);
   gras_socket_close(peer); /* FIXME: it should be blocking in RL until everything is sent */
   free(request->peer.name);
   gras_os_sleep(1);
   gras_socket_close(peer); /* FIXME: it should be blocking in RL until everything is sent */
   free(request->peer.name);
index 7631d53..78b4464 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "amok/Bandwidth/bandwidth_private.h"
 #include "gras/Msg/msg_private.h" /* FIXME: This mucks with contextes to answer RPC directly */
 
 #include "amok/Bandwidth/bandwidth_private.h"
 #include "gras/Msg/msg_private.h" /* FIXME: This mucks with contextes to answer RPC directly */
+#include "xbt/ex.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(amok_bw_sat,amok_bw,"Everything concerning the SATuration part of the amok_bw module");
 
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(amok_bw_sat,amok_bw,"Everything concerning the SATuration part of the amok_bw module");
 
@@ -70,9 +71,10 @@ void amok_bw_saturate_start(const char* from_name,unsigned int from_port,
                            const char* to_name,unsigned int to_port,
                            unsigned int msg_size, double duration) {
   gras_socket_t sock;
                            const char* to_name,unsigned int to_port,
                            unsigned int msg_size, double duration) {
   gras_socket_t sock;
-
+  xbt_ex_t e;
   sat_request_t request = xbt_new(s_sat_request_t,1);
 
   sat_request_t request = xbt_new(s_sat_request_t,1);
 
+  INFO2("from_name %s // to_name %s \n",from_name,to_name); 
   sock = gras_socket_client(from_name,from_port);
 
   request->peer.name = (char*)to_name;
   sock = gras_socket_client(from_name,from_port);
 
   request->peer.name = (char*)to_name;
@@ -81,9 +83,14 @@ void amok_bw_saturate_start(const char* from_name,unsigned int from_port,
   request->duration=duration;
   request->msg_size=msg_size;
 
   request->duration=duration;
   request->msg_size=msg_size;
 
-
+ TRY{
   gras_msg_rpccall(sock,60,gras_msgtype_by_name("amok_bw_sat start"),&request, NULL);
 
   gras_msg_rpccall(sock,60,gras_msgtype_by_name("amok_bw_sat start"),&request, NULL);
 
+  }CATCH(e){
+    if (e.value==1)
+      THROW1(0,1,"%s",to_name);
+    THROW1(0,0,"%s",from_name);
+  }
   free(request);
   gras_socket_close(sock);
 }
   free(request);
   gras_socket_close(sock);
 }
@@ -92,16 +99,27 @@ void amok_bw_saturate_start(const char* from_name,unsigned int from_port,
 static int amok_bw_cb_sat_start(gras_msg_cb_ctx_t ctx, void *payload){
   sat_request_t request = *(sat_request_t*)payload;
   gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 static int amok_bw_cb_sat_start(gras_msg_cb_ctx_t ctx, void *payload){
   sat_request_t request = *(sat_request_t*)payload;
   gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_ex_t e;
 
   VERB4("Asked by %s:%d to start a saturation to %s:%d",
        gras_socket_peer_name(expeditor),gras_socket_peer_port(expeditor),
        request->peer.name,request->peer.port);
        
   gras_msg_rpcreturn(60,ctx, NULL);
 
   VERB4("Asked by %s:%d to start a saturation to %s:%d",
        gras_socket_peer_name(expeditor),gras_socket_peer_port(expeditor),
        request->peer.name,request->peer.port);
        
   gras_msg_rpcreturn(60,ctx, NULL);
+
+TRY{
   amok_bw_saturate_begin(request->peer.name,request->peer.port,
   amok_bw_saturate_begin(request->peer.name,request->peer.port,
+
                         request->msg_size, request->duration,
                         NULL,NULL);
                         request->msg_size, request->duration,
                         NULL,NULL);
+
+  }CATCH(e){
+     THROW1(0,1," can not connect %s ",((request)->peer.name));
+  }
   free(request->peer.name);
   free(request->peer.name);
+
   free(request);
   return 1;
 }
   free(request);
   return 1;
 }
@@ -124,7 +142,7 @@ void amok_bw_saturate_begin(const char* to_name,unsigned int to_port,
  
   xbt_ex_t e;
 
  
   xbt_ex_t e;
 
-  gras_socket_t peer_cmd = gras_socket_client(to_name, to_port);
+  gras_socket_t peer_cmd; //= gras_socket_client(to_name, to_port);
   gras_msg_cb_ctx_t ctx;
 
   gras_socket_t meas;
   gras_msg_cb_ctx_t ctx;
 
   gras_socket_t meas;
@@ -148,6 +166,7 @@ void amok_bw_saturate_begin(const char* to_name,unsigned int to_port,
   request->peer.name = NULL;
   request->peer.port = 0;
 
   request->peer.name = NULL;
   request->peer.port = 0;
 
+
   /* Size autodetection on need */
   if (!msg_size) {
     double bw;
   /* Size autodetection on need */
   if (!msg_size) {
     double bw;
@@ -161,6 +180,7 @@ void amok_bw_saturate_begin(const char* to_name,unsigned int to_port,
   }
    
   /* Launch the saturation */
   }
    
   /* Launch the saturation */
+
   ctx = gras_msg_rpc_async_call(peer_cmd, 60, 
                                gras_msgtype_by_name("amok_bw_sat begin"),
                                                  &request);
   ctx = gras_msg_rpc_async_call(peer_cmd, 60, 
                                gras_msgtype_by_name("amok_bw_sat begin"),
                                                  &request);
@@ -169,6 +189,7 @@ void amok_bw_saturate_begin(const char* to_name,unsigned int to_port,
   meas=gras_socket_client_ext( to_name, request->peer.port,
                               0 /*bufsize: auto*/,
                               1 /*meas: true*/);
   meas=gras_socket_client_ext( to_name, request->peer.port,
                               0 /*bufsize: auto*/,
                               1 /*meas: true*/);
+
   free(request);
 
   gras_socket_close(peer_cmd);
   free(request);
 
   gras_socket_close(peer_cmd);