Print

Print


Hi Lukasz,

You should be able to reproduce this by hand without ROOT, right?

Create a client, call ReadV with buf=NULL and one entry in the vector, and verify the return code is zero instead of the length of the request.

Within ROOT, create a TTree with one branch and one entry and read it with TTreeCache.

Brian

On Nov 30, 2010, at 2:57 AM, Lukasz Janyst wrote:

> I still had no luck in reproducing and I am reluctant to apply patches
> that fix something that I cannot see. Anyways, I will spend today
> looking only at this issue...
> 
>   Lukasz
> 
> On Tue, Nov 30, 2010 at 1:51 AM, Brian Bockelman <[log in to unmask]> wrote:
>> Hi folks,
>> 
>> Somehow, this one seems to have gotten lost in the rush for finishing 3.0.0.  This fixes the fact that ReadV gives the incorrect return code when asynchronous mode is used, leading to an occasional degradation of performance in ROOT.  We really should fix this before the ROOT release.
>> 
>> Pete - this is the latest version of the readv2 patch for tomorrow's ROOT pre-release build.
>> 
>> Brian
>> 
>> --- a/src/XrdClient/XrdClient.cc
>> +++ b/src/XrdClient/XrdClient.cc
>> @@ -769,6 +769,7 @@ kXR_int64 XrdClient::ReadV(char *buf, kXR_int64 *offsets, int *lens, int nbuf)
>>             fCounters.ReadVAsyncSubChunks++;
>>             fCounters.ReadVAsyncBytes += reqvect[startitem].len;
>>             Read_Async(reqvect[startitem].offset, reqvect[startitem].len, false);
>> +            res = reqvect[startitem].len;
>>          }
>>       } else {
>>          if (buf) {
>> 
>>