Plugin Support
Darian
(@d0153)
Hi @seamuslee
Thank you so much for reaching out and letting us know about this issue. I want to assure you that we already have an internal bug ticket open for this specific problem (Reference: TCMN-193), and I’ve added your case to our report.
We prioritize bugs by taking into consideration the number of users impacted as well as how the bug impacts one’s ability to run an event. I don’t have a specific timeline as to when this issue will be resolved, but trust that our team is aware. Our team communicates updates and bug fixes in our newsletter and via our changelog. We’ll also update this thread once the fix is out.
In the meantime, you might find it helpful to downgrade to a previous version of The Events Calendar v6.14.2. These steps have helped some users as a temporary workaround.
I’m happy to help if any other questions are coming up around this topic, otherwise I’ll go ahead and close this ticket.
Thanks again for reporting this issue and for using The Events Calendar! Have a great day.
—
Internal Bug Ticket Reference: TCMN-193
Plugin Support
Darian
(@d0153)
Hi there,
It looks like this thread has been inactive for a while, so I’ll go ahead and close it for now. If you have any other questions or concerns, please don’t hesitate to reopen this thread or start a new one.
Because the table doesn’t exist and that causes an exception to be thrown, the next very important line doesn’t get run to clean out the <wpdbprefix>_shepherd_tec_tasks table. In TEC 6.15.11 the crucial line is #144 in <common/vendor/vendor-prefixed/stellarwp/shepherd/src/Provider.php>. I prefixed this line with “if (false) ” as a *very* temporary fix. I know it will be overwritten by the next TEC update. But in the meantime, it is a better workaround than rolling back to an older version.
Plugin Support
Darian
(@d0153)
Hi @sipium
Thanks for sharing the workaround you’re currently using.
If you haven’t already, please try adding the following snippet to see if it resolves the issue on your end:
add_action( 'tribe_common_loaded', function () {
remove_action( 'init', [ tribe( TEC\Common\StellarWP\Shepherd\Regulator::class ), 'schedule_cleanup_task' ], 20 );
} );
If you’re not familiar with coding, you can use the Code Snippets plugin, which removes the need to add custom snippets to your theme’s functions.php file.
I hope you’ll understand, I am reluctant to add the code snippet you suggested. This is because I think it is a good idea to continue deleting obsolete task and task-log records, but your code snippet looks like it would stop that cleanup process.
Your suggestion led me to look closely at the code referenced. I can see that the Herding class decides which table holds the task log records on the basis of the configured Logger class. If the Logger is ActionScheduler_DB_Logger, then it will go looking for obsolete log records to delete from the actionscheduler_logs table. Only if the configured Logger is DB_Logger will it try to delete records from the shepherd_tec_task_logs table. In short, attempts to delete from the shepherd_tec_task_logs table are conditional. I expect the creation of that table will also be conditional. Therefore, I think it would be wise if the code I disabled (using a very simple “if (false) …” condition) was made more intelligently conditional like the code in the Herding class. I might try this myself.
Am I right in guessing that the StellarWP Shepherd code is bundled 3rd-party code that you have no influence over? Which would mean that you are relying on StellarWP to fix bugs in their own code on which TEC depends?
Happy to discuss further in more technical detail if necessary.
Plugin Support
Darian
(@d0153)
Hi @sipium
Thanks so much for your response and for sharing what you’ve found. You’re absolutely right — Shepherd is a third-party library, so we don’t have direct control over it. That said, rest assured that our team is already actively addressing the issue related to the Shepherd library, and we expect a fix to be released soon. We truly appreciate your patience, and we’re here if you need anything in the meantime!