From ecb4fe80d9df1c421080a7145ce565ac22f935ed Mon Sep 17 00:00:00 2001 From: santostelmo Date: Wed, 18 Feb 2026 08:55:10 +0100 Subject: [PATCH 1/5] [18.0][ADD] database_autovacuum_tuning --- database_autovacuum_tuning/README.rst | 118 +++++ database_autovacuum_tuning/__init__.py | 1 + database_autovacuum_tuning/__manifest__.py | 24 + .../data/config_parameter.xml | 18 + database_autovacuum_tuning/data/ir_cron.xml | 13 + database_autovacuum_tuning/models/__init__.py | 2 + .../models/database_autovacuum_tuning.py | 85 ++++ .../models/res_config_settings.py | 14 + database_autovacuum_tuning/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 12 + database_autovacuum_tuning/readme/USAGE.md | 20 + .../security/ir.model.access.csv | 2 + .../static/description/index.html | 466 ++++++++++++++++++ database_autovacuum_tuning/tests/__init__.py | 1 + .../tests/test_database_autovacuum_tunning.py | 36 ++ .../database_autovacuum_tuning_views.xml | 49 ++ .../views/res_config_settings_views.xml | 24 + 18 files changed, 890 insertions(+) create mode 100644 database_autovacuum_tuning/README.rst create mode 100644 database_autovacuum_tuning/__init__.py create mode 100644 database_autovacuum_tuning/__manifest__.py create mode 100644 database_autovacuum_tuning/data/config_parameter.xml create mode 100644 database_autovacuum_tuning/data/ir_cron.xml create mode 100644 database_autovacuum_tuning/models/__init__.py create mode 100644 database_autovacuum_tuning/models/database_autovacuum_tuning.py create mode 100644 database_autovacuum_tuning/models/res_config_settings.py create mode 100644 database_autovacuum_tuning/pyproject.toml create mode 100644 database_autovacuum_tuning/readme/CONTRIBUTORS.md create mode 100644 database_autovacuum_tuning/readme/DESCRIPTION.md create mode 100644 database_autovacuum_tuning/readme/USAGE.md create mode 100644 database_autovacuum_tuning/security/ir.model.access.csv create mode 100644 database_autovacuum_tuning/static/description/index.html create mode 100644 database_autovacuum_tuning/tests/__init__.py create mode 100644 database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py create mode 100644 database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml create mode 100644 database_autovacuum_tuning/views/res_config_settings_views.xml diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst new file mode 100644 index 00000000000..5dcbc419bbf --- /dev/null +++ b/database_autovacuum_tuning/README.rst @@ -0,0 +1,118 @@ +========================== +Database Autovacuum Tuning +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:162a7723c383e0b6239b46e50d6884767430de1a22f1c42a6c90d80e25b1b4fd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/18.0/database_autovacuum_tuning + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-database_autovacuum_tuning + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Database Autovacuum Tuning helps administrators keep PostgreSQL healthy +by exposing recommended autovacuum settings in Odoo. It provides +guidance and documentation for sizing thresholds and scale factors so +large, busy databases avoid table bloat and excessive vacuum lag. Use it +to standardize autovacuum configuration across environments and speed up +maintenance operations without manual tuning. + +This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 +introduces the ``autovacuum_vacuum_max_threshold`` parameter, which +already provides the capability this module targets. + +The ``pgstattuple`` extension must be installed on the database. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +1. Install the module on the database you want to tune. + +2. Go to Settings > Technical > Database Structure > Database Autovacuum + Tuning and review the recommended thresholds and scale factors. + +3. If needed, override the defaults using the following system + parameters: + + - ``database_autovacuum_tuning.autovacuum_vacuum_max_threshold`` + - ``database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold`` + +4. The configuration parameters are applied to tables by the daily cron + job. When the number of dead tuples in a table exceeds the vacuum + threshold, it applies the following configuration: + + .. code:: sql + + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + +5. Monitor vacuum activity and table bloat, then adjust the settings if + your workload changes. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Camptocamp + +Contributors +------------ + +- Telmo Santos +- Alexandre Fayolle + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/database_autovacuum_tuning/__init__.py b/database_autovacuum_tuning/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/database_autovacuum_tuning/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/database_autovacuum_tuning/__manifest__.py b/database_autovacuum_tuning/__manifest__.py new file mode 100644 index 00000000000..7b1508ca6d4 --- /dev/null +++ b/database_autovacuum_tuning/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + +{ + "name": "Database Autovacuum Tuning", + "summary": "Scheduled checks for Odoo autovacuum thresholds and scale factors", + "version": "18.0.1.0.1", + "author": "Camptocamp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-tools", + "category": "Tools", + "depends": [ + "base_setup", + ], + "data": [ + "data/config_parameter.xml", + "data/ir_cron.xml", + "security/ir.model.access.csv", + "views/res_config_settings_views.xml", + "views/database_autovacuum_tuning_views.xml", + ], + "development_status": "Alpha", + "license": "LGPL-3", + "installable": True, +} diff --git a/database_autovacuum_tuning/data/config_parameter.xml b/database_autovacuum_tuning/data/config_parameter.xml new file mode 100644 index 00000000000..057ab3e8bb6 --- /dev/null +++ b/database_autovacuum_tuning/data/config_parameter.xml @@ -0,0 +1,18 @@ + + + + database_autovacuum_tuning.autovacuum_vacuum_max_threshold + 100000 + + + database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold + 50000 + + diff --git a/database_autovacuum_tuning/data/ir_cron.xml b/database_autovacuum_tuning/data/ir_cron.xml new file mode 100644 index 00000000000..7929b42f093 --- /dev/null +++ b/database_autovacuum_tuning/data/ir_cron.xml @@ -0,0 +1,13 @@ + + + + Database Autovacuum Tuning + + code + model._db_autovacuum_tune() + 1 + days + True + + + diff --git a/database_autovacuum_tuning/models/__init__.py b/database_autovacuum_tuning/models/__init__.py new file mode 100644 index 00000000000..c3700214bb1 --- /dev/null +++ b/database_autovacuum_tuning/models/__init__.py @@ -0,0 +1,2 @@ +from . import database_autovacuum_tuning +from . import res_config_settings diff --git a/database_autovacuum_tuning/models/database_autovacuum_tuning.py b/database_autovacuum_tuning/models/database_autovacuum_tuning.py new file mode 100644 index 00000000000..fc0cf017a0e --- /dev/null +++ b/database_autovacuum_tuning/models/database_autovacuum_tuning.py @@ -0,0 +1,85 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + + +from odoo import api, fields, models + + +class DatabaseAutovacuumTuning(models.Model): + _name = "database.autovacuum.tuning" + _description = "Database Autovacuum Tuning" + + name = fields.Char(required=True, help="Table name") + vacuum_threshold = fields.Integer() + analyze_threshold = fields.Integer() + + @api.model + def _db_autovacuum_tune(self): + vacuum_threshold, analyze_threshold = self._get_thresholds() + if vacuum_threshold <= 0: + return + results = self._get_tables_exceeding_dead_tuples(vacuum_threshold) + for schemaname, tablename, _ in results: + self.env.cr.execute( + f""" + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + """, + (vacuum_threshold, analyze_threshold), + ) + self.sudo().create( + { + "name": f"{schemaname}.{tablename}", + "vacuum_threshold": vacuum_threshold, + "analyze_threshold": analyze_threshold, + } + ) + + def _get_tables_exceeding_dead_tuples(self, vacuum_threshold): + query = """ + SELECT + t.schemaname, + t.tablename, + st.n_dead_tup + FROM pg_tables AS t + JOIN pg_stat_all_tables AS st + ON st.schemaname = t.schemaname + AND st.relname = t.tablename + WHERE t.tableowner = current_user + AND t.schemaname = 'public' + AND st.n_dead_tup > %s + ORDER BY t.schemaname, t.tablename + """ + self.env.cr.execute(query, (vacuum_threshold,)) + return self.env.cr.fetchall() + + def _get_thresholds(self): + try: + vacuum_threshold = int( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + default="0", + ) + ) + except ValueError: + vacuum_threshold = 0 + + try: + analyze_threshold = int( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + default="0", + ) + ) + except ValueError: + analyze_threshold = 0 + + return vacuum_threshold, analyze_threshold diff --git a/database_autovacuum_tuning/models/res_config_settings.py b/database_autovacuum_tuning/models/res_config_settings.py new file mode 100644 index 00000000000..f864d9daaab --- /dev/null +++ b/database_autovacuum_tuning/models/res_config_settings.py @@ -0,0 +1,14 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + autovacuum_vacuum_max_threshold = fields.Integer( + config_parameter="database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + ) + autovacuum_vacuum_analyze_max_threshold = fields.Integer( + config_parameter="database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + ) diff --git a/database_autovacuum_tuning/pyproject.toml b/database_autovacuum_tuning/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/database_autovacuum_tuning/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/database_autovacuum_tuning/readme/CONTRIBUTORS.md b/database_autovacuum_tuning/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..62e88c57a16 --- /dev/null +++ b/database_autovacuum_tuning/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Telmo Santos \<\> +- Alexandre Fayolle \<\> diff --git a/database_autovacuum_tuning/readme/DESCRIPTION.md b/database_autovacuum_tuning/readme/DESCRIPTION.md new file mode 100644 index 00000000000..9193c261573 --- /dev/null +++ b/database_autovacuum_tuning/readme/DESCRIPTION.md @@ -0,0 +1,12 @@ +Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by +exposing recommended autovacuum settings in Odoo. It provides guidance and +documentation for sizing thresholds and scale factors so large, busy databases +avoid table bloat and excessive vacuum lag. Use it to standardize autovacuum +configuration across environments and speed up maintenance operations without +manual tuning. + +This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 introduces +the `autovacuum_vacuum_max_threshold` parameter, which already provides the +capability this module targets. + +The `pgstattuple` extension must be installed on the database. \ No newline at end of file diff --git a/database_autovacuum_tuning/readme/USAGE.md b/database_autovacuum_tuning/readme/USAGE.md new file mode 100644 index 00000000000..c82e039acc4 --- /dev/null +++ b/database_autovacuum_tuning/readme/USAGE.md @@ -0,0 +1,20 @@ +1. Install the module on the database you want to tune. +2. Go to Settings > Technical > Database Structure > Database Autovacuum + Tuning and review the recommended thresholds and scale factors. +3. If needed, override the defaults using the following system parameters: + - `database_autovacuum_tuning.autovacuum_vacuum_max_threshold` + - `database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold` +4. The configuration parameters are applied to tables by the daily cron job. + When the number of dead tuples in a table exceeds the vacuum threshold, it + applies the following configuration: + + ```sql + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + ``` +5. Monitor vacuum activity and table bloat, then adjust the settings if your + workload changes. diff --git a/database_autovacuum_tuning/security/ir.model.access.csv b/database_autovacuum_tuning/security/ir.model.access.csv new file mode 100644 index 00000000000..432a55c91b6 --- /dev/null +++ b/database_autovacuum_tuning/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_database_autovacuum_tuning_system,access_database_autovacuum_tuning_system,model_database_autovacuum_tuning,base.group_system,1,0,1,1 diff --git a/database_autovacuum_tuning/static/description/index.html b/database_autovacuum_tuning/static/description/index.html new file mode 100644 index 00000000000..e909053750c --- /dev/null +++ b/database_autovacuum_tuning/static/description/index.html @@ -0,0 +1,466 @@ + + + + + +Database Autovacuum Tuning + + + +
+

