[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SRM once more
At 01:53 PM 9/26/97 -0400, Christoph Haenle wrote:
> 1.)
>It seems to me that recovery from packet loss doesn't work as it
>should if the first packet (sequence number 0) gets lost:
>
>Why don't you make it "log10(hi+1)" and leave out the "!hi ||" ?
You are correct. I will make the changes as you suggest. It will be in
the next current release within a day or so.
>2.)
>In SRMAgent::command(...)
>
>-------------------------------------------------
>[...]
> sip_->distance_ = 0.0;
>[...]
>-------------------------------------------------
>
>Initializing distance_ to 0 causes trouble when scheduling a repair request
>because the event is then scheduled _exactly_ at "now" and this causes
>trouble when the tcl-precision is somewhat <17 digits (digits are cut
>off which in turn causes the event to be scheduled in the past).
I am not sure I follow you. The code, as it is currently written, ensures
that the first SRMinfo block (pointed to by sip_) is information pertinent
to this agent's information. Therefore, the distance_ of 0.0 is correct.
Subsequent SRMinfo blocks are created as the agent finds out about peers;
hence the initial setting of distance=1.0 done by the SRMinfo constructor
is ok, as you observe later.
You might have to check yoru simulation to see why an agent schedules a
request for an object, and then immediately schedules a repair for the
loss. Clearly that ought to be a contradiction, no?
>Would be better to set distance_ to 1.0 (as is done in the
>SRMinfo-constructor).
>Hope I don't bother you but I thought it might be valuable comments.
No bother. It is nice to know that the code is being used :-)
You also pointed out in a subsequent message directly to me that the code
in Agent/SRM/Adaptive::recompute-repair-params was running into an error
statement
incorrectly.
Specifically, the following lines at the top of the method:
> # This is the very first repair this agent is doing.
> if {$D1_ != -1 || $D2_ != -1} {
> error "invalid repair parameters <$D1_, $D2_>"
> }
were problematic, and you took the lines out. You are correct in removing
the if statement. I put that check in that, because, when coding, I was
not sure how the protocol state could get to that point. Haobo
([email protected]) had convinced me to remove those lines as well very early
on, and I thought I had commented the statements out, but may not have
checked my mods in correctly. I will ensure that this gets in correctly
this time.
kannan