Hi Samisa,

Thanks for the fix. Will check whether anything else needs fixing too in
this regard, within the day.

Thanks,
Senaka

> Hi Cliff,
>     Thank you for your help in figuring out the cause of the problem.
>     The problem was not exactly in there, but in http sender. But your
> pointers helped to locate that.
>
>     I have now fixed this and tested on Windows and commited to svn
> head. 1.3 release should have it.
> Thanks,
> Samisa...
>
> Clifford THOMPSON wrote:
>> Hello,
>>
>> I made a mistake in my last message. Please see my inline comment for
>> the correction
>>
>> Cheers,
>> Cliff
>>
>> -----Original Message-----
>> From: Clifford THOMPSON [mailto:[EMAIL PROTECTED]
>> Sent: February 22, 2008 15:08
>> To: Apache AXIS C Developers List
>> Subject: RE: FW: Question regarding the adjustment of response timeouts
>>
>>
>>> Hello Samisa,
>>>
>>> I have been doing some tracing, and hopefully I've found some
>>>
>> information that may be useful. I have traced through my blocking
>> service call:
>>
>>>     + axis2_stub_op_MyService_MyOperation
>>>     + axis2_svc_client_send_receive_with_op_name
>>>     + axis2_op_client_execute
>>>     + axis2_op_client_two_way_send
>>>
>>> It appears that the call to "axis2_msg_ctx_get_property" returns NULL:
>>>
>>> <code>
>>>     AXIS2_EXTERN axis2_msg_ctx_t *AXIS2_CALL
>>>     axis2_op_client_two_way_send(
>>>         const axutil_env_t * env,
>>>         axis2_msg_ctx_t * msg_ctx)
>>>     {
>>>         axis2_engine_t *engine = NULL;
>>>         axis2_status_t status = AXIS2_SUCCESS;
>>>         axis2_msg_ctx_t *response = NULL;
>>>         axis2_conf_ctx_t *conf_ctx = NULL;
>>>         axis2_op_t *op = NULL;
>>>         axiom_soap_envelope_t *response_envelope = NULL;
>>>         axutil_property_t *property = NULL;
>>>         long index = -1;
>>>         axis2_bool_t wait_indefinitely = AXIS2_FALSE;
>>>
>>>         AXIS2_ENV_CHECK(env, NULL);
>>>
>>>         conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
>>>         engine = axis2_engine_create(env, conf_ctx);
>>>         if (!engine)
>>>             return NULL;
>>>         property =
>>>             axis2_msg_ctx_get_property(msg_ctx, env,
>>>
>> AXIS2_TIMEOUT_IN_SECONDS); </code>
>>
>>> And thus the next section of code never picks up the timeout value
>>>
>> since we never find the "property" for the timeout:
>>
>>> <code>
>>>         if (property)
>>>         {
>>>             axis2_char_t *value = axutil_property_get_value(property,
>>> env);
>>>             if (value)
>>>                 index = AXIS2_ATOI(value);
>>>             if (index == -1)
>>>             {
>>>                 wait_indefinitely = AXIS2_TRUE;
>>>                 index = 1;
>>>             }
>>>         }
>>> </code>
>>>
>>> which is used later in the function:
>>>
>>> <code>
>>>         else
>>>         {
>>>             while (!response_envelope && index > 0)
>>>             {
>>>                 /*wait till the response arrives */
>>>                 AXIS2_SLEEP(1);
>>>                 if (!wait_indefinitely)
>>>                     index--;
>>>                 response_envelope =
>>>                     axis2_msg_ctx_get_response_soap_envelope(msg_ctx,
>>> env);
>>>         }
>>> </code>
>>>
>>> You guys are much more familiar which the code base, so does the call
>>>
>> to "axis2_op_client_get_msg_ctx" copy the timeout information from the >
>>
>>>> "options" member of "op_client" into "msg_ctx" (the variable that is
>>>>
>> eventually passed to "axis2_msg_ctx_get_property"):
>>
>> I meant the call to "axis2_msg_ctx_set_options" not
>> "axis2_op_client_get_msg_ctx", please see the additional code in the
>> snippet below:
>>
>>
>>> <code>
>>>     AXIS2_EXTERN axis2_status_t AXIS2_CALL
>>>     axis2_op_client_execute(
>>>         axis2_op_client_t * op_client,
>>>         const axutil_env_t * env,
>>>         const axis2_bool_t block)
>>>     {
>>>         axis2_conf_ctx_t *conf_ctx = NULL;
>>>         axis2_msg_ctx_t *msg_ctx = NULL;
>>>
>>>         axis2_transport_out_desc_t *transport_out = NULL;
>>>         axis2_transport_in_desc_t *transport_in = NULL;
>>>
>>>         axis2_status_t status = AXIS2_FAILURE;
>>>         axis2_op_t *op = NULL;
>>>         axis2_char_t *msg_id = NULL;
>>>
>>>         AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
>>>
>>>         if (op_client->completed)
>>>         {
>>>             return AXIS2_FAILURE;
>>>         }
>>>
>>>         conf_ctx = axis2_svc_ctx_get_conf_ctx(op_client->svc_ctx,
>>>
>> env);
>>
>>>         msg_ctx = (axis2_msg_ctx_t *)
>>> axis2_op_client_get_msg_ctx(op_client, env,
>>>
>>> AXIS2_WSDL_MESSAGE_LABEL_OUT);
>>> </code>
>>>
>>
>> <code>
>>        if (!msg_ctx)
>>         {
>>             return AXIS2_FAILURE;
>>         }
>>
>>         axis2_msg_ctx_set_options(msg_ctx, env, op_client->options);
>> </code>
>>
>>
>>> When I traced through the call to "axis2_msg_ctx_get_property", all of
>>>
>> the hash tables stored within "msg_ctx" or its children appear to be > >
>>
>>> empty. I am not sure if this is correct or not, but I hope this all
>>>
>> helps out with the bug tracking.
>>
>>> Cheers,
>>> Cliff
>>>
>>> -----Original Message-----
>>> From: Samisa Abeysinghe [mailto:[EMAIL PROTECTED]
>>> Sent: February 20, 2008 18:06
>>> To: Apache AXIS C Developers List
>>> Subject: Re: FW: Question regarding the adjustment of response
>>>
>> timeouts
>>
>>> The current problem is that, for the normal non blocking case, the
>>>
>> implementation does not pick the user option and set it on the socket.
>>
>>> I hope the fix is straight forward.
>>>
>>> Regards,
>>> Samisa...
>>>
>>> Clifford THOMPSON wrote:
>>>
>>>> I meant 60000ms...
>>>>
>>>> -----Original Message-----
>>>> From: Clifford THOMPSON [mailto:[EMAIL PROTECTED]
>>>> Sent: February 20, 2008 13:40
>>>> To: Apache AXIS C Developers List
>>>> Subject: RE: FW: Question regarding the adjustment of response
>>>> timeouts
>>>>
>>>> Hello Senaka,
>>>>
>>>> I took a look at "axis2_http_transport.h" and noticed that the
>>>> constants, AXIS2_HTTP_DEFAULT_SO_TIMEOUT and
>>>> AXIS2_HTTP_DEFAULT_CONNECTION_TIMEOUT, both held values of 6000ms.
>>>> This coincides with the upper timeout limit our team was
>>>>
>> experiencing,
>>
>>>> so it may provide a clue to the timeout problem.
>>>>
>>>> Cheers,
>>>> Cliff
>>>>
>>>> -----Original Message-----
>>>> From: Senaka Fernando [mailto:[EMAIL PROTECTED]
>>>> Sent: February 18, 2008 11:35
>>>> To: Apache AXIS C Developers List
>>>> Subject: Re: FW: Question regarding the adjustment of response
>>>> timeouts
>>>>
>>>> Hi Cliff,
>>>>
>>>> We'll look into this before the 1.3.0 release and try to have it
>>>>
>> fixed
>>
>>>> before we release.
>>>>
>>>> Regards,
>>>> Senaka
>>>>
>>>>
>>>>
>>>>> Hello Dev Team,
>>>>>
>>>>> I presented this question with regards to using timeouts in the
>>>>> axis2-c-user forum. Dimuthu is getting similar results under Linux,
>>>>>
>>
>>
>>>>> and suggested that there may be a bug in timeout behaviour. Please
>>>>> see
>>>>>
>>>>>
>>>>
>>>>
>>>>> below for the details.
>>>>>
>>>>> Cheers,
>>>>> Cliff
>>>>>
>>>>> -----Original Message-----
>>>>> From: Dimuthu Gamage [mailto:[EMAIL PROTECTED]
>>>>> Sent: February 16, 2008 05:23
>>>>> To: Apache AXIS C User List
>>>>> Subject: Re: [AXIS2C] Question regarding the adjustment of response
>>>>>
>>
>>
>>>>> timeouts
>>>>>
>>>>> Hi,
>>>>>
>>>>> I too checked it in Linux and got the same result,
>>>>>
>>>>> Seems we are not using axis2_options_get_timeout_in_milli_seconds
>>>>> anywhere.. If this is a bug, should be fixed before the 1.3
>>>>>
>> release.
>>
>>>>> Thanks
>>>>> Dimuthu
>>>>>
>>>>> On Feb 16, 2008 1:07 AM, Clifford THOMPSON
>>>>> <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I have a question about adjusting the timeout period for web
>>>>>>
>>>>>>
>>>> services.
>>>>
>>>>
>>>>>> Our current software dictates that we can have upwards of a 300
>>>>>> second
>>>>>>
>>>>>> delay before a response is sent (we have a large amount of data
>>>>>>
>> that
>>
>>>>>> needs to be prepared before being sent). Currently, our web
>>>>>>
>> service
>>
>>>>>> component will timeout after roughly 60 sec (I'm not sure if this
>>>>>>
>> is
>>
>>>>>> the Axis API, or from the OS). I have tried using some of the
>>>>>> timeout
>>>>>>
>>>>>>
>>>>
>>>>
>>>>>> functions in the Axis2C API, but they appear to have no effect (if
>>>>>>
>> I
>>
>>>>>> set the timeout 5 secs and the server takes 10 secs to respond,
>>>>>>
>> the
>>
>>>>>> client will wait 10 secs for the response). I am assuming that I
>>>>>>
>> am
>>
>>>>>> using the API incorrectly. We are working under WinXP, and have
>>>>>>
>>>>>>
>>>>> generate portions of our code using the WSDL2C tool.
>>>>>
>>>>>
>>>>>> We have chosen to generate synchronous code using WSDL2C (so the
>>>>>> eventual call in the generate code will be to
>>>>>> "axis2_svc_client_send_receive_with_op_qname"). Here is a rough
>>>>>> paraphrase of the code that we have and how I thought the timeout
>>>>>> function should be
>>>>>> applied:
>>>>>>
>>>>>>     env  = axutil_env_create_all( "MyServiceLog.log",
>>>>>>                                   AXIS2_LOG_LEVEL_TRACE);
>>>>>>     assert(NULL != env);
>>>>>>
>>>>>>     stub = axis2_stub_create_MyService( env,
>>>>>>
>>>>>>
>> AXIS2_GETENV("AXIS2C_HOME"),
>>
>>>>>> "http://myserver.ca:8080/services/MyService";);
>>>>>>     assert(NULL != stub);
>>>>>>
>>>>>>
>>>>>>     status = axis2_options_set_timeout_in_milli_seconds(
>>>>>>                  axis2_stub_get_options( stub,
>>>>>>                                          env ),
>>>>>>                  env,
>>>>>>                  300000);
>>>>>>     assert(AXIS2_SUCCESS == status);
>>>>>>
>>>>>>     /*                                      */
>>>>>>     /* lots of interleaving non-Axis2C code */
>>>>>>     /*                                      */
>>>>>>
>>>>>>     responseNode = axis2_stub_op_MyService_MyOperation(
>>>>>>                       stub,
>>>>>>                       env,
>>>>>>                       headerNode1,
>>>>>>                       headerNode2,
>>>>>>                       bodyNode);
>>>>>>     if(NULL !=)
>>>>>>     {
>>>>>>         /* process the response */
>>>>>>     }
>>>>>>     else
>>>>>>     {
>>>>>>        /* log the response error */
>>>>>>     }
>>>>>>
>>>>>> Thank you in advance for the help.
>>>>>>
>>>>>> Cheers,
>>>>>> Cliff
>>>>>>
>>>>>>
>>>>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to