Database Autovacuum Tuning

+ + +

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy +by exposing recommended autovacuum settings in Odoo. It provides +guidance and documentation for sizing thresholds and scale factors so +large, busy databases avoid table bloat and excessive vacuum lag. Use it +to standardize autovacuum configuration across environments and speed up +maintenance operations without manual tuning.

+

This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 +introduces the autovacuum_vacuum_max_threshold parameter, which +already provides the capability this module targets.

+

The pgstattuple extension must be installed on the database.

+

Table of contents

+ +
+

Usage

+
    +
  1. Install the module on the database you want to tune.

    +
  2. +
  3. Go to Settings > Technical > Database Structure > Database Autovacuum +Tuning and review the recommended thresholds and scale factors.

    +
  4. +
  5. If needed, override the defaults using the following system +parameters:

    +
      +
    • database_autovacuum_tuning.autovacuum_vacuum_max_threshold
    • +
    • database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold
    • +
    +
  6. +
  7. The configuration parameters are applied to tables by the daily cron +job. When the number of dead tuples in a table exceeds the vacuum +threshold, it applies the following configuration:

    +
    +ALTER TABLE {schemaname}.{tablename} SET (
    +     autovacuum_vacuum_scale_factor = 0,
    +     autovacuum_vacuum_threshold = %s,
    +     autovacuum_analyze_scale_factor = 0,
    +     autovacuum_analyze_threshold = %s
    +)
    +
    +
  8. +
  9. Monitor vacuum activity and table bloat, then adjust the settings if +your workload changes.

    +
  10. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/database_autovacuum_tuning/tests/__init__.py b/database_autovacuum_tuning/tests/__init__.py new file mode 100644 index 00000000000..a17e75ae912 --- /dev/null +++ b/database_autovacuum_tuning/tests/__init__.py @@ -0,0 +1 @@ +from . import test_database_autovacuum_tunning diff --git a/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py b/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py new file mode 100644 index 00000000000..e285197e9e1 --- /dev/null +++ b/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py @@ -0,0 +1,36 @@ +# Copyright 2026 Camptocamp +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from unittest.mock import patch + +from odoo.tests import TransactionCase + + +class TestAutovacuumTunning(TransactionCase): + def _set_thresholds(self, vacuum_threshold=1, analyze_threshold=1): + params = self.env["ir.config_parameter"].sudo() + params.set_param( + "database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + str(vacuum_threshold), + ) + params.set_param( + "database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + str(analyze_threshold), + ) + + def test_tune_creates_record_for_res_partner(self): + # Set low thresholds to ensure res_partner exceeds them + self._set_thresholds(vacuum_threshold=9, analyze_threshold=5) + # Mock the method to return res_partner as exceeding the thresholds + with patch.object( + self.env.registry["database.autovacuum.tuning"], + "_get_tables_exceeding_dead_tuples", + return_value=[("public", "res_partner", 10)], + ): + self.env["database.autovacuum.tuning"]._db_autovacuum_tune() + record = self.env["database.autovacuum.tuning"].search( + [("name", "=", "public.res_partner")], + limit=1, + ) + + self.assertTrue(record) diff --git a/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml new file mode 100644 index 00000000000..20c6e461166 --- /dev/null +++ b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml @@ -0,0 +1,49 @@ + + + + database.autovacuum.tuning + + + + + + + + + + + + database.autovacuum.tuning + + + + + + + + + + + + + Database Vacuum Tuning + database.autovacuum.tuning + list + + + + + Database Autovacuum Tuning + + + + + diff --git a/database_autovacuum_tuning/views/res_config_settings_views.xml b/database_autovacuum_tuning/views/res_config_settings_views.xml new file mode 100644 index 00000000000..b6204ee3ab4 --- /dev/null +++ b/database_autovacuum_tuning/views/res_config_settings_views.xml @@ -0,0 +1,24 @@ + + + + Database Autovacuum Tuning Settings + res.config.settings + + + + + + + + + + + + + From 1266b993f7d4ae83aa71e5bab7aa5ce31ba9e470 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 30 Apr 2026 05:09:10 +0000 Subject: [PATCH 2/5] [UPD] Update autovacuum_message_attachment.pot --- .../i18n/autovacuum_message_attachment.pot | 1 + 1 file changed, 1 insertion(+) diff --git a/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot b/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot index 72370571696..edf2268fcfa 100644 --- a/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot +++ b/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot @@ -135,6 +135,7 @@ msgstr "" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids From 8fa2a2b468097c2d6d6ff261905ba380d2383b84 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 30 Apr 2026 05:09:19 +0000 Subject: [PATCH 3/5] [UPD] Update database_autovacuum_tuning.pot --- .../i18n/database_autovacuum_tuning.pot | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot diff --git a/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot b/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot new file mode 100644 index 00000000000..50eb04f323d --- /dev/null +++ b/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * database_autovacuum_tuning +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__analyze_threshold +msgid "Analyze Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_analyze_max_threshold +msgid "Autovacuum Vacuum Analyze Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_max_threshold +msgid "Autovacuum Vacuum Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model,name:database_autovacuum_tuning.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Create Date" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_uid +msgid "Created by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_date +msgid "Created on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.server,name:database_autovacuum_tuning.cron_database_autovacuum_tuning_ir_actions_server +#: model:ir.model,name:database_autovacuum_tuning.model_database_autovacuum_tuning +#: model:ir.ui.menu,name:database_autovacuum_tuning.menu_model_autovacuum_tuning +msgid "Database Autovacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.act_window,name:database_autovacuum_tuning.action_model_autovacuum_tuning +msgid "Database Vacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__display_name +msgid "Display Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Group By" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__id +msgid "ID" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_date +msgid "Last Updated on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__name +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__smart_search +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__smart_search +msgid "Smart Search" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,help:database_autovacuum_tuning.field_database_autovacuum_tuning__name +msgid "Table name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"analyze is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__vacuum_threshold +msgid "Vacuum Threshold" +msgstr "" From 234d85116fdb910c8ae86c6249874fd32294293a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 30 Apr 2026 05:17:35 +0000 Subject: [PATCH 4/5] [BOT] post-merge updates --- README.md | 1 + database_autovacuum_tuning/README.rst | 17 ++++++--- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 34 ++++++++++++------ setup/_metapackage/pyproject.toml | 3 +- 5 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 database_autovacuum_tuning/static/description/icon.png diff --git a/README.md b/README.md index 22edfd55301..0efde1c73e0 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ addon | version | maintainers | summary [base_time_window](base_time_window/) | 18.0.1.1.1 | | Base model to handle time windows [base_view_inheritance_extension](base_view_inheritance_extension/) | 18.0.1.0.2 | | Adds more operators for view inheritance [bus_alt_connection](bus_alt_connection/) | 18.0.1.0.0 | | Needed when using PgBouncer as a connection pooler +[database_autovacuum_tuning](database_autovacuum_tuning/) | 18.0.1.0.1 | | Scheduled checks for Odoo autovacuum thresholds and scale factors [database_cleanup](database_cleanup/) | 18.0.1.0.2 | | Database cleanup [database_size](database_size/) | 18.0.1.0.2 | | Database Size [dbfilter_from_header](dbfilter_from_header/) | 18.0.1.0.0 | | Filter databases with HTTP headers diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst index 5dcbc419bbf..60ee46d8437 100644 --- a/database_autovacuum_tuning/README.rst +++ b/database_autovacuum_tuning/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ========================== Database Autovacuum Tuning ========================== @@ -7,13 +11,13 @@ Database Autovacuum Tuning !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:162a7723c383e0b6239b46e50d6884767430de1a22f1c42a6c90d80e25b1b4fd + !! source digest: sha256:ed2cea913a7d93d83e99dc2d84a053972a91963c100bf3ea8ceca5e69c1c7315 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status - :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github @@ -41,6 +45,11 @@ already provides the capability this module targets. The ``pgstattuple`` extension must be installed on the database. +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + **Table of contents** .. contents:: diff --git a/database_autovacuum_tuning/static/description/icon.png b/database_autovacuum_tuning/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 -Database Autovacuum Tuning +README.rst -
