[meta] Flakey bundled plugins from #logstash-plugin-ci
Author: donoghucCreated Aug 21, 2026Updated Sep 17, 2026
Flaky test analysis — logstash-plugins scheduled CI failures
Source: oblt-robot-ci Slack failure notifications. Investigation via gh CLI (read-only)
against each run's --log-failed output and job matrix. Date of analysis: 2026-08-20.
Method
For each run the failed-job log was downloaded and the RSpec summary, failing example name, and error signature extracted. The job matrix was inspected to see whether the failure was isolated to a single stack/branch cell (a strong flaky signal) or reproduced across all cells.
Classification key
- Test race — intermittent, timing-dependent assertion or socket/thread race in the spec.
- Concurrency — thread-safety defect (unsynchronized shared state) crashing a worker thread.
- Hang/timeout — job killed by the 60-minute step timeout; test deadlocks/hangs.
- Infra — CI environment failure (Docker image pull i/o timeout, missing DRA build, setup step); not a plugin/test bug.
Summary
| Plugin | Runs (IDs) | Failing test / step | Signature | Verdict | Assignee | PR | Merged |
|---|---|---|---|---|---|---|---|
| logstash-output-tcp | 31783808676, 32009100050 | spec/outputs/tcp_spec.rb:194 register |
register raises ConfigurationError; ECONNREFUSED on client connect |
Flaky — test race | @andsel | https://github.com/logstash-plugins/logstash-output-tcp/pull/73 | ✅ |
| logstash-integration-snmp | 31783846781, 32009105537, 32347392451 | Setup / install step | Install failed with an unexpected code: 1 (Docker) |
Flaky — infra | @andsel | https://github.com/logstash-plugins/logstash-integration-snmp/pull/98 | ✅ |
| logstash-input-elasticsearch | 31784088299 | Setup / image pull | docker.elastic.co … i/o timeout (ES 9.5.1) |
Flaky — infra | @andsel | NO FIX | spurious |
| logstash-output-elasticsearch | 31784049577, 31873619940, 32347652832 | Integration specs (index template / bulk) | Connection refused … port 9200 — ES not ready |
Flaky — infra/env | @andsel | https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1285 | ✅ |
| logstash-input-tcp | 31784048596, 32114939230, 32231316548 | Run tests step | timed out after 60 minutes; connect-refused retry loop |
Flaky — hang/timeout | @andsel | issue PR | ✅ |
| logstash-input-ganglia | 31873726335, 31935726847, 32115237611 | spec/inputs/ganglia_spec.rb:61/73 |
UDP "should receive the correct data/value/name" | Flaky — test race | @andsel | issue PR | |
| logstash-filter-translate | 31873735909, 31935728649, 32115232167 | spec/filters/scheduling_spec.rb:197 |
reload "expected 11, got 1" | Flaky — test race | @andsel | https://github.com/logstash-plugins/logstash-filter-translate/pull/117 | ✅ |
| logstash-mixin-scheduler | 31873773968, 31935751921, 32009785840 | Run tests step | timed out after 60 minutes |
Flaky — hang/timeout | @andsel | issue | |
| logstash-output-http | 31935473675 | spec/outputs/http_spec.rb:496 |
"keeps retrying due a protocol exception" | Flaky — test race | @andsel | investigation PR issue https://github.com/logstash-plugins/logstash-output-http/pull/165 | ✅ |
| logstash-input-file | 31935589000, 32114901771 | spec/inputs/file_read_spec.rb:345 |
"cleans up sincedb entry" | Flaky — test race | @andsel | issue PR | ✅ |
| logstash-input-elastic_serverless_forwarder | 31935741498 | SSL client-auth cert-rejection examples | intermittent bad_certificate/certificate_required |
Flaky — test race (TLS) | @andsel | issue PR | ✅ |
| logstash-output-lumberjack | 32009744611 | Run tests step | 0 failures but exit 1; server thread RuntimeError: crashed |
Flaky — thread exception leak | @donoghuc | https://github.com/logstash-plugins/logstash-output-lumberjack/pull/37 | ✅ |
| logstash-integration-kafka | 32009180665, 32409673361 | spec/integration/outputs/kafka_spec.rb:177 |
"distribute events to all partitions"; Unable to poll Kafka consumer + Fatal assertion |
Flaky — test race | @andsel | issue PR | ✅ |
| logstash-input-beats | 32009491400 | Run tests step | 0 failures but exit 1; Zlib::GzipFile::Error: Unexpected end of ZLIB input stream |
Flaky — test race | @andsel | https://github.com/logstash-plugins/logstash-input-beats/pull/578 | ✅ |
| logstash-input-redis | 32114916361 | spec/inputs/redis_spec.rb:35 |
"should read events from a list"; events[1000] nil → NoMethodError |
Flaky — test race | @andsel | https://github.com/logstash-plugins/logstash-input-redis/pull/106 | ✅ |
| logstash-input-http_poller | 32115257090 | Setup test environment | single cell failed in 9s, 15 cells passed | Flaky — infra/setup | |||
| logstash-codec-multiline | 32231288604 | spec/codecs/identity_map_codec_spec.rb |
ConcurrencyError: … unsynchronized modifications |
Flaky — concurrency | @andsel | https://github.com/logstash-plugins/logstash-codec-multiline/pull/79 | ✅ |
| logstash-input-http | 32347870269 | Setup / image pull | docker.elastic.co … i/o timeout (logstash 8.19.20) |
Flaky — infra |
All 18 plugins are flaky; none show a deterministic, reproducible product bug. They split into three buckets: test races/concurrency (11), hang/timeout (2), and CI infra (5).
Per-plugin detail
logstash-output-tcp — flaky (test race)
- Runs: 31783808676 (Stack 8.current), 32009100050 (Stack 9.previous snapshot).
- Only one matrix cell failed; every other stack/branch passed the same commit.
36 examples, 1 failure. Failing example atspec/outputs/tcp_spec.rb:194:expect { subject.register }.to_not raise_error→got LogStash::ConfigurationError.- Also
Errno::ECONNREFUSEDconnecting tolocalhost:1000fromtcp_spec.rb:54. - Signature is a register/SSL-setup + client-connect race in the spec harness, not a code defect.
logstash-integration-snmp — flaky (infra)
- Runs: 31783846781 (unit), 32009105537 (integration), 32347392451 (integration).
- No RSpec failures. Fails at environment setup with
Install failed with an unexpected code: 1. - Docker/DRA image acquisition failure — CI infrastructure, not a test bug.
logstash-input-elasticsearch — flaky (infra)
- Run: 31784088299.
failed to do request: Head "https://docker.elastic.co/v2/elasticsearch/elasticsearch/manifests/9.5.1": dial tcp … i/o timeout.- Image-pull timeout during setup. Infra.
logstash-output-elasticsearch — flaky (infra/env)
- Runs: 31784049577, 31873619940, 32347652832 (all integration).
136 examples, 1–2 failures. Repeatedcurl: (7) Failed to connect to elasticsearch port 9200: Connection refused.- The ES container is not ready/healthy when the integration specs run — environment timing, not plugin logic.
logstash-input-tcp — flaky (hang/timeout)
- Runs: 31784048596 (main snapshot), 32114939230 (9.previous), 32231316548 (9.previous).
The action 'Run tests' has timed out after 60 minutes.- Preceded by
Connection refused - connect(2) for "127.0.0.1" port …retry loops; a spec deadlocks/hangs on a socket, never completing.
logstash-input-ganglia — flaky (test race)
- Runs: 31873726335, 31935726847, 32115237611.
7 examples, 1 failure, and the failing example varies between cells:ganglia_spec.rb:61"should receive the correct data",:73"should receive the value", and "should receive the name".- UDP receive-timing race: the assertion runs before the datagram is processed. The varying failing example across cells confirms non-determinism.
logstash-filter-translate — flaky (test race)
- Runs: 31873735909, 31935728649, 32115232167.
55 examples, 1 failureatspec/filters/scheduling_spec.rb:197— "scheduled reloading merge uses the merged dictionary after reload":expected: "11", got: "1".- The assertion samples the dictionary before the scheduled reload thread has merged the update — scheduler timing race.
logstash-mixin-scheduler — flaky (hang/timeout)
- Runs: 31873773968, 31935751921, 32009785840.
The action 'Run tests' has timed out after 60 minutes.A scheduler spec hangs and never returns.
logstash-output-http — flaky (test race)
- Run: 31935473675.
264 examples, 1 failureatspec/outputs/http_spec.rb:496— "with supported_protocols set to (disabled) 1.1 keeps retrying due a protocol exception".- Retry-count/timing expectation that depends on how many retries elapse in a fixed window — race.
logstash-input-file — flaky (test race)
- Runs: 31935589000, 32114901771.
143 examples, 1 failureatspec/inputs/file_read_spec.rb:345— "delete on complete with sincedb cleanup enabled cleans up sincedb entry".- Filesystem/sincedb-flush timing race between the reader thread and the assertion.
logstash-input-elastic_serverless_forwarder — flaky (test race, TLS)
- Run: 31935741498.
36 examples, 1 failure, 2 pending. Failing examples rotate among the SSL client-authentication cert-rejection cases (ssl_client_authentication => required/optional, self-signed / mismatched SAN,ssl_verification_mode => full) expecting abad_certificate/certificate_requiredrejection.- TLS handshake-timing race: the rejection sometimes surfaces as a different/absent error than asserted.
logstash-output-lumberjack — flaky (thread exception leak)
- Run: 32009744611.
- RSpec reports
2 examples, 0 failuresbut the job exits1. - Lumberjack server threads terminate with
RuntimeError: crashed/Whoa we shouldn't get this frame:(jls-lumberjack … server.rb:70). These are deliberately-injected failures inlumberjack_spec.rb, but withreport_on_exceptionthe thread crash escapes and forces a non-zero process exit — an unclean-teardown flake, not an assertion failure.
logstash-integration-kafka — flaky (test race)
- Runs: 32009180665 (main), 32409673361 (11.x).
44 examples, 1 failureatspec/integration/outputs/kafka_spec.rb:177— "when using multi partition topic should distribute events to all partitions".Unable to poll Kafka consumerandException in thread "kafka-input-worker-test-0" java.lang.AssertionError: Fatal assertion— broker/partition-assignment timing race; partition distribution not yet balanced when asserted.
logstash-input-beats — flaky (test race)
- Run: 32009491400.
- Both cells report
262 examples, 0 failures, yet the job is red. Zlib::GzipFile::Error: Unexpected end of ZLIB input stream— a compressed-payload spec crashed on a truncated/incomplete stream (network/timing), aborting the process after the summary.
logstash-input-redis — flaky (test race)
- Run: 32114916361.
6 examples, 1 failureatspec/inputs/redis_spec.rb:35— "should read events from a list":expect(events[1000].get('sequence')).to eq(1000)→NoMethodError(events[1000]is nil).- Not all 1001 events were delivered before the assertion; also
IOError: closed streamduring teardown. Data-delivery timing race.
logstash-input-http_poller — flaky (infra/setup)
- Run: 32115257090.
- Only
Stack 9.current(5.x branch) failed, atSetup test environmentafter 9s; the other 15 matrix cells passed. Environment-setup infra flake.
logstash-codec-multiline — flaky (concurrency)
- Run: 32231288604.
- Exit code 1 with
ConcurrencyError: Detected invalid array contents due to unsynchronized modifications with concurrent usersfrom theIdentityMapCodec#map_cleanupthread (spec/codecs/identity_map_codec_spec.rb:134). - Genuine thread-safety defect in the identity-map cleanup path exercised by concurrent spec threads; manifests intermittently.
logstash-input-http — flaky (infra)
- Run: 32347870269.
docker.elastic.co/logstash/logstash:8.19.20 … Head … i/o timeout. Image-pull timeout during setup. Infra.
Notes
- The five infra cases (snmp, input-elasticsearch, output-elasticsearch, http_poller, input-http) are Docker image-pull / container-readiness / setup timeouts and are not fixable in plugin code; they recur across many repos and point at registry/runner flakiness.
- The hang/timeout cases (input-tcp, mixin-scheduler) waste a full 60-minute runner each; worth prioritising as they are the most expensive.
logstash-codec-multiline'sConcurrencyErroris the one signature that reflects a real (thread-safety) bug rather than pure test timing, even though it surfaces intermittently.
Source: elastic/logstash