• Dimitris Aragiorgis's avatar
    Fix a bug concerning TCP port release · 2522b7c4
    Dimitris Aragiorgis authored
    Commit f396ad8c
    
     returns the TCP port used by DRBD disk back to the
    TCP/UDP port pool using AddTcpUdpPort().
    
    However, AddTcpUdpPort() writes the config on every invocation,
    using _WriteConfig(). This causes two problems:
    
     * it causes critical errors logged by VerifyConfig(), after the DRBD
       disk removal, and until the actual instance removal.
     * if the code following AddTcpUdpPort() fails, the port is already
       returned back the pool, which causes the port to have duplicates
       (inconsistent config).
    
    AddTcpUdpPort() is invoked in three cases:
    
     * during InstanceRemove() through _RemoveDisks().
     * during InstanceSetParams() in case of disk removal.
     * during InstanceSetParams() through _ConvertDrbdToPlain().
    
    This commit fixes the problem by removing the _WriteConfig() call from
    AddTcpUdpPort(), delegate it to Update() via the
    TemporaryReservationManager and ensure AddTcpUdpPort() precedes
    Update().
    Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
    [iustin@google.com: small comments adjustements]
    Signed-off-by: default avatarIustin Pop <iustin@google.com>
    Reviewed-by: default avatarIustin Pop <iustin@google.com>
    (cherry picked from commit 3b3b1bca)
    2522b7c4
cmdlib.py 407 KB