-

Database Autovacuum Tuning

+
+ + +Odoo Community Association + +
+

Database Autovacuum Tuning

-

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Alpha License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by exposing recommended autovacuum settings in Odoo. It provides guidance and documentation for sizing thresholds and scale factors so @@ -380,6 +385,12 @@

Database Autovacuum Tuning

introduces the autovacuum_vacuum_max_threshold parameter, which already provides the capability this module targets.

The pgstattuple extension must be installed on the database.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+

Table of contents

    @@ -394,7 +405,7 @@

    Database Autovacuum Tuning

-

Usage

+

Usage

  1. Install the module on the database you want to tune.

  2. @@ -426,7 +437,7 @@

    Usage

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -434,22 +445,22 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

+
diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index c6edf428663..25d7fe2e438 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-server-tools" -version = "18.0.20260416.0" +version = "18.0.20260430.0" dependencies = [ "odoo-addon-attachment_delete_restrict==18.0.*", "odoo-addon-attachment_queue==18.0.*", @@ -28,6 +28,7 @@ dependencies = [ "odoo-addon-base_time_window==18.0.*", "odoo-addon-base_view_inheritance_extension==18.0.*", "odoo-addon-bus_alt_connection==18.0.*", + "odoo-addon-database_autovacuum_tuning==18.0.*", "odoo-addon-database_cleanup==18.0.*", "odoo-addon-database_size==18.0.*", "odoo-addon-dbfilter_from_header==18.0.*", From 57745163a1fdef43f480c5816e9c89833ea99e9c Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 30 Apr 2026 05:17:45 +0000 Subject: [PATCH 5/5] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-tools-18.0/server-tools-18.0-autovacuum_message_attachment Translate-URL: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-autovacuum_message_attachment/ --- autovacuum_message_attachment/i18n/ca.po | 1 + autovacuum_message_attachment/i18n/es.po | 1 + autovacuum_message_attachment/i18n/es_AR.po | 1 + autovacuum_message_attachment/i18n/fr.po | 1 + autovacuum_message_attachment/i18n/it.po | 1 + 5 files changed, 5 insertions(+) diff --git a/autovacuum_message_attachment/i18n/ca.po b/autovacuum_message_attachment/i18n/ca.po index 3549ba233e3..1764d6e3bde 100644 --- a/autovacuum_message_attachment/i18n/ca.po +++ b/autovacuum_message_attachment/i18n/ca.po @@ -136,6 +136,7 @@ msgstr "" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/es.po b/autovacuum_message_attachment/i18n/es.po index 07cc1b7e2b8..4c321589856 100644 --- a/autovacuum_message_attachment/i18n/es.po +++ b/autovacuum_message_attachment/i18n/es.po @@ -138,6 +138,7 @@ msgstr "Todos" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/es_AR.po b/autovacuum_message_attachment/i18n/es_AR.po index 346c4dde032..b3667f0cb93 100644 --- a/autovacuum_message_attachment/i18n/es_AR.po +++ b/autovacuum_message_attachment/i18n/es_AR.po @@ -138,6 +138,7 @@ msgstr "Todos" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/fr.po b/autovacuum_message_attachment/i18n/fr.po index faf09127e59..d7f73284848 100644 --- a/autovacuum_message_attachment/i18n/fr.po +++ b/autovacuum_message_attachment/i18n/fr.po @@ -138,6 +138,7 @@ msgstr "Tous" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/it.po b/autovacuum_message_attachment/i18n/it.po index 8f1c6255261..de5f4cc70e0 100644 --- a/autovacuum_message_attachment/i18n/it.po +++ b/autovacuum_message_attachment/i18n/it.po @@ -138,6 +138,7 @@ msgstr "Tutti" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids