Skip to content
Snippets Groups Projects
Unverified Commit 9bf2d2fe authored by totten's avatar totten Committed by GitHub
Browse files

Merge pull request #23739 from totten/5.50-hook-log

#3502 - CiviEventDispatcher - Softer errors for `not-ready`. More comments.
parents 1933835d 51dbc37c
Branches
Tags
No related merge requests found
......@@ -187,7 +187,18 @@ class CiviEventDispatcher extends EventDispatcher {
throw new \RuntimeException("The dispatch policy prohibits event \"$eventName\".");
case 'not-ready':
throw new \RuntimeException("CiviCRM has not bootstrapped sufficiently to fire event \"$eventName\".");
// The system is not ready to run hooks -- eg it has not finished loading the extension main-files.
// If you fire a hook at this point, it will not be received by the intended listeners.
// In practice, many hooks involve cached data-structures, so a premature hook is liable to have spooky side-effects.
// This condition indicates a structural problem and merits a consistent failure-mode.
// If you believe some special case merits an exemption, then you could add it to `$bootDispatchPolicy`.
// An `Exception` would be ideal for preventing new bugs, but it can be too noisy for systems with pre-existing bugs.
// throw new \RuntimeException("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.");
// Complain to web-user and sysadmin. Log a backtrace. We're pre-boot, so don't use high-level services.
error_log("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.\n" . \CRM_Core_Error::formatBacktrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), FALSE));
trigger_error("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.", E_USER_WARNING);
return $event;
default:
throw new \RuntimeException("The dispatch policy for \"$eventName\" is unrecognized ($mode).");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment