Skip to content

Commit

Permalink
[FIX] website_sale: prevent race condition on tour
Browse files Browse the repository at this point in the history
As this race condition seems not possible to be reproduced in local, all this
is an assumption based on the logs.

After the checkout, the user is redirected to `/shop/confirmation` where there
is RPCs fired ever seconds to fetch the payment status
(`/shop/payment/get_status`).

As the test was considered as finished on that page, sometimes the RPC would
still be processed in python while the tour was considered done and killed,
thus also the cookies, session & co.
From that point, the python would crash when accessing the session.
In the logs, the python crash in the RPC call occurs after the test is done.
  • Loading branch information
rdeodoo committed Jan 29, 2020
1 parent f96b8f0 commit 7764246
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion addons/website_sale/static/src/js/website_sale_tour_buy.js
Expand Up @@ -81,8 +81,18 @@ tour.register('shop_buy_product', {
{
content: "finish",
trigger: '.oe_website_sale:contains("Pending... The order will be validated after the payment.")',
// Leave /shop/confirmation to prevent RPC loop to /shop/payment/get_status.
// The RPC could be handled in python while the tour is killed (and the session), leading to crashes
run: function () {
window.location.href = '/aboutus'; // Redirect in JS to avoid the RPC loop (20x1sec)
},
timeout: 30000,
}
},
{
content: "wait page loaded",
trigger: 'h3:contains("Great products for great people")',
run: function () {}, // it's a check
},
]
);

Expand Down

0 comments on commit 7764246

Please sign in to comment.