Print

Print


In the normal case, when a client makes a request, Finished() is called before the client disconnects:

171103 11:36:34 14217 XrootdXeq: mike.14362:29@localhost pvt IP64 login
[DEBUG] Service::Prepare():
[DEBUG]    Resource name: /ctafrontend
[DEBUG] RequestProc() constructor
[DEBUG] XrdSsiPbService::ProcessRequest(): Binding Processor to Request
[DEBUG] RequestProc::Execute()
[DEBUG] RequestProc::Finished()
[DEBUG] XrdSsiPbService::ProcessRequest(): Unbinding Processor from Request
[DEBUG] ~RequestProc() destructor
171103 11:36:35 14217 XrootdXeq: mike.14362:29@localhost disc 0:00:01

However, if the client disconnects (process is killed or the connection times out), Finished() is not called until the server has finished processing the response. Here I artifically made the response take 100 seconds to illustrate the problem:

171103 11:36:54 14075 XrootdXeq: mike.14377:27@localhost pvt IP64 login
[DEBUG] Service::Prepare():
[DEBUG]    Resource name: /ctafrontend
[DEBUG] RequestProc() constructor
[DEBUG] XrdSsiPbService::ProcessRequest(): Binding Processor to Request
[DEBUG] RequestProc::Execute()
171103 11:36:55 14217 XrootdXeq: mike.14377:27@localhost disc 0:00:01
171103 11:38:34 14075 XrootdsendResp: mike.14377:27@localhost query async resp aborted; user gone.
[DEBUG] RequestProc::Finished()
[DEBUG] XrdSsiPbService::ProcessRequest(): Unbinding Processor from Request
[DEBUG] ~RequestProc() destructor

Note that the client disconnects at 11:36:55 but the response is not aborted immediately. It runs to completion before it realises that the client is no longer present. At 11:38:34, it realises that the user is gone and then calls Finished().

In the intervening time between the client disconnect and Finished(), new client connections are refused with this error:

Unable to write /ctafrontend; address already in use

(Note that normally multiple simultaneous connections are fine, it's only after a client disconnect that new connections are refused).


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/xrootd/xrootd","title":"xrootd/xrootd","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/xrootd/xrootd"}},"updates":{"snippets":[{"icon":"DESCRIPTION","message":"[SSI] Server does not call Finished() on client disconnect (#616)"}],"action":{"name":"View Issue","url":"https://github.com/xrootd/xrootd/issues/616"}}}

Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1