Skip to content

[Configuration: Resource Limits] Legacy listener safety settings are accepted but have no runtime effect #122

Closed as not planned

Description

@enteriaza

Severity: Low
Classification: Confirmed configuration-contract mismatch.

Locations

/home/runner/work/BackFiller/BackFiller/src/BackFiller/Configuration/BackFillerOptions.cs:257–276
/home/runner/work/BackFiller/BackFiller/src/BackFiller/Configuration/BackFillerRuntimeOptionsFactory.cs:168–172
/home/runner/work/BackFiller/BackFiller/src/BackFiller/Listener/NntpCacheListenerSession.cs:29,61–62,168–178
Code

C#
public int ParserAccumulationMaxBytes { get; set; } = 262144;
C#
public int AwaitingReceiptAckTimeoutSeconds { get; set; } = 30;
C#
public int MaxQueuedFoundPayloadBytes { get; set; } = 67108864;
The runtime projection includes only one of those three:

C#
Listener: new BackFillerListenerRuntimeOptions(
TimeSpan.FromSeconds(listener.TlsHandshakeTimeoutSeconds),
TimeSpan.FromSeconds(listener.IoProgressTimeoutSeconds),
listener.MaxQueuedFoundPayloadBytes,
listener.MaxActiveConnections),
The actual session uses a fixed protocol limit:

C#
private const int MaximumCommandOctets = 512;
Description

Production reference searches found:

ParserAccumulationMaxBytes is validated but not consumed by the listener.
AwaitingReceiptAckTimeoutSeconds is validated but not projected into runtime options.
MaxQueuedFoundPayloadBytes is projected but has no consuming enforcement path.
The current listener speaks NNTP, writes articles sequentially, and commits after local write completion. It does not implement the older Found/ReceiptAck exchange implied by these settings.

This is not evidence of unbounded command buffering or a missing NNTP receipt acknowledgment. The risk is operational: administrators can adjust apparently meaningful resource controls without changing behavior.

Recommendation

Deprecate or reject unsupported settings and document the actual controls. Preserve the RFC command limit and existing delivery semantics rather than introducing an acknowledgment or payload queue merely to satisfy obsolete configuration names.

Validation

Add configuration-contract tests distinguishing active settings from deprecated ones. Verify that each advertised active limit demonstrably affects runtime behavior.

Activity

  1. self-assigned this
    on Oct 16, 2026
  2. added theissue type on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions