Improve the way Wazuh DB cleans open databases #22155
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
It was discovered that the
wdb_pool_size
variable could contain an invalid value, which could cause an excessive number of file descriptors to be opened and thewazuh-db
daemon to use excessive memory due to an incorrect filter in the database cleaning. This was because thewdb_close
function (wherewdb_pool_size
was decremented) is not always called with a valid database pointer, which could lead to decrementing the number ofwdb_pool_size
when it was not necessary.This PR replaces the
wdb_open_count
variable withwdb_pool_size
. This new variable corresponds to the number of nodes that are stored inwdb_pool
where all open objects are stored, whether the database is already open or not.This new variable is used as a filter in the
wdb_close_old
function instead ofwdb_pool_size
. Now, every time a new node is created/deleted, this new variable is modified, so it will always correspond to the current number of databases stored in memory.Tests