• 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
    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)
cmdlib.py 407 KB