Open raamdev opened 7 years ago
Possibly related to a previously fixed bug that had similar symptoms; see https://github.com/websharks/comet-cache/issues/739
@raamdev
WordPress Version: 4.6.1 Current WordPress Theme: Twenty Sixteen version 1.3 Theme Author: the WordPress team - https://wordpress.org/ Theme URI: https://wordpress.org/themes/twentysixteen/ Active Plugins: Comet Cache Pro v161119 || Postman SMTP v 1.7.2 PHP Version: 7.0.10-2+deb.sury.org~xenial+1
Please note for Postman SMTP v 1.7.2 Compatible up to: 4.4.5 Last Updated: 9 months ago
Yes
to enable)No error was produced. Possible conflict may be with another plugin/theme file.
@renzms writes...
Create a cache and then clear it
Did you cache an RSS feed?
@jaswsinc Looking at the error log above, are you seeing anything that might be a bug with Comet Cache that needs further investigation?
Just beginning research on this...
Call to a member function get_feed_permastruct() on null
Appears this can happen as a result of calling get_feed_link()
too early; i.e., before $wp_rewrite
is set, as seen here: https://github.com/WordPress/WordPress/blob/33b8bb3cf32718248d193e3831d6bfd61b527f75/wp-includes/link-template.php#L590
are you seeing anything that might be a bug with Comet Cache
Yes. It seems we need to take a closer look at hook priorities in Comet Cache following a recent change where we started using plugins_loaded
here instead of after_setup_theme
.
@raamdev Do you remember why we moved to plugins_loaded
?
See also the associated GitHub issue: https://github.com/websharks/comet-cache/issues/716
I see. Thanks! :-)
Looks like we'll need to move back to after_setup_theme
. I can see now that many API calls in Comet Cache are likely to depend on $wp_rewrite
, and the first hook that is available after $wp_rewrite
is set, is setup_theme
. Next, there is after_setup_theme
, which comes after templating constants. Those are also important. In short, plugins_loaded
is too early for the full instantiation of Comet Cache. My bad for agreeing to this before. Just didn't think about it from this angle.
Move to after_setup_theme
@jaswsinc writes...
Looks like we'll need to move back to after_setup_theme.
Not an option right now, at least not without further research and probably a workaround for #716. Issue https://github.com/websharks/comet-cache/issues/716 specifically fixed an issue that Autoptimize (200k+ active installs) was having using the Comet Cache API... see this W.org forum thread where @futtta reported the issue.
@jaswsinc At the very least, I think we need to consider the repercussions of another plugin assuming that the Comet Cache API is ready to be used after plugins_loaded
, as that seems like an obvious assumption to make. @futtta discovered a while back that such an assumption generated fatal errors. If we move back to after_setup_theme
, what can we do to prevent fatal errors when another plugin, or a site owner, tries to use the Comet Cache API after plugins_loaded
?
The Comet Cache plugin API should not be called upon until wp_loaded
. That's typical for most WordPress plugin APIs. Otherwise, if you call API methods earlier than wp_loaded
, you risk doing things before the plugin (or others it depends on) are loaded and fully initialized.
To improve this, what we could do is load the API earlier than everything else so it's available on plugins_loaded
(as it already is now), but then create our own flavor of _doing_it_wrong()
to notify developers that they are doing it wrong when they make calls too early.
In addition, we could automatically defer the action itself until Comet Cache is ready. For example, if you call comet_cache::clear()
, and you've called it too early, we can produce a debug warning, but then defer the action and process it on wp_loaded
as it should have been done.
Do you see any problems with this?
Do you see any problems with this?
I don't see any problems with that. Creating our own flavor of _doing_it_wrong()
and deferring actions automatically sounds great to me.
A user reports on WordPress.org an issue between Comet Cache and Postman (he confirmed it was Postman by finding that other sites without Postman installed were not throwing this error):
We need to run some tests to try and reproduce this issue. It seems related to Feed Caching.