Re: Comments on bind-08

Jim Whitehead wrote:
>  
> 
>>REBIND /CollW HTTP/1.1
>>If: <http://example.com/CollW/CollY/CollZ> (<L3>) 
>><http://example.com/CollW/CollX> (<L2>)
>>Overwrite: T
>>
>><rebind xmlns="DAV:">
>>   <segment>CollX</segment>
>>   <href>/CollW/CollY/CollZ</href>
>></rebind>
>>
>>Reason: we need to supply both lock tokens as we're removing 
>>a binding 
>>to C3 that is protected by the lock L3, and we're removing the target 
>>binding /CollW/CollY which is protected by the lock L2.
> 
> 
> This doesn't sound right to me. I'd say that we're removing the binding
> C3:(CollZ->C1), and hence we need the lock token L3. We're then creating the
> binding C3:(CollZ->C2), which requires the lock tokens L3 and L2, since C3's
> state is being modified (hence L3), and C2 is the destination (hence L2).
> I'm pretty confident of all except the final statement.

I missed the bind loop... This causes L2 and L3 to protect overlapping 
sets of URIs, so they must be shared locks, correct?


>>we're removing the target 
>>binding /CollW/CollY which is protected by the lock L2.
> 
> 
> Isn't binding /CollW/CollY/ -- that is, C1:(CollY->C3) -- covered by lock
> L3?

I guess we should stick with diagrams until we agree on the operation 
we're performing...:

Before:

+------------------+
| Root Collection  |
|  bindings:       |
|  CollW           |
+------------------+
     |
     |
     |
+-------------------------------+
| Collection C1                 |<--------+
| bindings:                     |         |
| CollX               CollY     |         |
+-------------------------------+         |
     |                  |                  |
     |                  |   (creates loop) |
     |                  |                  |
+-----------------+  +------------------+ |
| Collection C2   |  | Collection C3    | |
| LOCKED infinity |  | LOCKED infinity  | |
| bindings:       |  | bindings:        | |
|  {none}         |  | y.gif     CollZ  | |
+-----------------+  +------------------+ |
                       |            |      |
                       |            +------+
                       |
                   +---------------------------+
                   | Resource R2               |
                   | (lock inhereited from C3) |
                   +---------------------------+

After:

+------------------+
| Root Collection  |
|  bindings:       |
|  CollW           |
+------------------+
     |
     |
     |
+-------------------------------+
| Collection C1                 |
| bindings:                     |
| CollX               CollY     |
+-------------------------------+
     | ^                |
     +-+                |
                        |
+-----------------+  +------------------+
| Collection C2   |  | Collection C3    |
|                 | LOCKED infinity  |
| bindings:       |  | bindings:        |
|  {none}         |  | y.gif            |
+-----------------+  +------------------+
                       |
                       |
                       |
                   +---------------------------+
                   | Resource R2               |
                   | (lock inhereited from C3) |
                   +---------------------------+


So C2 doesn't have any bindings in scope anymore (and thus no lock), and 
C1's new binding CollX identifies C1 itself, creating a new bind loop.

I have the nagging feeling that this wasn't what you intended to do :-)

Best regards, Julian


-- 
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760

Received on Thursday, 2 December 2004 22:27:52 UTC