Hi Cliff, Well that's not at all an issue. Actually it was Samisa who fixed it. Yeah, debugging teaches you alot.
Regards, Senaka > Hello Senaka, > > Thanks for tracking down this bug. Sorry for giving the impression of > impatience. I was using the debugging as an opportunity to learn more > about the Axis2C code base ;P > > Cheers, > Cliff > > -----Original Message----- > From: Senaka Fernando [mailto:[EMAIL PROTECTED] > Sent: February 22, 2008 21:43 > To: Apache AXIS C Developers List > Subject: RE: FW: Question regarding the adjustment of response timeouts > > Hi Cliff, > > I did track this code block. Will fix it before the end of the day. > Sorry to have you waiting for the fix. > > Regards, > Senaka > >> >> 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
