utl_http.request: Calls to same server blocking other sessions?

Viewed 464

We had a job today that hanged on a utl_http.request() call... the server it called seems to have hung while generating the request, but no timeout exception occurred (the current receive timeout is the default, 60 seconds). That job waited for hours for the request to come back before we noticed and killed it.

A dozen or so other jobs (that also make the same utl_http.request call) indicated they were blocked - the blocking session was the first hung one. v$locked_object had no records, so it isn't clear why those other sessions thought the first one was blocking them. They all say "library cache load lock" for the session event.

After we killed the first session, the other jobs ran to completion (albeit with a TNS: No Listener error on the utl_http call).

Is there something about utl_http.request() that only one call to the server/address may be made from the same instance at once? (Bonus points for theories on why the timeout never kicked in for any of the sessions).

1 Answers

Somehow I cracked it!!! Try to change wallet path in utl_http.set_wallet() and recompile it. Execute the web service and it will fail this time because of invalid wallet location. Revert back the wallet path in utl_http.set_wallet() procedure and compile the code again. Execute the web service and you should get response without hanging... Good luck.....

Related