mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-27 20:25:55 -04:00
Merge branch '4387-lock-file-is-deleted-on-exit-even-if-lock-acquisition-failed-bind-9.18' into 'bind-9.18'
[9.18] Resolve "lock file is deleted on exit even if lock acquisition failed" See merge request isc-projects/bind9!8424
This commit is contained in:
commit
fd2e6f90a4
4 changed files with 21 additions and 10 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
6274. [bug] The 'lock-file' file was being removed when it
|
||||
shouldn't have been making it ineffective if named was
|
||||
started 3 or more times. [GL #4387]
|
||||
|
||||
6271. [bug] Fix a shutdown race in dns__catz_update_cb(). [GL #4381]
|
||||
|
||||
6267. [func] Adjust UDP timeouts used in zone maintenance. [GL #4260]
|
||||
|
|
|
|||
|
|
@ -552,17 +552,19 @@ cleanup_pidfile(void) {
|
|||
}
|
||||
|
||||
static void
|
||||
cleanup_lockfile(void) {
|
||||
cleanup_lockfile(bool unlink_lockfile) {
|
||||
if (singletonfd != -1) {
|
||||
close(singletonfd);
|
||||
singletonfd = -1;
|
||||
}
|
||||
|
||||
if (lockfile != NULL) {
|
||||
int n = unlink(lockfile);
|
||||
if (n == -1 && errno != ENOENT) {
|
||||
named_main_earlywarning("unlink '%s': failed",
|
||||
lockfile);
|
||||
if (unlink_lockfile) {
|
||||
int n = unlink(lockfile);
|
||||
if (n == -1 && errno != ENOENT) {
|
||||
named_main_earlywarning("unlink '%s': failed",
|
||||
lockfile);
|
||||
}
|
||||
}
|
||||
free(lockfile);
|
||||
lockfile = NULL;
|
||||
|
|
@ -830,7 +832,7 @@ named_os_issingleton(const char *filename) {
|
|||
if (ret == -1) {
|
||||
named_main_earlywarning("couldn't create '%s'",
|
||||
filename);
|
||||
cleanup_lockfile();
|
||||
cleanup_lockfile(false);
|
||||
return (false);
|
||||
}
|
||||
}
|
||||
|
|
@ -842,7 +844,7 @@ named_os_issingleton(const char *filename) {
|
|||
singletonfd = open(filename, O_WRONLY | O_CREAT,
|
||||
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||
if (singletonfd == -1) {
|
||||
cleanup_lockfile();
|
||||
cleanup_lockfile(false);
|
||||
return (false);
|
||||
}
|
||||
|
||||
|
|
@ -854,8 +856,7 @@ named_os_issingleton(const char *filename) {
|
|||
|
||||
/* Non-blocking (does not wait for lock) */
|
||||
if (fcntl(singletonfd, F_SETLK, &lock) == -1) {
|
||||
close(singletonfd);
|
||||
singletonfd = -1;
|
||||
cleanup_lockfile(false);
|
||||
return (false);
|
||||
}
|
||||
|
||||
|
|
@ -866,7 +867,7 @@ void
|
|||
named_os_shutdown(void) {
|
||||
closelog();
|
||||
cleanup_pidfile();
|
||||
cleanup_lockfile();
|
||||
cleanup_lockfile(true);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -81,12 +81,14 @@ status=$((status+ret))
|
|||
n=$((n+1))
|
||||
echo_i "verifying that named checks for conflicting named processes ($n)"
|
||||
ret=0
|
||||
test -f ns2/named.lock || ret=1
|
||||
testpid=$(run_named ns2 named$n.run -c named-alt2.conf -D runtime-ns2-extra-2 -X named.lock)
|
||||
test -n "$testpid" || ret=1
|
||||
retry_quiet 10 check_named_log "another named process" ns2/named$n.run || ret=1
|
||||
test -n "$testpid" && retry_quiet 10 check_pid $testpid || ret=1
|
||||
test -n "$testpid" && kill -15 $testpid > kill$n.out 2>&1 && ret=1
|
||||
test -n "$testpid" && retry_quiet 10 check_pid $testpid || ret=1
|
||||
test -f ns2/named.lock || ret=1
|
||||
if [ $ret -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status+ret))
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ Bug Fixes
|
|||
DNSSEC records, it was scheduled to be resigning. This unwanted behavior
|
||||
has been fixed. :gl:`#4350`
|
||||
|
||||
- The :any:`lock-file` file was being removed when it shouldn't
|
||||
have been making it ineffective if named was started 3 or more
|
||||
times. :gl:`#4387`
|
||||
|
||||
Known Issues
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue