From dbb1aa63cf7891513e2874ee68b18872a2d0f8cb Mon Sep 17 00:00:00 2001 From: ky0uraku Date: Fri, 10 Jul 2026 09:54:25 +0500 Subject: [PATCH] fix: prevent Instance plugin Items list mutation on each run() cycle Methods run() and keys_and_queries() in instance.py used 'all_items = self.Items' which binds to the class-level list, then '+= self.Items_pg_12' mutates it in place via list.__iadd__. This caused self.Items to grow by len(Items_pg_12) + len(Items_pg_18) elements on every collection cycle (~60s), eventually exceeding PostgreSQL's MaxTupleAttributeNumber limit (1664 columns). Fix: use self.Items.copy() to create a new list each time, identical to the fix applied to Statements plugin in v3.5.2 (#187). Fixes #232 --- mamonsu/plugins/pgsql/instance.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mamonsu/plugins/pgsql/instance.py b/mamonsu/plugins/pgsql/instance.py index 10db5ec..1a36172 100644 --- a/mamonsu/plugins/pgsql/instance.py +++ b/mamonsu/plugins/pgsql/instance.py @@ -95,7 +95,7 @@ class Instance(Plugin): "tuples": "PostgreSQL Instance: Tuples"} def run(self, zbx): - all_items = self.Items + all_items = self.Items.copy() if Pooler.server_version_greater("12.0"): all_items += self.Items_pg_12 if Pooler.server_version_greater("18.0"): @@ -213,7 +213,7 @@ def triggers(self, template, dashboard=False): def keys_and_queries(self, template_zabbix): result = [] - all_items = self.Items + all_items = self.Items.copy() if Pooler.server_version_greater("12.0"): all_items += self.Items_pg_12 if Pooler.server_version_greater("18.0"):