Purpose ======= Improve the portal user deletion by preventing timeouts and avoiding several rollbacks causes. Specifications ============== - Move the portal users deletions from autovacuum to its own cron. On big databases such as odoo.com, deleting a res.users takes more than 1 minute. Move the whole process into its own scheduled tasks. - Commit the deletion at each user. As said previously the deletion can be expensive, so commit what has been done to avoid having to delete the same user again in case of rollbacks or timeout. - Delete the user and the partner separately. If the partner is used in a sales order for instance, the unlink is possible for the user and not the parner. It allows to unlink the user and keep the partner in case it cannot be deleted. - Re-call the cron into another transaction in case there are too many users to delete, instead of waiting next call, that is supposed to occur the day after. Taskid: 3222941 Part-of: odoo/odoo#114656
23 lines
938 B
XML
23 lines
938 B
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<record id="autovacuum_job" model="ir.cron">
|
|
<field name="name">Base: Auto-vacuum internal data</field>
|
|
<field name="model_id" ref="model_ir_autovacuum"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._run_vacuum_cleaner()</field>
|
|
<field name='interval_number'>1</field>
|
|
<field name='interval_type'>days</field>
|
|
<field name="numbercall">-1</field>
|
|
</record>
|
|
|
|
<record id="ir_cron_res_users_deletion" model="ir.cron">
|
|
<field name="name">Base: Portal Users Deletion</field>
|
|
<field name="model_id" ref="base.model_res_users_deletion"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._gc_portal_users()</field>
|
|
<field name='interval_number'>1</field>
|
|
<field name='interval_type'>days</field>
|
|
<field name="numbercall">-1</field>
|
|
</record>
|
|
</odoo>
|