Hi all,
well, right now I am unable to see a clear reason for this. Let's
discuss it. Those values were supposed to be in general "arbitrary", in
the sense that normally it has no sense at all to modify e.g., a timeout
value. It is 60 sec, but 90 or 120 makes very little difference if you
are using the software in a plain way.
The direction I'd like to look at is a direction where one has no need
to tweak with strange parameters to have a nice xrootd experience.
The dreamable solution is that the client manages its "crucial"
parameters by itself (e.g. the cache block size or the number of
parallel streams). For instance, we were recently planning the
implementation of the multistream xfers, and we totally agreed on the
fact that the client has to calculate (and adjust) internally this
parameter with no need for intervention. Why would one want to modify a
parameter that works?
The consequence of your proposal is instead a multiplication of the
parameters, so I am a bit puzzled. Can you give some use cases where
such a functionality is mandatory? Where for mandatory I intend that a
*real* test fails (or performs poorly) with value X=default and succeeds
with value Y. Right now I am unable to wonder such a situation.
The other direction I am looking at is the reduction of the global
overhead. I will work heavily on that, since there are many aspects that
are worth an optimization.
Right now the most frequently used parameters are read from the env only
in the ctor, in order to avoid a mess of accesses to string-based hash
tables. Every time I find a parameter which is read too many times per
single transaction, I wonder if I can move it to the ctor (and loose the
possibility to change it at runtime). Asking for the ability of
generically modifying param values during the use of a single instance
of the client (or a connection) would raise a lot this overhead for sure.
Fabrizio
Derek Feichtinger wrote:
> Hi, Gerri and Fabrizio
>
>> Yes, as it is now TXNetFile allows only one set of globally-set config
>> options.
>> I remember a brief discussion we had Fabrizio and I once on this, but then
>> nothing has been done.
>>
>> As this may be relevant also for 'xrdcp', perhaps we should introduce
>> the possibility to define 'per host' rules in a config file checked by
>> XrdClient,
>> making use of the existing 'if-then' infrastructure used for server
>> directives.
>>
>> What do you think?
>
> That sounds good. But even on top of that it would be nice to be able to set
> the options per connection. Maybe the logic of my program wants to check
> fast, whether it can access certain non critical files, but still I want to
> have more stringent settings for critical files. If I use threads, the gEnv
> way would force me to introduce mutexes (by the way: what happens in the case
> of async connections, when I change the options while they are still in
> process?).
>
> Cheers,
> Derek
|