We have an issue on our production logstash with http input, that http input plugin mixes url arguments from one request with body from another request.
Input config:
http{
port => 5550
codec => "line"
threads => 8
type => "http"
}
We reproduced this issue on test logstash instance with same config, and with simple Python client, which sends http POST requests.
Python client:
while True:
projects = ['project_1', 'project_2']
for project in projects:
pack = '{"event_type":"' + project + '"}\n'
requests.post(
url='http://localhost:5550/logs?project={}&type=server&status=prod'.format(project),
data=pack
)
If we send requests with 1 thread on client side, everything is ok, but with 10+ threads logstash-http-input plugin starts mixing url headers and bodies.
logstash version: 2.3.2
We have an issue on our production logstash with http input, that http input plugin mixes url arguments from one request with body from another request.
Input config:
Filter config:
We reproduced this issue on test logstash instance with same config, and with simple Python client, which sends http POST requests. Python client:
If we send requests with 1 thread on client side, everything is ok, but with 10+ threads logstash-http-input plugin starts mixing url headers and bodies.
For example, we send requests "{"event_type":"project_1"}\n" with url http://localhost:5550/logs?project=project_1&type=server&status=prod and "{"event_type":"project_2"}\n" with url http://localhost:5550/logs?project=project_2&type=server&status=prod, in normal situation we should see the following results after all logstash processing steps:
But we see the following error in stdout:
And the following wrong result(for example):
Looks like something going wrong in highload moments, when all 8 threads in http-input are busy.