Skip to content

Commit a53c2f8

Browse files
Revert "removed lock for version command (#929)" (#932)
This reverts commit 6079bf3.
1 parent 6079bf3 commit a53c2f8

File tree

4 files changed

+32
-97
lines changed

4 files changed

+32
-97
lines changed

cni/network/network.go

Lines changed: 7 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ const (
4141
ipVersion = "4"
4242
ipamV6 = "azure-vnet-ipamv6"
4343
defaultRequestTimeout = 15 * time.Second
44-
azureCniName = "azure-vnet"
4544
)
4645

4746
// CNI Operation Types
@@ -146,6 +145,12 @@ func (plugin *netPlugin) Start(config *common.PluginConfig) error {
146145
common.LogNetworkInterfaces()
147146

148147
// Initialize network manager.
148+
err = plugin.nm.Initialize(config, rehydrateNetworkInfoOnReboot)
149+
if err != nil {
150+
log.Printf("[cni-net] Failed to initialize network manager, err:%v.", err)
151+
return err
152+
}
153+
149154
log.Printf("[cni-net] Plugin started.")
150155

151156
return nil
@@ -277,6 +282,7 @@ func (plugin *netPlugin) setCNIReportDetails(nwCfg *cni.NetworkConfig, opType st
277282
plugin.report.SubContext = fmt.Sprintf("%+v", nwCfg)
278283
plugin.report.EventMessage = msg
279284
plugin.report.BridgeDetails.NetworkMode = nwCfg.Mode
285+
plugin.report.InterfaceDetails.SecondaryCAUsedCount = plugin.nm.GetNumberOfEndpoints("", nwCfg.Name)
280286
}
281287

282288
func addNatIPV6SubnetInfo(nwCfg *cni.NetworkConfig,
@@ -295,33 +301,6 @@ func addNatIPV6SubnetInfo(nwCfg *cni.NetworkConfig,
295301
}
296302
}
297303

298-
func acquireLockForStore(config *common.PluginConfig, plugin *netPlugin) error {
299-
var err error
300-
if err = plugin.Store.Lock(true); err != nil {
301-
log.Printf("[CNI] Failed to lock store: %v. check if process running", err)
302-
if isSafe, _ := plugin.IsSafeToRemoveLock(azureCniName); isSafe {
303-
log.Printf("[CNI] Removing lock file as process holding lock exited")
304-
if err = releaseLockForStore(plugin); err != nil {
305-
log.Errorf("Failed to release lock file, err:%v.\n", err)
306-
}
307-
}
308-
}
309-
310-
return err
311-
}
312-
313-
func releaseLockForStore(plugin *netPlugin) error {
314-
if plugin.Store != nil {
315-
err := plugin.Store.Unlock(false)
316-
if err != nil {
317-
log.Printf("[cni] Failed to unlock store: %v.", err)
318-
return err
319-
}
320-
}
321-
322-
log.Printf("Released lock file")
323-
return nil
324-
}
325304
//
326305
// CNI implementation
327306
// https://github.com/containernetworking/cni/blob/master/SPEC.md
@@ -370,22 +349,6 @@ func (plugin *netPlugin) Add(args *cniSkel.CmdArgs) error {
370349
iptables.DisableIPTableLock = nwCfg.DisableIPTableLock
371350
plugin.setCNIReportDetails(nwCfg, CNI_ADD, "")
372351

373-
// acquire cni lock file
374-
// TODO: check if we need pluginconfig and if not remove it
375-
config := &common.PluginConfig{Store: plugin.Store}
376-
if err := acquireLockForStore(config, plugin); err != nil {
377-
log.Errorf("Couldn't acquire lock: %+v", err)
378-
return err
379-
}
380-
381-
defer releaseLockForStore(plugin)
382-
383-
// restore network state
384-
if err = plugin.nm.Initialize(config, rehydrateNetworkInfoOnReboot); err != nil {
385-
log.Printf("[cni-net] Failed to initialize network manager, err:%+v.", err)
386-
return err
387-
}
388-
389352
defer func() {
390353
operationTimeMs := time.Since(startTime).Milliseconds()
391354
cniMetric.Metric = aitelemetry.Metric{
@@ -811,20 +774,6 @@ func (plugin *netPlugin) Get(args *cniSkel.CmdArgs) error {
811774

812775
iptables.DisableIPTableLock = nwCfg.DisableIPTableLock
813776

814-
config := &common.PluginConfig{Store: plugin.Store}
815-
if err := acquireLockForStore(config, plugin); err != nil {
816-
log.Errorf("Couldn't acquire lock: %+v", err)
817-
return err
818-
}
819-
820-
defer releaseLockForStore(plugin)
821-
822-
// restore network state
823-
if err = plugin.nm.Initialize(config, rehydrateNetworkInfoOnReboot); err != nil {
824-
log.Printf("[cni-net] Failed to initialize network manager, err:%+v.", err)
825-
return err
826-
}
827-
828777
// Parse Pod arguments.
829778
if k8sPodName, k8sNamespace, err = plugin.getPodInfo(args.Args); err != nil {
830779
return err
@@ -910,21 +859,6 @@ func (plugin *netPlugin) Delete(args *cniSkel.CmdArgs) error {
910859

911860
log.Printf("[cni-net] Read network configuration %+v.", nwCfg)
912861

913-
// acquire cni lock file
914-
config := &common.PluginConfig{Store: plugin.Store}
915-
if err := acquireLockForStore(config, plugin); err != nil {
916-
log.Errorf("Couldn't acquire lock: %+v", err)
917-
return err
918-
}
919-
920-
defer releaseLockForStore(plugin)
921-
922-
// restore network state
923-
if err = plugin.nm.Initialize(config, rehydrateNetworkInfoOnReboot); err != nil {
924-
log.Printf("[cni-net] Failed to initialize network manager, err:%+v.", err)
925-
return err
926-
}
927-
928862
// Parse Pod arguments.
929863
if k8sPodName, k8sNamespace, err = plugin.getPodInfo(args.Args); err != nil {
930864
log.Printf("[cni-net] Failed to get POD info due to error: %v", err)
@@ -1087,21 +1021,6 @@ func (plugin *netPlugin) Update(args *cniSkel.CmdArgs) error {
10871021
iptables.DisableIPTableLock = nwCfg.DisableIPTableLock
10881022
plugin.setCNIReportDetails(nwCfg, CNI_UPDATE, "")
10891023

1090-
// acquire cni lock file
1091-
config := &common.PluginConfig{Store: plugin.Store}
1092-
if err := acquireLockForStore(config, plugin); err != nil {
1093-
log.Errorf("Couldn't acquire lock: %+v", err)
1094-
return err
1095-
}
1096-
1097-
defer releaseLockForStore(plugin)
1098-
1099-
// restore network state
1100-
if err = plugin.nm.Initialize(config, rehydrateNetworkInfoOnReboot); err != nil {
1101-
log.Printf("[cni-net] Failed to initialize network manager, err:%+v.", err)
1102-
return err
1103-
}
1104-
11051024
defer func() {
11061025
operationTimeMs := time.Since(startTime).Milliseconds()
11071026
cniMetric.Metric = aitelemetry.Metric{

cni/network/plugin/main.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ func main() {
180180
log.Printf("Failed to create network plugin, err:%v.\n", err)
181181
return
182182
}
183-
// CNI initializes store
183+
184+
// CNI Acquires lock
184185
if err = netPlugin.Plugin.InitializeKeyValueStore(&config); err != nil {
185186
log.Errorf("Failed to initialize key-value store of network plugin, err:%v.\n", err)
186187
tb := telemetry.NewTelemetryBuffer()
@@ -189,6 +190,13 @@ func main() {
189190
tb.Close()
190191
}
191192

193+
if isSafe, _ := netPlugin.Plugin.IsSafeToRemoveLock(name); isSafe {
194+
log.Printf("[CNI] Removing lock file as process holding lock exited")
195+
if errUninit := netPlugin.Plugin.UninitializeKeyValueStore(true); errUninit != nil {
196+
log.Errorf("Failed to uninitialize key-value store of network plugin, err:%v.\n", errUninit)
197+
}
198+
}
199+
192200
return
193201
}
194202

cni/plugin.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,28 @@ func (plugin *Plugin) InitializeKeyValueStore(config *common.PluginConfig) error
163163
removeLockFileAfterReboot(plugin)
164164
}
165165

166+
// Acquire store lock.
167+
if err := plugin.Store.Lock(true); err != nil {
168+
log.Printf("[cni] Failed to lock store: %v.", err)
169+
return err
170+
}
171+
166172
config.Store = plugin.Store
173+
167174
return nil
168175
}
169176

170177
// Uninitialize key-value store
171178
func (plugin *Plugin) UninitializeKeyValueStore(force bool) error {
179+
if plugin.Store != nil {
180+
err := plugin.Store.Unlock(force)
181+
if err != nil {
182+
log.Printf("[cni] Failed to unlock store: %v.", err)
183+
return err
184+
}
185+
}
172186
plugin.Store = nil
187+
173188
return nil
174189
}
175190

store/json.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,8 @@ func (kvs *jsonFileStore) Lock(block bool) error {
221221

222222
defer lockFile.Close()
223223

224-
currentPid := os.Getpid()
225-
log.Printf("Write pid %d to lockfile", currentPid)
226224
// Write the process ID for easy identification.
227-
if _, err = lockFile.WriteString(strconv.Itoa(currentPid)); err != nil {
228-
// remove lockfile
229-
log.Errorf("Write to lockfile failed:%+v", err)
230-
if errRem := os.Remove(kvs.lockFileName); errRem != nil {
231-
log.Errorf("removing lockfile failed:%+v", errRem)
232-
}
225+
if _, err = lockFile.WriteString(strconv.Itoa(os.Getpid())); err != nil {
233226
return err
234227
}
235228

0 commit comments

Comments
 (0)