Print

Print


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