浏览代码

Merge pull request #1428 from aboch/sto

Cleanup on error in ProgramExternalConnectivity
Madhu Venugopal 9 年之前
父节点
当前提交
e174a7c9f2
共有 1 个文件被更改,包括 10 次插入1 次删除
  1. 10 1
      libnetwork/drivers/bridge/bridge.go

+ 10 - 1
libnetwork/drivers/bridge/bridge.go

@@ -1243,8 +1243,17 @@ func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string
 		return err
 	}
 
+	defer func() {
+		if err != nil {
+			if e := network.releasePorts(endpoint); e != nil {
+				logrus.Errorf("Failed to release ports allocated for the bridge endpoint %s on failure %v because of %v",
+					eid, err, e)
+			}
+			endpoint.portMapping = nil
+		}
+	}()
+
 	if err = d.storeUpdate(endpoint); err != nil {
-		endpoint.portMapping = nil
 		return fmt.Errorf("failed to update bridge endpoint %s to store: %v", endpoint.id[0:7], err)
 	}