bind issue: copying-complex-loops

Julian Reschke wrote:
> ...
> 1) copying-complex-loops 
> (<http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-issues.html#issue.copying-complex-loops>) 
> ...

This issue was raised by Robert Sparks during IESG review 
(<https://datatracker.ietf.org/idtracker/ballot/1025/>):

-- snip --

The document provides some discussion of the ramifications of simple 
loops, but its not immediately obvious that the recommendations for 
handling them are sufficient for dealing with more complex loops. Are 
there additional issues introduced when each added level of depth adds 
an exponentially growing number of elements?

(view in fixed width)
         +---------+
         | root    |
         |         |
         |  start  |
         +---------+
              |
              v
         +---------+          +---------+
   +---->| C1      |          | C2      |<---+
   |  +->|         |          |         |<-+ |
   |  |  | a    b  |          | a    b  |  | |
   |  |  +---------+          +---------+  | |
   |  |    |    |               |    |     | |
   |  |    |    |          +----+    |     | |
   |  |    |    |          |         |     | |
   |  |    |    +----------c---+     |     | |
   |  |    |               |   |     |     | |
   |  |    |    +----------+   |     |     | |
   |  |    v    v              v     v     | |
   |  |  +---------+          +---------+  | |
   |  |  | C3      |          | C4      |  | |
   |  |  |         |          |         |  | |
   |  |  | a    b  |          | a    b  |  | |
   |  |  +---------+          +---------+  | |
   |  |    |    |               |    |     | |
   |  +----+    |          +----+    +-----+ |
   |            |          |                 |
   |            +----------c-----------------+
   |                       |
   +-----------------------+

-- snip --

We (the authors) have discussed this, and note that copying complex 
loops works exactly like copying simple loops, and thus adding another 
example isn't necessary.

That being said, we have added an additional explanation, and a short 
statement about complex loops:

-- snip --
2.3.1.  Example: COPY with 'Depth: infinity' in Presence of Bind Loops

    As an example of how COPY with Depth infinity would work in the
    presence of bindings, consider the following collection:

                  +------------------+
                  | Root Collection  |
                  |  bindings:       |
                  |  CollX           |
                  +------------------+
                      |
                      |
                  +-------------------------------+
                  | Collection C1                 |<-------+
                  | bindings:                     |        |
                  | x.gif      CollY              |        |
                  +-------------------------------+        |
                      |            \        (creates loop) |
                      |             \                      |
                  +-------------+   +------------------+   |
                  | Resource R1 |   | Collection C2    |   |
                  +-------------+   | bindings:        |   |
                                    | y.gif     CollZ  |   |
                                    +------------------+   |
                                        |         |        |
                                        |         +--------+
                                        |
                                    +-------------+
                                    | Resource R2 |
                                    +-------------+

    If a COPY with Depth infinity is submitted to /CollX, with
    destination of /CollA, the outcome of the copy operation is that a
                                                                     *
    copy of the tree is replicated to the target /CollA:
    ***************************************************

                 +------------------+
                 | Root Collection  |
                 |  bindings:       |
                 |  CollX     CollA |
                 +------------------+
                    |           |
                    |           +---------------------------+
                    |                                       |
                 +-------------------+                      |
                 | Collection C1     |<------------------+  |
                 | bindings:         |                   |  |
                 | x.gif      CollY  |                   |  |
                 +-------------------+                   |  |
                    |            \        (creates loop) |  |
                    |             \                      |  |
                 +-------------+   +-----------------+   |  |
                 | Resource R1 |   | Collection C2   |   |  |
                 +-------------+   | bindings:       |   |  |
                                   | y.gif     CollZ |   |  |
                                   +-----------------+   |  |
                                       |         |       |  |
                                       |         +-------+  |
                                       |                    |
                                   +-------------+          |
                                   | Resource R2 |          |
                                   +-------------+          |
                                                            |
                            +-------------------------------+
                            |
                 +-------------------+
                 | Collection C3     |<------------------+
                 | bindings:         |                   |
                 | x.gif      CollY  |                   |
                 +-------------------+                   |
                    |            \        (creates loop) |
                    |             \                      |
                 +-------------+   +-----------------+   |
                 | Resource R3 |   | Collection C4   |   |
                 +-------------+   | bindings:       |   |
                                   | y.gif     CollZ |   |
                                   +-----------------+   |
                                       |         |       |
                                       |         +-------+
                                       |
                                   +-------------+
                                   | Resource R4 |
                                   +-------------+


    Note that the same would apply for more complex loops.
    ******************************************************
-- snip --

(new bits marked with "*" characters).

We hope that this addresses this comment.

Note a new draft has not yet been submitted, for now the changes can be 
seen in context at 
<http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-latest.html#rfc.issue.copying-complex-loops> 
and 
<http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-latest-from-previous.diff.html>.

Best regards, Julian

Received on Sunday, 13 December 2009 15:31:31 UTC