boa icon indicating copy to clipboard operation
boa copied to clipboard

D7 o_contrib_seven, redis and redis_edge

Open zanami opened this issue 3 years ago • 11 comments

First of all, looks like my BOA is somewhat broken and I'm sure it's not a common problem. I just want to understand what's up with redis and redis_edge.

My D7 custom platforms (just regular D7s and one Panopoly) are in ~/static. Inside /modules/o_contrib_seven 2 symlinks redis redis_edge

redis is enabled, so I guess Drupal loads redis.module which requires autoload.inc

$ drush pmi redis
 Extension        :  redis
 Type             :  module
 Title            :  Redis
 Description      :  Provide a module placeholder, for using as dependency for module that needs Redis.
 Version          :  7.89
 Package          :  Performance
 Core             :  7.x
 PHP              :  5.2.4
 Status           :  enabled
 Path             :  modules/o_contrib_seven/redis
 Schema version   :  module has no schema

then ~/config/includes/global.inc AKA /data/conf/global.inc does it's job and sets cache_backends

$ drush vget cache_backends
cache_backends:
  - modules/o_contrib_seven/redis_edge/redis.autoload.inc

then bootstrap.inc does require_once and I get "cannot redeclare redis_autoload" error

I don't know how this should work, either Drupal should pick up modules/o_contrib_seven/redis_edge as Path (how?) or... no, I can't think of anything else.

Solutions are all hacky and not permanent — disabling redis module, it still works, Drupal just doesn't load it. Ok, but BOA enables it back eventually — deleting /data/all/000/modules/redis (BOA puts it back on update) — hacking redis.autoload.inc to change function name (same)

Could please someone with D7 do...

drush @site_alias pmi redis 
drush @site_alias vget 'cache_backends'
ls -l modules/o_contrib_seven

UPDATE

Another "solution" is to symlink the "correct" redis in platform's sites/all/modules folder

cd ~/static/platformname/sites/all/modules     
ln -s ../../../modules/o_contrib_seven/redis_edge redis

Inspired by /distro/017/drupal-7.56.1-prod provided by BOA, it has it's own separate sites/all/modules/redis Interestingly, redis status is "not installed" there and BOA doesn't enable it.

zanami avatar Jun 30 '22 04:06 zanami

Hello , Don't know if you need this still, but

drush @site_alias pmi drush gives drush was not found drush @dite_alias vget 'cache_backends' gives no matching variable found ls -l modules/o_contrib_seven gives error *** forbidden path -> "/data/all/029/o_contrib_seven/"

good luck,

Ed

EdNett avatar Jun 30 '22 11:06 EdNett

Sorry, my bad, should be drush @site_alias pmi redis drush @site_alias vget cache_backends

where @site_alias is your actual site alias, like @whatever.com

zanami avatar Jun 30 '22 11:06 zanami

Extension : redis Project : redis Type : module Title : Redis Description : Provide a module placeholder, for using as dependency for module that needs Redis. Version : 7.x-3.18 Date : 2019-10-30 Package : Performance Core : 7.x PHP : 5.2.4 Status : not installed Path : sites/all/modules/redis Schema : no schema installed

cache_backends:

  • modules/o_contrib_seven/redis_edge/redis.autoload.inc

EdNett avatar Jun 30 '22 12:06 EdNett

Awesome, thanks! My ready made BOA-provided platform is configured like that Custom D7 in static folder is where I have these strange problems. Thanks again

Чт, 30 июня 2022 г. в 22:30, Ed Nett @.***>:

Extension : redis Project : redis Type : module Title : Redis Description : Provide a module placeholder, for using as dependency for module that needs Redis. Version : 7.x-3.18 Date : 2019-10-30 Package : Performance Core : 7.x PHP : 5.2.4 Status : not installed Path : sites/all/modules/redis Schema : no schema installed

cache_backends:

  • modules/o_contrib_seven/redis_edge/redis.autoload.inc

— Reply to this email directly, view it on GitHub https://github.com/omega8cc/boa/issues/1661#issuecomment-1171158976, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABEGWVOSQFO5GQ6VZVISCL3VRWHN7ANCNFSM52H6SWVQ . You are receiving this because you authored the thread.Message ID: @.***>

zanami avatar Jun 30 '22 12:06 zanami

