Print

Print


Hi Andy,

Thanks ... I reinspected the XrdClFile::Close() path and now I see that having a 
delayed destruction of XrdPosixFile / XrdOucCacheIO is really the only way to 
cleanup things properly.

Matevz

On 03/17/14 22:17, Andrew Hanushevsky wrote:
> Hi Matevz,
>
> That doesn't seem, at this point, it will buy you much. If you set a flag saying
> "throw away" and close the file anyway, it doesn't get closed. It's not clear if
> you can ever close it afterwards. Even if you can, someone has to do it as you
> will leak memory unless it is successfully closed.
>
> Andy
>
> On Mon, 17 Mar 2014, Matevz Tadel wrote:
>
>> Hi Andy,
>>
>> Yes, we want to throw it away :) We have a mini-test with async read + condition
>> variable running so we'll know soon if there's any issue implanting this into
>> the proxy code.
>>
>> Matevz
>>
>>
>>
>> On 03/17/14 19:00, Andrew Hanushevsky wrote:
>>> Hi Matevz,
>>>
>>> The answer is driven by how important is the pending data? If it's important
>>> then it should be allowed to be added to the cache set even when the file is
>>> closed. If it's not important then it can be thrown away with impunity. Throwing
>>> away data here is far easier than trying to keep it. You can mark your prefetch
>>> object as dead and safely delete the file object (the prefetch object would have
>>> to delete itself eventually after it threw away the last piece of data, I
>>> assume).
>>>
>>> Otherwise, yes, we would need to add a "Delete()" method that could delay the
>>> actual destruction of the object. Note that the object would need to remove
>>> itself from the file table but otherwise delay freeing memory. Answers your
>>> question?
>>>
>>> Andy
>>>
>>> -----Original Message----- From: Matevz Tadel
>>> Sent: Monday, March 17, 2014 6:33 PM
>>> To: Andrew Hanushevsky ; xrootd-dev
>>> Subject: Re: XrdCl interrupting sync read
>>>
>>> Hi Andy,
>>>
>>> OK, I see ... then we're back to the discussion you and Alja had a week ago
>>> about XrdPosixFile destruction in caching proxy :)
>>>
>>> We can try to bypass this problem with async reads (and tell ResponseHandler
>>> object to discard the result and auto-destruct when) or you can help us to delay
>>> the destruction. Or we try both. What do you think is better?
>>>
>>> What happens now is that when we shut down X-hundred clients simultaneously,
>>> some of them take quite a long while to die -- we've already shortened this
>>> significantly by removing in-memory blocks from the write queue but there are
>>> horrible outliers in prefetch-read, too (30s) -- the problem is that many
>>> prefetching threads need to be notified at the same time that they should stop
>>> -- and they aren't so "prefetching" goes on for a long while.
>>>
>>> Matevz
>>>
>>> On 3/17/14 3:37 PM, Andrew Hanushevsky wrote:
>>>> Hi Matevz,
>>>>
>>>> The current way the new client works is that close() returns an error if there
>>>> are any outstanding operations. The way I get around that is to keep track of
>>>> the current outstanding operations and when I need to "get rid" of the file,
>>>> the
>>>> higher level "close()" returns a success and the object is placed in the
>>>> background and the real close happens when all of the outstanding operations
>>>> complete. I don't know of any way to cancel an outstanding operation.
>>>>
>>>> Andy
>>>>
>>>> -----Original Message----- From: Matevz Tadel
>>>> Sent: Monday, March 17, 2014 2:37 PM
>>>> To: Andrew Hanushevsky ; xrootd-dev
>>>> Subject: Re: XrdCl interrupting sync read
>>>>
>>>> Hi Andy,
>>>>
>>>> On 03/17/14 14:26, Andrew Hanushevsky wrote:
>>>>> Hi Matevz,
>>>>>
>>>>> All of xrootd avoids signals like the plague . The only exceptions is
>>>>> server-side async I/O where it's required for portability. Then again, of
>>>>> late,
>>>>> everyone turns that capability off. Anyway, signals aren't really needed any
>>>>> more and just produce a lot of obtuse difficult to maintain code. So, I don't
>>>>> see any way you can do this using signals but Lukasz may have a way of doing
>>>>> this otherwise, However why are you using sync reads anyway? If this is a
>>>>> problem you should be using async reads.
>>>>
>>>> No, we'll do async reads :) I know signals and thread-cancellation are a sure
>>>> road into hell.
>>>>
>>>> Then, what happens when XrdCl::Close() is called in one thread? Will current
>>>> reads fail? Or will Close() wait for dispatched transactions to complete?
>>>>
>>>> Matevz
>>>>
>>>>> Andy
>>>>>
>>>>> -----Original Message----- From: Matevz Tadel
>>>>> Sent: Monday, March 17, 2014 2:19 PM
>>>>> To: xrootd-dev
>>>>> Subject: XrdCl interrupting sync read
>>>>>
>>>>> Hi,
>>>>>
>>>>> I tried to figure out how sigs are masked and handled in xrootd -- but they
>>>>> don't seem to be used at all (or they are wrapped very well :) ) -- so
>>>>> maybe the
>>>>> whole thing below is a nono.
>>>>>
>>>>> Is it safe to signal a thread doing a synchronous XrdClFile::Read() to make it
>>>>> come back with the equivalent of EINTR? What signal should I use for that?
>>>>>
>>>>> The thread is owned by me ... so I can install signal handlers if it's needed.
>>>>>
>>>>> Cheers,
>>>>> Matevz
>>>>>
>>>>> ########################################################################
>>>>> 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
>>>>
>>>> ########################################################################
>>>> 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
>>>
>>
>> ########################################################################
>> 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
>>

########################################################################
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