diff --git a/README.md b/README.md index 844625701..317fdb762 100755 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ For previous versions, please read: ## V3 changes -* v3.0, 2020-03-12, For [#1635][bug #1635], inotify watch ConfigMap for reload. 3.0.131 +* v3.0, 2020-03-12, For [#1635][bug #1635], inotify watch ConfigMap for reload. 3.0.134 * v3.0, 2020-03-12, For [#1635][bug #1635], support auto reaload config by inotify. 3.0.129 * v3.0, 2020-03-12, For [#1630][bug #1630], disable cache for stream changing, and drop dup header. 3.0.128 * v3.0, 2020-03-12, For [#1594][bug #1594], detect and disable daemon for docker. 3.0.127 diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index ee4c13290..39521fbc1 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -466,7 +466,6 @@ SrsInotifyWorker::SrsInotifyWorker(SrsServer* s) server = s; trd = new SrsSTCoroutine("inotify", this); inotify_fd = NULL; - watch_conf = watch_k8s = 0; } SrsInotifyWorker::~SrsInotifyWorker() @@ -539,25 +538,12 @@ srs_error_t SrsInotifyWorker::start() // Watch the config directory events. string config_dir = srs_path_dirname(_srs_config->config()); - if (true) { - uint32_t mask = IN_ALL_EVENTS; - if ((watch_conf = ::inotify_add_watch(fd, config_dir.c_str(), mask)) < 0) { - return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, watch=%d, mask=%#x", - config_dir.c_str(), fd, watch_conf, mask); - } - srs_trace("auto reload watching fd=%d, watch=%d, file=%s", fd, watch_conf, config_dir.c_str()); - } - - // Watch k8s sub directory. - string k8s_file = config_dir + "/..data"; - if (srs_path_exists(k8s_file)) { - uint32_t mask = IN_ALL_EVENTS; - if ((watch_k8s = ::inotify_add_watch(fd, k8s_file.c_str(), mask)) < 0) { - return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, watch=%d, mask=%#x", - k8s_file.c_str(), fd, watch_k8s, mask); - } - srs_trace("auto reload watching fd=%d, watch=%d, file=%s", fd, watch_k8s, k8s_file.c_str()); + uint32_t mask = IN_MODIFY | IN_CREATE | IN_MOVED_TO; int watch_conf = 0; + if ((watch_conf = ::inotify_add_watch(fd, config_dir.c_str(), mask)) < 0) { + return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, watch=%d, mask=%#x", + config_dir.c_str(), fd, watch_conf, mask); } + srs_trace("auto reload watching fd=%d, watch=%d, file=%s", fd, watch_conf, config_dir.c_str()); if ((err = trd->start()) != srs_success) { return srs_error_wrap(err, "inotify"); @@ -590,21 +576,21 @@ srs_error_t SrsInotifyWorker::cycle() for (char* ptr = buf; ptr < buf + nn; ptr += sizeof(inotify_event) + ie->len) { ie = (inotify_event*)ptr; - //if (!ie->len || !ie->name) { - // continue; - //} - // - //string name = ie->name; - //if ((name == k8s_file || name == config_file) && ie->mask & (IN_MODIFY|IN_CREATE)) { - // do_reload = true; - //} + if (!ie->len || !ie->name) { + continue; + } + + string name = ie->name; + if ((name == k8s_file || name == config_file) && ie->mask & (IN_MODIFY|IN_CREATE|IN_MOVED_TO)) { + do_reload = true; + } srs_trace("inotify event wd=%d, mask=%#x, len=%d, name=%s, reload=%d", ie->wd, ie->mask, ie->len, ie->name, do_reload); } // Notify server to do reload. if (do_reload && srs_path_exists(config_path)) { - //server->on_signal(SRS_SIGNAL_RELOAD); + server->on_signal(SRS_SIGNAL_RELOAD); } srs_usleep(3000 * SRS_UTIME_MILLISECONDS); diff --git a/trunk/src/app/srs_app_server.hpp b/trunk/src/app/srs_app_server.hpp index af09d2fbc..baeb7f4c5 100644 --- a/trunk/src/app/srs_app_server.hpp +++ b/trunk/src/app/srs_app_server.hpp @@ -192,8 +192,6 @@ private: SrsServer* server; SrsCoroutine* trd; srs_netfd_t inotify_fd; - int watch_conf; - int watch_k8s; public: SrsInotifyWorker(SrsServer* s); virtual ~SrsInotifyWorker(); diff --git a/trunk/src/core/srs_core_version3.hpp b/trunk/src/core/srs_core_version3.hpp index 4c22659a1..5ff02aa5a 100644 --- a/trunk/src/core/srs_core_version3.hpp +++ b/trunk/src/core/srs_core_version3.hpp @@ -24,6 +24,6 @@ #ifndef SRS_CORE_VERSION3_HPP #define SRS_CORE_VERSION3_HPP -#define SRS_VERSION3_REVISION 133 +#define SRS_VERSION3_REVISION 134 #endif