<<< Date Index >>>     <<< Thread Index >>>

Re: Threading bug due to a duplicated reference



On 2005-07-27 18:41:41 +0900, TAKAHASHI Tamotsu wrote:
> * Tue Jul 26 2005 Vincent Lefevre <vincent@xxxxxxxxxx>
> > On 2005-07-25 09:32:25 +0900, TAKAHASHI Tamotsu wrote:
> > > I don't object to you, but I want to know your idea about this:
> > > Well, my rm_dupref patch removes the _older_ one of duplicated refs.
> > > For example, mine makes a tree "a->b->c->b->d" to be "a->c->b->d".
> > 
> > I don't understand what you mean. Could you give the DAG?
> 
> Well, okay (though I don't know what DAG stands for :)

Directed acyclic graph (you could see that on FOLDOC or VERA :).
Messages can be seen as vertices of a DAG, whose edges are
message references (given by In-Reply-To and References headers).
The goal, AFAIK, is to find the "best" spanning forest (i.e. set
of trees), taking into account the missing messages.

IMHO, the order of the references shouldn't matter (or very slightly,
e.g. when there is a tie between various solutions because of missing
information or whatever, such as missing messages). Indeed, when one
replies to several messages, the references are concatenated (with or
without some clean-up).

Also, perhaps In-Reply-To could have a higher priority (the threading
model would deal with weighted graphs).

> ----------------------
> [B] Message-ID: <b@b>
> [C] Message-ID: <c@c>
>     In-Reply-To: <b@b>
> [D] References: <b@b> <c@c> <b@b>
> ----------------------

The edges of the DAG are the following:

B -> C
B -> D
C -> D

B -> D is a transitivity edge, so the resulting DAG is B -> C -> D
and the tree should be:

B
`->C
   `->D

> There are two ways to interpret D's refs header avoiding
> a loop or dupe.
> 
> ----------------------
> References: <c@c> <b@b>
> B
> |->C
> `->D (son of B)
> ----------------------
> 
> and
> 
> ----------------------
> References: <b@b> <c@c>
> B
> `->C
>    `->D (son of C)
> ----------------------
> 
> Both my (rm_dupref) patch and TLR's (s/break/continue/) patch
> implement the former.

I think this is incorrect, as the former doesn't show the relation
between C and D. The latter shows every relation, and this is the
solution obtained from the DAG.

-- 
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA