Skip to content

Commit fafb217

Browse files
committed
[BOT] post-merge updates
1 parent 56be152 commit fafb217

6 files changed

Lines changed: 108 additions & 56 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Available addons
2222
----------------
2323
addon | version | maintainers | summary
2424
--- | --- | --- | ---
25-
[fs_attachment](fs_attachment/) | 16.0.3.0.0 | <a href='https://github.com/lmignon'><img src='https://github.com/lmignon.png' width='32' height='32' style='border-radius:50%;' alt='lmignon'/></a> | Store attachments on external object store
25+
[fs_attachment](fs_attachment/) | 16.0.3.1.0 | <a href='https://github.com/lmignon'><img src='https://github.com/lmignon.png' width='32' height='32' style='border-radius:50%;' alt='lmignon'/></a> | Store attachments on external object store
2626
[fs_attachment_environment](fs_attachment_environment/) | 16.0.1.0.0 | | Allows to use server environment with fs storage attachment
2727
[fs_attachment_s3](fs_attachment_s3/) | 16.0.3.0.0 | <a href='https://github.com/lmignon'><img src='https://github.com/lmignon.png' width='32' height='32' style='border-radius:50%;' alt='lmignon'/></a> | Store attachments into S3 complient filesystem
2828
[fs_attachment_s3_environment](fs_attachment_s3_environment/) | 16.0.1.0.0 | | Allows to use server environment with fs storage attachment S3

fs_attachment/README.rst

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Base Attachment Object Store
1111
!! This file is generated by oca-gen-addon-readme !!
1212
!! changes will be overwritten. !!
1313
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14-
!! source digest: sha256:ab6dc481fe86d2b6584f38fd205cec1b1033eda6083058b91dfab59f79ef452f
14+
!! source digest: sha256:f04c77a3d6f06a8e26b21554b57811631c1bc9a4c42469598089be3719881db5
1515
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1616
1717
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -329,6 +329,29 @@ Tips & Tricks
329329
Changelog
330330
=========
331331

332+
16.0.3.1.0 (2026-06-24)
333+
~~~~~~~~~~~~~~~~~~~~~~~
334+
335+
**Bugfixes**
336+
337+
- Paginate the autovacuum GC loop to bound worker memory.
338+
339+
``FsFileGC._gc_files_unsafe`` used to load the entire backlog of orphan
340+
files into a single Python list via ``array_agg(store_fname)`` and iterate
341+
``fs.rm`` over all of them in one pass. With the Azure Blob backend and
342+
tens of thousands of orphans queued, each HEAD+DELETE pair retained
343+
response buffers and connection-pool state inside the adlfs client that
344+
was only released when the worker exited. The autovacuum cron hit Odoo's
345+
``limit_memory_hard`` and got ``SIGKILL``'d mid-run every time, so the
346+
queue never drained and the next worker ran the same failing loop.
347+
348+
The SELECT and the ``fs.rm`` loop are now paginated in batches of 500 per
349+
storage, with an explicit ``gc.collect()`` between batches. The caller
350+
(``_gc_files``) still holds the ``SHARE`` lock and performs the final
351+
commit, so the consistency guarantees and transactional semantics are
352+
unchanged. (`#gc_batching <https://github.com/OCA/storage/issues/gc_batching>`_)
353+
354+
332355
16.0.2.1.0 (2026-05-26)
333356
~~~~~~~~~~~~~~~~~~~~~~~
334357