Please check if you have duplicate in sites/all/modules/redis and remove it. It doesn’t matter what are the versions in o_contrib because they are loaded via individual configuration in the global.inc

Sent with GitHawk

omega8cc avatar Jun 30 '22 13:06 omega8cc

Once removed the duplicate please run registry rebuild — either in Aegir or drush @site rr

Sent with GitHawk

omega8cc avatar Jun 30 '22 13:06 omega8cc

I didn't have anything in sites/all/modules apart from boa platform ini stuff

It doesn’t matter what are the versions in o_contrib because they are loaded via individual configuration in the global.inc

Yes, global.inc is where cache_backend is set to use redis_edge. But it does not prevent Drupal from loading redis module, if it's enabled. And out of 2 versions available in o_contrib_seven it picks redis over redis_edge somehow.

EdNett posted above, the module doesn't matter if it's disables/not installed.

I tried pm-uninstall redis in my ~/static/d7 platform, but BOA keeps enabling it, so I had to create a symlink to the "proper" redis_edge in sites/all/modules

This doesn't feel right as I couldn't find any similar issues or docs on how to deal with it. Looks like BOA does not care about redis in it's bundled d7 platforms (or even enforce it to be disables, not sure) while it keeps enabling redis in custom d7 platforms.

I have a D6 custom platform - redis is "not installed". If I try to enable redis I get "redis is incompatible with the Drupal version." backend_cache is set and redis is working, I guess.

I also have couple of D8 custom platforms - redis is enabled. o_contrib_eight also has 2 redis flavors: redis_compr and redis_eight but somehow Drupal loads the same redis_eight as global.inc. D8 is different so I didn't investigate it much. It works as is.

zanami avatar Jul 01 '22 01:07 zanami

No duplicate redis, only 2 of them in o_contrib_seven

Drush rr is for D8 I believe. Both D6 and D8 work fine, D7 in ~/static has issues. Prebuilt D7 platforms have redis in /sites/all/modules but it is always disabled (not installed) so it does not matter. I don’t understand how it should work. Redis enabled? If both redis and redis_edge are present alongside each other (they are) how Drupal picks one to load? Disabled? looks like daily.sh keeps enabling it. Everything is fine while redis module is not enabled at all or it points exactly to /data/000/modules/redis_edge which is also used for cache_backends

Чт, 30 июня 2022 г. в 23:07, BOA Dev Team @.***>:

Once removed the duplicate please run registry rebuild — either in Aegir or drush @site rr

Sent with GitHawk http://githawk.com

— Reply to this email directly, view it on GitHub https://github.com/omega8cc/boa/issues/1661#issuecomment-1171196861, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABEGWVOLXSHDCHSF5RSAAY3VRWLXZANCNFSM52H6SWVQ . You are receiving this because you authored the thread.Message ID: @.***>

zanami avatar Oct 11 '22 07:10 zanami

Good point, we have already dropped the procedure for D8+ sites which enabled redis module daily -- it was a leftover from the time before we were able to handle this on the fly and for all Drupal cores with extra options in the INI files for compatibility. It should be still properly documented, though, but is explained the built-in docs: https://github.com/omega8cc/boa/blob/master/aegir/conf/default.boa_site_control.ini#L44

omega8cc avatar Apr 28 '23 15:04 omega8cc

I had forgotton about this - and I posted a new issue : https://github.com/omega8cc/boa/issues/1716

For me, currently, 4.2.0 stable june 7 2023 - unless I disable redis in the boa_site_control.ini file - the site is down - 500 unresponsive! So it's a big error.

Why can't we simply permanently remove (or remove after each update to barracuda) either /data/all/000/modules/redis_edge/ or /data/all/000/modules/redis/ ?

Wouldn't removing one of those directories recursively take care of the problem? As I posetd in https://github.com/omega8cc/boa/issues/1724

And why do we have both anyways? There isn't a redis_edge module for d7, is there?

Ed

EdNett avatar Jun 07 '23 19:06 EdNett

@EdNett no, you should never delete anything there, because you are not even aware that redis_edge is essential for Drupal 7, and instead follow these steps:

  1. Set _MODULES_FIX=NO in /root/.barracuda.cnf
  2. Disable redis module with drush in any affected site
  3. Make sure you don't have duplicate redis module in sites/all/modules
  4. Run drush @sitename rr for any affected site

omega8cc avatar Jun 10 '23 08:06 omega8cc