• Levin Zimmermann's avatar
    lib/zodb/zstor_2zurl/NEO: support > 1 master nodes · fb620301
    Levin Zimmermann authored
    The old code raised an explicit exception when converting a NEO storage
    with > 1 master nodes into a URI. Perhaps the rationale for this exception
    was that there isn't any agreed on order of master nodes in a NEO URI,
    which means that building a URI from such a storage could potentially
    break the invariant that any client which points to the same storage
    should result in the same WCFS mountpoint.
    With levin.zimmermann/wendelin.core@6f5196fa we can now rely on
    WCFS mountpoint calculation to always return the same mountpoint even if
    the order of master node addresses differ. Therefore we can drop this
    exception and allow WCFS to support NEO clusters with more than one master.
    
    --------
    
    kirr: support for multiple masters was simply not implemented because in
    a05db040 (lib/zodb: Teach zstor_2zurl about ZEO, NEO and Demo storages)
    I though that we do not yet actually need it and wanted to have
    something minimal first.
    
    I agree that in WCFS context it is ok and makes sense to normalize zurl
    to have masters coming in particular order. But at zstor_2zurl level we
    rely on the order of masters that app.nm.getMasterList gives us. The
    normalization is separate function.
    
    /reviewed-by @kirr
    /reviewed-on !17
    fb620301
test_zodb.py 18.3 KB