Indeed, this is a big behavior error we found a few month ago.
I think we shared it in mailing but I can find how.
This is a big issue when you change an HTML systempreference like "opacnav", you see the change and when refresh its gone (you see the other plack worker).
We solved by installing memached everywhere.

Maybe we can just disable Cache::Memory when Plack mode is used.
Then I say we need a C4::Context->is_psgi() method :
https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=76477

Programing is sometimes so wierd ;)

Regards,

Le 05/12/2018 à 20:20, Jonathan Druart a écrit :
Hi devs,

I am still recovering from my holidays and I think I caught a quite big fish.

After an interesting track game I will explain why I am suggesting to
remove Cache::Memory that is currently used as fallback for the L2
cache.

What I tried to fix:
Jenkins is complaining about selenium tests (regressions.t) failing on
18.05, it is a succession of events and bugs that were not linked at
first glance.

Here are the different steps I went though:
- On bug 21426 we noticed that USE_MEMCACHED was not taken into
account. If set to "no" the default memcached config was defined in
the koha-config.xml file anyway
- A new regression selenium test was added on bug 21777 to catch the
presence of an audio alert on the circulation page
- Investigating the failing tests I noticed that koha-testing-docker
was not setting the memcached config on the 18.05 branches (I guess
the image has not been rebuilt yet)
search_utf8.t output "Warning: script running in daemon mode, without
recommended caching system (memcached)."
- I also find that [% Koha.Preference('AudioAlerts') %] did not return
the value set by the tests, but the value that the DB has before the
tests were launched
=> It is a cache issue!
- ...but only when memcached is not set...
- Reading Koha::Cache->new we can notice that Cache::Memory is used
for the L2 cache when memcached is not defined in the config

And so we have the problem: If a value is set in the cache by a Plack
worker, it will not be available from another one, as the L2 cache is
not shared (!)

To recreate easily the problem you can:
- remove the memcached config
- edit intranet-bottom.inc and add
===[% Koha.Preference('AudioAlerts') %]===
- restart plack
- Modify the value of AudioAlerts (using the UI)
- Reload the page (reload several times if the value is still correct,
it will depend on which worker will serve the request)

Solution:
I am considering removing Cache::Memory unless somebody else has a better idea
Bug 21955 - Cache::Memory should not be used as L2 cache

Note that it should not affect a lot of people as everybody is
supposed to have memcached configured and working correctly!

Cheers,
Jonathan
_______________________________________________
Koha-devel mailing list
Koha-devel@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/


--
Fridolin SOMERS <fridolin.som...@biblibre.com>
BibLibre, France - software and system maintainer
_______________________________________________
Koha-devel mailing list
Koha-devel@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to