open-consul/lib
Dhia Ayachi 8552efa955
auto-reload configuration when config files change (#12329)
* add config watcher to the config package

* add logging to watcher

* add test and refactor to add WatcherEvent.

* add all API calls and fix a bug with recreated files

* add tests for watcher

* remove the unnecessary use of context

* Add debug log and a test for file rename

* use inode to detect if the file is recreated/replaced and only listen to create events.

* tidy ups (#1535)

* tidy ups

* Add tests for inode reconcile

* fix linux vs windows syscall

* fix linux vs windows syscall

* fix windows compile error

* increase timeout

* use ctime ID

* remove remove/creation test as it's a use case that fail in linux

* fix linux/windows to use Ino/CreationTime

* fix the watcher to only overwrite current file id

* fix linter error

* fix remove/create test

* set reconcile loop to 200 Milliseconds

* fix watcher to not trigger event on remove, add more tests

* on a remove event try to add the file back to the watcher and trigger the handler if success

* fix race condition

* fix flaky test

* fix race conditions

* set level to info

* fix when file is removed and get an event for it after

* fix to trigger handler when we get a remove but re-add fail

* fix error message

* add tests for directory watch and fixes

* detect if a file is a symlink and return an error on Add

* rename Watcher to FileWatcher and remove symlink deref

* add fsnotify@v1.5.1

* fix go mod

* do not reset timer on errors, rename OS specific files

* rename New func

* events trigger on write and rename

* add missing test

* fix flaking tests

* fix flaky test

* check reconcile when removed

* delete invalid file

* fix test to create files with different mod time.

* back date file instead of sleeping

* add watching file in agent command.

* fix watcher call to use new API

* add configuration and stop watcher when server stop

* add certs as watched files

* move FileWatcher to the agent start instead of the command code

* stop watcher before replacing it

* save watched files in agent

* add add and remove interfaces to the file watcher

* fix remove to not return an error

* use `Add` and `Remove` to update certs files

* fix tests

* close events channel on the file watcher even when the context is done

* extract `NotAutoReloadableRuntimeConfig` is a separate struct

* fix linter errors

* add Ca configs and outgoing verify to the not auto reloadable config

* add some logs and fix to use background context

* add tests to auto-config reload

* remove stale test

* add tests to changes to config files

* add check to see if old cert files still trigger updates

* rename `NotAutoReloadableRuntimeConfig` to `StaticRuntimeConfig`

* fix to re add both key and cert file. Add test to cover this case.

* review suggestion

Co-authored-by: R.B. Boyer <4903+rboyer@users.noreply.github.com>

* add check to static runtime config changes

* fix test

* add changelog file

* fix review comments

* Apply suggestions from code review

Co-authored-by: R.B. Boyer <4903+rboyer@users.noreply.github.com>

* update flag description

Co-authored-by: FFMMM <FFMMM@users.noreply.github.com>

* fix compilation error

* add static runtime config support

* fix test

* fix review comments

* fix log test

* Update .changelog/12329.txt

Co-authored-by: Dan Upton <daniel@floppy.co>

* transfer tests to runtime_test.go

* fix filewatcher Replace to not deadlock.

* avoid having lingering locks

Co-authored-by: R.B. Boyer <4903+rboyer@users.noreply.github.com>

* split ReloadConfig func

* fix warning message

Co-authored-by: R.B. Boyer <4903+rboyer@users.noreply.github.com>

* convert `FileWatcher` into an interface

* fix compilation errors

* fix tests

* extract func for adding and removing files

Co-authored-by: Ashwin Venkatesh <ashwin@hashicorp.com>
Co-authored-by: R.B. Boyer <4903+rboyer@users.noreply.github.com>
Co-authored-by: FFMMM <FFMMM@users.noreply.github.com>
Co-authored-by: Daniel Upton <daniel@floppy.co>
2022-03-31 15:11:49 -04:00
..
decode lib/decode: fix hook to work with embedded squash struct 2021-09-22 13:22:16 -04:00
file bulk rewrite using this script 2022-01-20 10:46:23 -06:00
mutex lib/mutex: add mutex with TryLock and update vendor 2021-01-25 18:01:47 -05:00
retry lib/retry: allow jitter to exceed max wait. 2021-04-07 18:33:11 -04:00
routine consul: fix data race in leader CA tests 2021-07-14 18:58:15 -04:00
semaphore testing: skip slow tests with -short 2020-12-07 13:42:55 -05:00
serf Add per-agent reconnect timeouts (#8781) 2020-10-08 15:02:19 -04:00
stringslice auto-reload configuration when config files change (#12329) 2022-03-31 15:11:49 -04:00
template Agent Auto Configuration: Configuration Syntax Updates (#8003) 2020-06-16 15:03:22 -04:00
ttlcache lib/ttlcache: never decrease the expiry on update 2021-04-21 15:32:26 -04:00
cluster.go Update cluster.go 2017-10-30 16:51:28 -07:00
cluster_test.go Integer division rounding to zero for rate scaling 2017-10-30 16:46:11 -07:00
eof.go Vendor in rpc mono repo for net/rpc fork, go-msgpack, msgpackrpc. (#12311) 2022-02-14 09:45:45 -08:00
eof_test.go Vendor in rpc mono repo for net/rpc fork, go-msgpack, msgpackrpc. (#12311) 2022-02-14 09:45:45 -08:00
glob.go Add IAM Auth Method (#12583) 2022-03-31 10:18:48 -05:00
glob_test.go Add IAM Auth Method (#12583) 2022-03-31 10:18:48 -05:00
json.go Add Namespace support to the API module and the CLI commands (#6874) 2019-12-06 11:14:56 -05:00
map_walker.go Allow MapWalk to handle []interface{} elements that are []uint8 (#5800) 2019-05-07 11:40:48 -04:00
map_walker_test.go Enable gofmt simplify 2020-06-16 13:21:11 -04:00
math.go Filter wildcard gateway services to match listener protocol 2020-05-06 15:06:13 -05:00
math_test.go Filter wildcard gateway services to match listener protocol 2020-05-06 15:06:13 -05:00
path.go Adds basic support for node IDs. 2017-01-17 22:47:59 -08:00
rand.go Use a cryptographically secure seed 2016-05-02 23:52:37 -07:00
rtt.go remove golint warnings 2018-01-28 22:40:13 +04:00
rtt_test.go Replace goe/verify.Values with testify/require.Equal (#7993) 2020-06-02 12:41:25 -04:00
stop_context.go fix typos reported by golangci-lint:misspell (#5434) 2019-03-06 11:13:28 -06:00
stop_context_test.go Add test to ensure the StopChannelContext works properly 2020-06-24 12:34:57 -04:00
telemetry.go remove Telemetry.MergeDefaults (#12606) 2022-03-24 10:37:04 -07:00
translate.go config: use the new HookTranslateKeys instead of lib.TranslateKeys 2020-05-27 16:24:47 -04:00
translate_test.go Make a few config entry endpoints return 404s and allow for snake_case and lowercase key names. (#5748) 2019-04-30 18:19:19 -04:00
useragent.go Add a helper for generating Consul's user-agent string 2018-05-25 15:50:18 -04:00
useragent_test.go Add a helper for generating Consul's user-agent string 2018-05-25 15:50:18 -04:00
uuid.go New ACLs (#4791) 2018-10-19 12:04:07 -04:00