apache / apache/accumulo

Add property to switch problem reporting to log file

Open
#5,979 2 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
1.2k
Forks
487
Avg merge
4d 5h
Merged PRs (30d)
13

Description

**Is your feature request related to a problem? Please describe.**
The current implementation of [ProblemReports](https://github.com/apache/accumulo/blob/6bcb4abcdc99c644798ecfe3e9ed956da9dde6c0/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java) writes the reports back to the metadata location for the current table encountering issues.

This has an unintended problem of increasing writes to the metadata table and/or root table while the system is having issues. This can also cause additional split operations to occur on the metadata table if the underlying issue is large enough (fail to read files, call interrupted, IO interrupts, HDFS cluster failure, etc) and can lead to slowness when scanning the metadata table.

The hierarchical problem report storage model also requires all problem reports to be cleared from the metadata table before user table issues are shown on the monitor.

Deletion of these reports is also a manual operation that is currently triggered by a user through the monitor.

This error reporting feature is removed in future versions of accumulo as the downsides did not seem to be worth the feature.

**Describe the solution you'd like**
A property should be added to switch the problem reports to go to a separate log4j logger.
This would allow a secondary system to aggregate these ProblemReports without adding additional load on the metadata or root tables.

**Describe alternatives you've considered**
We could also disable the feature entirely, but I believe the ProblemReports do provide some value while the negatives are all due to their current aggregation implementation.

Contributor guide

Open the contributing guide

Research direction

Start with server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java, which currently writes reports to metadata or root-table locations. Trace how problem reports are configured and logged, then identify the relevant tests or configuration entry points. Done means a property can route reports to a separate log4j logger without adding metadata or root-table writes.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.