hashgraph / hedera-services

Crypto, token, consensus, file, and smart contract services for the Hedera public ledger
Apache License 2.0
280 stars 124 forks source link

Reduce MerkleDB Logging Noise #7966

Open jasperpotts opened 1 year ago

jasperpotts commented 1 year ago

Problem

When looking for exceptions in database logs they are very hard to fine because of the crazy amount of noise like:

2023-08-11 09:36:14.719 536528 INFO JASPER_DB <<jasper-db: Merging #0>> VirtualDataSourceJasperDB: [FileService.FILES] Starting Small Merge 2023-08-11 09:36:14.719 536529 INFO JASPER_DB <<jasper-db: Merging #0>> MemoryIndexDiskKeyValueStore: [FileService.FILES_internalhashes] No need to merge as 0 is less than the minimum 8 files to merge. 2023-08-11 09:36:14.719 536530 INFO JASPER_DB <<jasper-db: Merging #0>> HalfDiskHashMap: [FileService.FILES_objectkeytopath] No need to merge as 0 is less than the minimum 8 files to merge. 2023-08-11 09:36:14.719 536531 INFO JASPER_DB <<jasper-db: Merging #0>> MemoryIndexDiskKeyValueStore: [FileService.FILES_pathtohashkeyvalue] No need to merge as 0 is less than the minimum 8 files to merge.

Solution

At least for do nothing merges I don't think logging is helpful. Maybe even logging at all for small merges might not make sense any more. Or just move them from info to trace or debug levels.

Alternatives

No response

rbair23 commented 1 year ago

Thanks @jasperpotts for filing this. The noise was so bad I disabled INFO level logging from the platform in the services tests.

Our logging policy is roughly to log at the following levels for the following types of things:

These four levels are the ONLY levels that are logged by default in production.

Critically, we do not log errors to user input. For example, if a user gave us a bad transaction, we don't log that. We can track it in metrics, but we don't log it. If a node fails due diligence, we don't log it. The principle here is that a dishonest or malicious user or node must not be able to trigger a log storm on the node.