Print

Print


Note the AsyncResponseHandler suffers from the same issue when used like this:

  f = client.File()
  handler = AsyncResponseHandler()
  status = f.open(smallfile, OpenFlags.READ, callback=handler)
  status, response, hostlist = handler.wait()

This is because the callback is defined as:

  def __call__(self, status, response, hostlist):
    self.status = status
    self.response = response
    self.hostlist = hostlist
    self.mutex.release()

The file above may be closed in the main process any time after mutex.release() is called; however, the callback will still need to hold the GIL to exit the function. It would be quite hard to trigger in this case, however.


Reply to this email directly or view it on GitHub.



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