[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