I’m wrong again, as soon as I turn everything back on, it came back again, like clockwork, 15min fails.
However I’ve now narrowed my suspicions to use of:
add_filter('woocommerce_coupon_get__wjecf_free_product_ids', array($this, 'getFreeProductsInLanguage'), 10, 2);
Within Hyyan WooCommerce Polylang integration.
Since I wrote and contributed that part of the code that simplifies my research..
All it does is when the user has a choice of free products (added by an auto-added coupon), these products offered are substituted by the correct language versions.
Normally this works fine but something about recent Polylang updates and term optimisations must be throwing it out. Or some corruption somewhere in the whole wp terms (wp_term_relationships has 37,568 rows).
Or also, it’s getting called when it shouldn’t be.
Anyhow I’ll run with that feature disabled for a day or two and see how it goes.
If you think of any reason use of woocommerce_coupon_get__wjecf_free_product_ids might cause a problem please let me know..