fs_attachment/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
{
66
"name": "Base Attachment Object Store",
77
"summary": "Store attachments on external object store",
8-
"version": "16.0.3.0.0",
8+
"version": "16.0.3.1.0",
99
"author": "Camptocamp, ACSONE SA/NV, Odoo Community Association (OCA)",
1010
"license": "AGPL-3",
1111
"development_status": "Beta",

fs_attachment/readme/HISTORY.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
16.0.3.1.0 (2026-06-24)
2+
~~~~~~~~~~~~~~~~~~~~~~~
3+
4+
**Bugfixes**
5+
6+
- Paginate the autovacuum GC loop to bound worker memory.
7+
8+
``FsFileGC._gc_files_unsafe`` used to load the entire backlog of orphan
9+
files into a single Python list via ``array_agg(store_fname)`` and iterate
10+
``fs.rm`` over all of them in one pass. With the Azure Blob backend and
11+
tens of thousands of orphans queued, each HEAD+DELETE pair retained
12+
response buffers and connection-pool state inside the adlfs client that
13+
was only released when the worker exited. The autovacuum cron hit Odoo's
14+
``limit_memory_hard`` and got ``SIGKILL``'d mid-run every time, so the
15+
queue never drained and the next worker ran the same failing loop.
16+
17+
The SELECT and the ``fs.rm`` loop are now paginated in batches of 500 per
18+
storage, with an explicit ``gc.collect()`` between batches. The caller
19+
(``_gc_files``) still holds the ``SHARE`` lock and performs the final
20+
commit, so the consistency guarantees and transactional semantics are
21+
unchanged. (`#gc_batching <https://github.com/OCA/storage/issues/gc_batching>`_)
22+
23+
124
16.0.2.1.0 (2026-05-26)
225
~~~~~~~~~~~~~~~~~~~~~~~
326

fs_attachment/readme/newsfragments/gc_batching.bugfix

Lines changed: 0 additions & 16 deletions
This file was deleted.

fs_attachment/static/description/index.html

Lines changed: 59 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ <h1>Base Attachment Object Store</h1>
372372
!! This file is generated by oca-gen-addon-readme !!
373373
!! changes will be overwritten. !!
374374
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375-
!! source digest: sha256:ab6dc481fe86d2b6584f38fd205cec1b1033eda6083058b91dfab59f79ef452f
375+
!! source digest: sha256:f04c77a3d6f06a8e26b21554b57811631c1bc9a4c42469598089be3719881db5
376376
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377377
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/storage/tree/16.0/fs_attachment"><img alt="OCA/storage" src="https://img.shields.io/badge/github-OCA%2Fstorage-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_attachment"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/storage&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378378
<p>In some cases, you need to store attachment in another system that the Odoo’s
@@ -428,22 +428,23 @@ <h1>Base Attachment Object Store</h1>
428428
</ul>
429429
</li>
430430
<li><a class="reference internal" href="#changelog" id="toc-entry-6">Changelog</a><ul>
431-
<li><a class="reference internal" href="#section-1" id="toc-entry-7">16.0.2.1.0 (2026-05-26)</a></li>
432-
<li><a class="reference internal" href="#section-2" id="toc-entry-8">16.0.2.0.3 (2026-05-26)</a></li>
433-
<li><a class="reference internal" href="#section-3" id="toc-entry-9">16.0.1.0.13 (2024-05-10)</a></li>
434-
<li><a class="reference internal" href="#section-4" id="toc-entry-10">16.0.1.0.8 (2023-12-20)</a></li>
435-
<li><a class="reference internal" href="#section-5" id="toc-entry-11">16.0.1.0.6 (2023-12-02)</a></li>
436-
<li><a class="reference internal" href="#section-6" id="toc-entry-12">16.0.1.0.5 (2023-11-29)</a></li>
437-
<li><a class="reference internal" href="#section-7" id="toc-entry-13">16.0.1.0.4 (2023-11-22)</a></li>
438-
<li><a class="reference internal" href="#section-8" id="toc-entry-14">16.0.1.0.3 (2023-10-17)</a></li>
439-
<li><a class="reference internal" href="#section-9" id="toc-entry-15">16.0.1.0.2 (2023-10-09)</a></li>
431+
<li><a class="reference internal" href="#section-1" id="toc-entry-7">16.0.3.1.0 (2026-06-24)</a></li>
432+
<li><a class="reference internal" href="#section-2" id="toc-entry-8">16.0.2.1.0 (2026-05-26)</a></li>
433+
<li><a class="reference internal" href="#section-3" id="toc-entry-9">16.0.2.0.3 (2026-05-26)</a></li>
434+
<li><a class="reference internal" href="#section-4" id="toc-entry-10">16.0.1.0.13 (2024-05-10)</a></li>
435+
<li><a class="reference internal" href="#section-5" id="toc-entry-11">16.0.1.0.8 (2023-12-20)</a></li>
436+
<li><a class="reference internal" href="#section-6" id="toc-entry-12">16.0.1.0.6 (2023-12-02)</a></li>
437+
<li><a class="reference internal" href="#section-7" id="toc-entry-13">16.0.1.0.5 (2023-11-29)</a></li>
438+
<li><a class="reference internal" href="#section-8" id="toc-entry-14">16.0.1.0.4 (2023-11-22)</a></li>
439+
<li><a class="reference internal" href="#section-9" id="toc-entry-15">16.0.1.0.3 (2023-10-17)</a></li>
440+
<li><a class="reference internal" href="#section-10" id="toc-entry-16">16.0.1.0.2 (2023-10-09)</a></li>
440441
</ul>
441442
</li>
442-
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-16">Bug Tracker</a></li>
443-
<li><a class="reference internal" href="#credits" id="toc-entry-17">Credits</a><ul>
444-
<li><a class="reference internal" href="#authors" id="toc-entry-18">Authors</a></li>
445-
<li><a class="reference internal" href="#contributors" id="toc-entry-19">Contributors</a></li>
446-
<li><a class="reference internal" href="#maintainers" id="toc-entry-20">Maintainers</a></li>
443+
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-17">Bug Tracker</a></li>
444+
<li><a class="reference internal" href="#credits" id="toc-entry-18">Credits</a><ul>
445+
<li><a class="reference internal" href="#authors" id="toc-entry-19">Authors</a></li>
446+
<li><a class="reference internal" href="#contributors" id="toc-entry-20">Contributors</a></li>
447+
<li><a class="reference internal" href="#maintainers" id="toc-entry-21">Maintainers</a></li>
447448
</ul>
448449
</li>
449450
</ul>
@@ -681,14 +682,35 @@ <h3><a class="toc-backref" href="#toc-entry-5">Tips &amp; Tricks</a></h3>
681682
<div class="section" id="changelog">
682683
<h2><a class="toc-backref" href="#toc-entry-6">Changelog</a></h2>
683684
<div class="section" id="section-1">
684-
<h3><a class="toc-backref" href="#toc-entry-7">16.0.2.1.0 (2026-05-26)</a></h3>
685+
<h3><a class="toc-backref" href="#toc-entry-7">16.0.3.1.0 (2026-06-24)</a></h3>
686+
<p><strong>Bugfixes</strong></p>
687+
<ul>
688+
<li><p class="first">Paginate the autovacuum GC loop to bound worker memory.</p>
689+
<p><tt class="docutils literal">FsFileGC._gc_files_unsafe</tt> used to load the entire backlog of orphan
690+
files into a single Python list via <tt class="docutils literal">array_agg(store_fname)</tt> and iterate
691+
<tt class="docutils literal">fs.rm</tt> over all of them in one pass. With the Azure Blob backend and
692+
tens of thousands of orphans queued, each HEAD+DELETE pair retained
693+
response buffers and connection-pool state inside the adlfs client that
694+
was only released when the worker exited. The autovacuum cron hit Odoo’s
695+
<tt class="docutils literal">limit_memory_hard</tt> and got <tt class="docutils literal">SIGKILL</tt>’d mid-run every time, so the
696+
queue never drained and the next worker ran the same failing loop.</p>
697+
<p>The SELECT and the <tt class="docutils literal">fs.rm</tt> loop are now paginated in batches of 500 per
698+
storage, with an explicit <tt class="docutils literal">gc.collect()</tt> between batches. The caller
699+
(<tt class="docutils literal">_gc_files</tt>) still holds the <tt class="docutils literal">SHARE</tt> lock and performs the final
700+
commit, so the consistency guarantees and transactional semantics are
701+
unchanged. (<a class="reference external" href="https://github.com/OCA/storage/issues/gc_batching">#gc_batching</a>)</p>
702+
</li>
703+
</ul>
704+
</div>
705+
<div class="section" id="section-2">
706+
<h3><a class="toc-backref" href="#toc-entry-8">16.0.2.1.0 (2026-05-26)</a></h3>
685707
<p><strong>Features</strong></p>
686708
<ul class="simple">
687709
<li>Adapt to handle {db_name} in directory_path. (<a class="reference external" href="https://github.com/OCA/storage/issues/db_name">#db_name</a>)</li>
688710
</ul>
689711
</div>
690-
<div class="section" id="section-2">
691-
<h3><a class="toc-backref" href="#toc-entry-8">16.0.2.0.3 (2026-05-26)</a></h3>
712+
<div class="section" id="section-3">
713+
<h3><a class="toc-backref" href="#toc-entry-9">16.0.2.0.3 (2026-05-26)</a></h3>
692714
<p><strong>Bugfixes</strong></p>
693715
<ul>
694716
<li><p class="first">Bound the GC cursor with per-transaction timeouts.</p>
@@ -708,8 +730,8 @@ <h3><a class="toc-backref" href="#toc-entry-8">16.0.2.0.3 (2026-05-26)</a></h3>
708730
</li>
709731
</ul>
710732
</div>
711-
<div class="section" id="section-3">
712-
<h3><a class="toc-backref" href="#toc-entry-9">16.0.1.0.13 (2024-05-10)</a></h3>
733+
<div class="section" id="section-4">
734+
<h3><a class="toc-backref" href="#toc-entry-10">16.0.1.0.13 (2024-05-10)</a></h3>
713735
<p><strong>Bugfixes</strong></p>
714736
<ul>
715737
<li><p class="first">No crash o missign file.</p>
@@ -721,15 +743,15 @@ <h3><a class="toc-backref" href="#toc-entry-9">16.0.1.0.13 (2024-05-10)</a></h3>
721743
</li>
722744
</ul>
723745
</div>
724-
<div class="section" id="section-4">
725-
<h3><a class="toc-backref" href="#toc-entry-10">16.0.1.0.8 (2023-12-20)</a></h3>
746+
<div class="section" id="section-5">
747+
<h3><a class="toc-backref" href="#toc-entry-11">16.0.1.0.8 (2023-12-20)</a></h3>
726748
<p><strong>Bugfixes</strong></p>
727749
<ul class="simple">
728750
<li>Fix the error retrieving attachment files when the storage is set to optimize directory paths. (<a class="reference external" href="https://github.com/OCA/storage/issues/312">#312</a>)</li>
729751
</ul>
730752
</div>
731-
<div class="section" id="section-5">
732-
<h3><a class="toc-backref" href="#toc-entry-11">16.0.1.0.6 (2023-12-02)</a></h3>
753+
<div class="section" id="section-6">
754+
<h3><a class="toc-backref" href="#toc-entry-12">16.0.1.0.6 (2023-12-02)</a></h3>
733755
<p><strong>Bugfixes</strong></p>
734756
<ul>
735757
<li><p class="first">Improve performance at creation of an attachment or when the attachment is updated.</p>
@@ -741,8 +763,8 @@ <h3><a class="toc-backref" href="#toc-entry-11">16.0.1.0.6 (2023-12-02)</a></h3>
741763
</li>
742764
</ul>
743765
</div>
744-
<div class="section" id="section-6">
745-
<h3><a class="toc-backref" href="#toc-entry-12">16.0.1.0.5 (2023-11-29)</a></h3>
766+
<div class="section" id="section-7">
767+
<h3><a class="toc-backref" href="#toc-entry-13">16.0.1.0.5 (2023-11-29)</a></h3>
746768
<p><strong>Bugfixes</strong></p>
747769
<ul class="simple">
748770
<li>When manipulating the file system api through a local variable named <em>fs</em>,
@@ -752,22 +774,22 @@ <h3><a class="toc-backref" href="#toc-entry-12">16.0.1.0.5 (2023-11-29)</a></h3>
752774
avoiding the name clash. (<a class="reference external" href="https://github.com/OCA/storage/issues/306">#306</a>)</li>
753775
</ul>
754776
</div>
755-
<div class="section" id="section-7">
756-
<h3><a class="toc-backref" href="#toc-entry-13">16.0.1.0.4 (2023-11-22)</a></h3>
777+
<div class="section" id="section-8">
778+
<h3><a class="toc-backref" href="#toc-entry-14">16.0.1.0.4 (2023-11-22)</a></h3>
757779
<p><strong>Bugfixes</strong></p>
758780
<ul class="simple">
759781
<li>Fix error when an url is computed for an attachment in a storage configure wihtout directory path. (<a class="reference external" href="https://github.com/OCA/storage/issues/302">#302</a>)</li>
760782
</ul>
761783
</div>
762-
<div class="section" id="section-8">
763-
<h3><a class="toc-backref" href="#toc-entry-14">16.0.1.0.3 (2023-10-17)</a></h3>
784+
<div class="section" id="section-9">
785+
<h3><a class="toc-backref" href="#toc-entry-15">16.0.1.0.3 (2023-10-17)</a></h3>
764786
<p><strong>Bugfixes</strong></p>
765787
<ul class="simple">
766788
<li>Fix access to technical models to be able to upload attachments for users with basic access (<a class="reference external" href="https://github.com/OCA/storage/issues/289">#289</a>)</li>
767789
</ul>
768790
</div>
769-
<div class="section" id="section-9">
770-
<h3><a class="toc-backref" href="#toc-entry-15">16.0.1.0.2 (2023-10-09)</a></h3>
791+
<div class="section" id="section-10">
792+
<h3><a class="toc-backref" href="#toc-entry-16">16.0.1.0.2 (2023-10-09)</a></h3>
771793
<p><strong>Bugfixes</strong></p>
772794
<ul class="simple">
773795
<li>Ensures python 3.9 compatibility. (<a class="reference external" href="https://github.com/OCA/storage/issues/285">#285</a>)</li>
@@ -777,24 +799,24 @@ <h3><a class="toc-backref" href="#toc-entry-15">16.0.1.0.2 (2023-10-09)</a></h3>
777799
</div>
778800
</div>
779801
<div class="section" id="bug-tracker">
780-
<h2><a class="toc-backref" href="#toc-entry-16">Bug Tracker</a></h2>
802+
<h2><a class="toc-backref" href="#toc-entry-17">Bug Tracker</a></h2>
781803
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/storage/issues">GitHub Issues</a>.
782804
In case of trouble, please check there if your issue has already been reported.
783805
If you spotted it first, help us to smash it by providing a detailed and welcomed
784806
<a class="reference external" href="https://github.com/OCA/storage/issues/new?body=module:%20fs_attachment%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
785807
<p>Do not contact contributors directly about support or help with technical issues.</p>
786808
</div>
787809
<div class="section" id="credits">
788-
<h2><a class="toc-backref" href="#toc-entry-17">Credits</a></h2>
810+
<h2><a class="toc-backref" href="#toc-entry-18">Credits</a></h2>
789811
<div class="section" id="authors">
790-
<h3><a class="toc-backref" href="#toc-entry-18">Authors</a></h3>
812+
<h3><a class="toc-backref" href="#toc-entry-19">Authors</a></h3>
791813
<ul class="simple">
792814
<li>Camptocamp</li>
793815
<li>ACSONE SA/NV</li>
794816
</ul>
795817
</div>
796818
<div class="section" id="contributors">
797-
<h3><a class="toc-backref" href="#toc-entry-19">Contributors</a></h3>
819+
<h3><a class="toc-backref" href="#toc-entry-20">Contributors</a></h3>
798820
<p>Thierry Ducrest &lt;<a class="reference external" href="mailto:thierry.ducrest&#64;camptocamp.com">thierry.ducrest&#64;camptocamp.com</a>&gt;
799821
Guewen Baconnier &lt;<a class="reference external" href="mailto:guewen.baconnier&#64;camptocamp.com">guewen.baconnier&#64;camptocamp.com</a>&gt;
800822
Julien Coux &lt;<a class="reference external" href="mailto:julien.coux&#64;camptocamp.com">julien.coux&#64;camptocamp.com</a>&gt;
@@ -812,7 +834,7 @@ <h3><a class="toc-backref" href="#toc-entry-19">Contributors</a></h3>
812834
Mohamed Alkobrosli &lt;<a class="reference external" href="mailto:alkobroslymohamed&#64;gmail.com">alkobroslymohamed&#64;gmail.com</a>&gt;</p>
813835
</div>
814836
<div class="section" id="maintainers">
815-
<h3><a class="toc-backref" href="#toc-entry-20">Maintainers</a></h3>
837+
<h3><a class="toc-backref" href="#toc-entry-21">Maintainers</a></h3>
816838
<p>This module is maintained by the OCA.</p>
817839
<a class="reference external image-reference" href="https://odoo-community.org">
818840
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />

0 commit comments

Comments
 (0)