Skip to content

Appender#stop is not idempotent #1653

@ppkarwasz

Description

@ppkarwasz

Description

In Log4j 2 managers are reference counted: if you have two FileAppenders writing to the same file, there will be a single FileManager with a reference count of 2.

Calling stop() on a stopped appender always calls stop() on the underlying manager. In the situation described above it is effectively possible to stop both file appender by calling stop() twice on one of them.

This a problem, because those appenders might not even be in the same configuration or attached to the same logger context.

Configuration

Version: up to 2.20.0 and 3.0.0-alpha1

Reproduction

Call stop() multiple times on a file appender. All other appenders pointing to the same file will stop logging.

Metadata

Metadata

Assignees

Labels

appendersAffects one or more Appender pluginsbugIncorrect, unexpected, or unintended behavior of existing code

Type

No type

Projects

Status

To triage

Relationships

None yet

Development

No branches or pull requests

Issue actions