• Xavier Thompson's avatar
    slapproxy: Prefix forwarded requests with id · d3984193
    Xavier Thompson authored
    When slapproxy forwards a request to an external master it is seen as
    coming from the slapproxy and the original requester's id is lost.
    
    This means forwarded requests from different requesters can collide.
    
    e.g. two partitions request a frontend and when the second request is
    handled the external master updates the first frontend to redirect to
    the second partition instead of creating a second frontend.
    
    To avoid collisions, the id of the requester as seen in the slapproxy
    is prefixed to the instance name (partition reference) in the request:
    
    - case 1: requester is embedded partition => prefix with partition id
        e.g. 'myinstance' -> 'slappart0_myinstance'
    
    - case 2: requester is user => prefix with 'user'
        e.g. 'myinstance' -> 'user_myinstance'
    
    See merge request nexedi/slapos.core!282
    d3984193
test_slapproxy.py 83.7 KB