fsnotify: Fix fsnotify_mark_connector race
CentOS7.5 + nginx + td-agent + in_tail plugin is able to reproduce this bug
- Install and start nginx
- Install and start td-agnet
- Install ab ( via httpd )
- Try ab against to http://localhost
-bash-4.2$ cat /etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format ltsv "vhost:$host"
"\ttime_local:$time_local"
"\thost:$remote_addr"
"\tmethod:$request_method"
"\tpath:$request_uri"
"\tversion:$server_protocol"
"\tstatus:$status"
"\tsize:$body_bytes_sent"
"\treferer:$http_referer"
"\tua:$http_user_agent"
"\trestime:$request_time"
"\tustime:$upstream_response_time";
access_log /var/log/nginx/access.log ltsv;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
-bash-4.2$ cat /etc/td-agent/td-agent.conf
####
## Output descriptions:
##
<source>
type tail
path /var/log/nginx/access.log
pos_file /var/log/td-agent/nginx-access.log.pos
tag clear
format ltsv
</source>
<match clear>
type null
</match>
while [ 1 ]; do ab -c 8 -n 100000 -k http://localhost/; done;