Skip to content

Conversation

@grindtildeath
Copy link
Contributor

In case a implementation module, eg sale_exception, breaks a function override, ie does not call super on sale.order.action_confirm in case an exception rule applies, it is still possible that another module that is not in the implementation module's dependency, does modify existing the same object through the same function's override that is called before through MRO.

As the exception rule is only written in base_exception module, such modifications would be still be committed although the exception was triggered.

The only way to rollback everything that happened is to raise an exception that is going to rollback the transaction. However, we still want to commit the write of the exception rule and not to propagate the exception back to the webclient.

Since we cannot alter the env in the retrying function (that handles rollback), we do not have any other choice than to use a dedicated cursor in the dispatching function to process the request, since it could trigger the exception rule, and to use the original env to write the exception rule, and have the webclient being refreshed to display the exception.

This might break the latest feature to pop up the wizard, but since this is still a POC, we could fix that afterwards in case this POC is accepted.

In case a implementation module, eg sale_exception, breaks a function
override, ie does not call super on sale.order.action_confirm in
case an exception rule applies, it is still possible that another
module that is not in the implementation module's dependency, does
modify existing the same object through the same function's override
that is called before through MRO.

As the exception rule is only written in base_exception module,
such modifications would be still be committed although the exception
was triggered.

The only way to rollback everything that happened is to raise an exception
that is going to rollback the transaction. However, we still want to
commit the write of the exception rule and not to propagate the exception
back to the webclient.

Since we cannot alter the env in the retrying function (that handles
rollback), we do not have any other choice than to use a dedicated cursor
in the dispatching function to process the request, since it could trigger
the exception rule, and to use the original env to write the exception
rule, and have the webclient being refreshed to display the exception.

This might break the latest feature to pop up the wizard, but since
this is still a POC, we could fix that afterwards in case this POC
is accepted.
@OCA-git-bot
Copy link
Contributor

Hi @sebastienbeau, @hparfr,
some modules you are maintaining are being modified, check this out!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants