csi: tolerate missing plugins on job delete (#12114)
If a plugin job fails before successfully fingerprinting the plugins, the plugin will not exist when we try to delete the job. Tolerate missing plugins.
This commit is contained in:
parent
246db87a74
commit
5b7b9fdafb
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
csi: Fixed a bug where purging a job with a missing plugin would fail
|
||||
```
|
|
@ -1460,7 +1460,9 @@ func (s *StateStore) deleteJobFromPlugins(index uint64, txn Txn, job *structs.Jo
|
|||
return fmt.Errorf("error getting plugin: %s, %v", x.pluginID, err)
|
||||
}
|
||||
if plug == nil {
|
||||
return fmt.Errorf("plugin missing: %s %v", x.pluginID, err)
|
||||
// plugin was never successfully registered or has been
|
||||
// GC'd out from under us
|
||||
continue
|
||||
}
|
||||
// only copy once, so we update the same plugin on each alloc
|
||||
plugins[x.pluginID] = plug.Copy()
|
||||
|
@ -1484,8 +1486,10 @@ func (s *StateStore) deleteJobFromPlugins(index uint64, txn Txn, job *structs.Jo
|
|||
}
|
||||
}
|
||||
|
||||
if err = txn.Insert("index", &IndexEntry{"csi_plugins", index}); err != nil {
|
||||
return fmt.Errorf("index update failed: %v", err)
|
||||
if len(plugins) > 0 {
|
||||
if err = txn.Insert("index", &IndexEntry{"csi_plugins", index}); err != nil {
|
||||
return fmt.Errorf("index update failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Reference in New Issue