Fix a bug concerning TCP port release
authorDimitris Aragiorgis <dimara@grnet.gr>
Tue, 13 Mar 2012 14:48:58 +0000 (16:48 +0200)
committerIustin Pop <iustin@google.com>
Thu, 29 Mar 2012 15:28:56 +0000 (17:28 +0200)
commit3b3b1bca566a005acd622a5b6e49528e5e3dbe85
tree676980728f278342951e51993d9f749967004d22
parent6977943c737cf0358d60ae544d66945a9d445de0
Fix a bug concerning TCP port release

Commit f396ad8 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: Dimitris Aragiorgis <dimara@grnet.gr>
[iustin@google.com: small comments adjustements]
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
lib/cmdlib.py
lib/config.py