[IMP] runbot_merge: trigger commits cron

The commit cron needs to be triggered any time we:

- create a new commit
- update a commit to set its `to_check`

So do that in create and write as well as the SQL query in the
webhook handler.

This should mean we don't need the periodic cron anymore, but for
safety's sake run it on 30mn for now.

TBF even if we miss triggers, the next `status` webhook hitting will
check all the relevant commits anyway...
This commit is contained in:
Xavier Morel 2024-06-21 10:58:05 +02:00
parent 92e8eecbb5
commit 7cd9afe7f2
3 changed files with 5 additions and 1 deletions

View File

@ -369,6 +369,7 @@ def handle_status(env, event):
statuses = c.statuses::jsonb || EXCLUDED.statuses::jsonb
WHERE NOT c.statuses::jsonb @> EXCLUDED.statuses::jsonb
""", [event['sha'], status_value])
env.ref("runbot_merge.process_updated_commits")._trigger()
return 'ok'

View File

@ -64,7 +64,7 @@
<field name="model_id" ref="model_runbot_merge_commit"/>
<field name="state">code</field>
<field name="code">model._notify()</field>
<field name="interval_number">1</field>
<field name="interval_number">30</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>

View File

@ -1781,11 +1781,14 @@ class Commit(models.Model):
def create(self, values):
values['to_check'] = True
r = super(Commit, self).create(values)
self.env.ref("runbot_merge.process_updated_commits")._trigger()
return r
def write(self, values):
values.setdefault('to_check', True)
r = super(Commit, self).write(values)
if values['to_check']:
self.env.ref("runbot_merge.process_updated_commits")._trigger()
return r
def _notify(self):