diff options
author | samc24 <sam.chaturvedi24@gmail.com> | 2019-07-15 16:40:33 -0400 |
---|---|---|
committer | Sameer Chaturvedi <sam.chaturvedi24@gmail.com> | 2019-07-25 09:52:45 -0400 |
commit | d6ea4b4139c5e890acdb99cbcc303c160031a780 (patch) | |
tree | 614af8c8f49ed3b6f34ec2a30a5c7f682b0c6240 /pkg/hooks/read.go | |
parent | 7c9095ea1de363f8d76ae246575062755ac9398e (diff) | |
download | podman-d6ea4b4139c5e890acdb99cbcc303c160031a780.tar.gz podman-d6ea4b4139c5e890acdb99cbcc303c160031a780.tar.bz2 podman-d6ea4b4139c5e890acdb99cbcc303c160031a780.zip |
Improved hooks monitoring
...to work for specific edge cases with a simpler solution.
Re-reads hooks directories after any changes are detected by the watchers.
Added monitoring test for adding a different invalid hook to primary directory.
Some issues with prior code:
- ReadDir would stop when it encounters an invalid hook, rather than registering an error but continuing to read the valid hook.
- Wouldn’t account for Rename and Chmod events.
- After doing a mv of the hooks file instead of rm, it would still think the hooks file is in the directory, but it has been moved to another location.
- If a hook file was renamed, it would register the renamed file as a separate hook and not delete the original, so it would then execute the hook twice - once for the renamed file, and once for the original name which it did not delete.
Signed-off-by: samc24 <sam.chaturvedi24@gmail.com>
Diffstat (limited to 'pkg/hooks/read.go')
-rw-r--r-- | pkg/hooks/read.go | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pkg/hooks/read.go b/pkg/hooks/read.go index d3995a0be..560ff1899 100644 --- a/pkg/hooks/read.go +++ b/pkg/hooks/read.go @@ -67,7 +67,7 @@ func ReadDir(path string, extensionStages []string, hooks map[string]*current.Ho if err != nil { return err } - + res := err for _, file := range files { filePath := filepath.Join(path, file.Name()) hook, err := Read(filePath, extensionStages) @@ -80,12 +80,17 @@ func ReadDir(path string, extensionStages []string, hooks map[string]*current.Ho continue } } - return err + if res == nil { + res = err + } else { + res = errors.Wrapf(res, "%v", err) + } + continue } hooks[file.Name()] = hook logrus.Debugf("added hook %s", filePath) } - return nil + return res } func init() { |