Print

Print


OK, I tracked this down as we have a reproducible case here. The problem s really a deadlock between file request tieout and file destruction. If a file is being closed and it so happens that the filetimer::Run() starts and calls FileStateHandler::Tick() at the moment the file is being closed, the whole thing deadlocks. It would seem hte simplest solution is to to simply do a trylock() in the Tick() method and if you can't get the lock then skip handling he timed out (it will be tried then interval if he file is still alive). Timeout can be triggered by a lot of things, socket errors is one of them. I don't see any changes in this code path but it might have changed in some related code path dealing with the FileStateHandler object lock.


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":"PERSON","message":"@abh3 in #526: OK, I tracked this down as we have a reproducible case here. The problem s really a deadlock between file request tieout and file destruction. If a file is being closed and it so happens that the filetimer::Run() starts and calls FileStateHandler::Tick() at the moment the file is being closed, the whole thing deadlocks. It would seem hte simplest solution is to to simply do a trylock() in the Tick() method and if you can't get the lock then skip handling he timed out (it will be tried then interval if he file is still alive). Timeout can be triggered by a lot of things, socket errors is one of them. I don't see any changes in this code path but it might have changed in some related code path dealing with the FileStateHandler object lock."}],"action":{"name":"View Issue","url":"https://github.com/xrootd/xrootd/issues/526#issuecomment-307798598"}}}

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