Problem/Motivation
Drupal 8 will hit its 3 year anniversary this November, but some sites are still struggling to adopt it because of lack of available and stable (security team-covered) modules. Memcache is an important one, particularly for large, high-performance sites which are exactly the kinds of sites we'd love to showcase using Drupal 8!
So, let's figure out what's left to do to get the 8.x code that's there up to a stable release!
Proposed resolution
@Jeremy and I did a triage of the existing Drupal 8 issue queue and came up with the following, which @damiankloip has also eyeballed and says seems pretty sane. We're using the MoSCoW prioritization method here, as well as the same definitions that the core team uses for issue priorities and statuses during release prep.
Must-haves (Beta Blockers)
These issues are needed in order to provide a stable data model and stable critical APIs, and must be fixed prior to the release of 8.x-2.0-beta1. These will be tracked with the "beta blocker" tag.
- #2989601: Support for cache tags natively in memcache Memcache doesn't support partial cache flush The biggest blocker is the inability to query or flush discrete sets of items in the hash table. There are a variety of items under this one, including:
- #2976241: class MemcacheBackendFactory does not implement CacheFactoryInterface
- #2905341: MemcacheLockBackend service should use "add" and "delete" instead of "get" and "set" Impacts the API used.
- #2958403: enable compression by default with memcached extension
- #2996173: Stampede protection will not load new data from cache, but instead make old invalid data valid again.
Must-haves (Stable Release Blockers)
These issues contain other important bug fixes that don't impact the APIs/data model, nor carry data integrity concerns, as well as final checking/polish. These will be tracked under the "D8 stable release blocker" tag.
- #2865364: Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service "user.field_user_food_blogger"
- #2838301: Compatibility with Drupal 8 cache_config is broken
- #2962406: Admin theme not loading when memcache is active
- #2944396: [PHP 7.2] Deprecated assert calling with a string argument
- Carefully go through the instructions in the README file and make sure everything is solid: #2934916: Update README
Should-haves
These issues would be very good to do, but will not hold up the release.
- #2996055: Test coverage
- #435694: >1M data writes incompatible with memcached (memcached -I 32M -m32) — This one has a lot of thorny edge cases, so would prefer it not to hold up release. Plus, if you end up writing >1M records, you're typically Doing It Wrong™.
- #2364557: Port memcache_admin module to d8 — technically the module works without this, but it's very useful to see what you're doing, and the patch looks like a lot of work has gone into it.
- #2305791: Unuseful error in case of problems with memcached server or extension - This one's kind of a perpetual problem that will never be truly "fixed" since error messages could always be improved.
- Various coding standards fixes and small optimizations, including:
- #2658868: Remove unused imports in the code base
- #2758489: Remove @file tag docblock from all the .php files.
- #2884231: Refactor array() definition to the new structure using []
- #2877947: Apply Drupal coding standards
- #2675326: Drupal coding standards patch
- #2908413: Minor mistake of bullet numbering in README.txt
- #2909178: remove extra indentation from lock services.yml stanza in README
- #2930417: Convert module to use short array syntax (new coding standard).
Could-haves
These issues are more nice-to-have, and if they don't make it into release, could always be looked at as post-release additions.
- #2908307: Implement flood control with memcache
- #2983687: Set a default prefix name - Not a blocker, but patch looks good off-hand.
- [Needs issue] A proxy for the internal state service to help optimize state lookups.
Need more info
There was some uncertainty around these, so listing them out here:
- #2838301: Compatibility with Drupal 8 cache_config is broken This sounds serious, but it's unclear if this is just a configuration issue, or if it'll get fixed as part of the other beta blockers.
- #2856031: Offering to co-maintain the 8.x branch
- #2890064: README.txt link on Project Page is incorrect - http://cgit.drupalcode.org/memcache/tree/README.txt?id=refs/heads;id2=7.x-1.x
- #2919189: Uncaught exception when Memcache Server is Down / Off
- Support requests: #2931460: Should invalidation be set or delete? #2953350: set ip address for a remote memcache server
Remaining tasks
- Validate this list with people who, unlike me, actually, ya know, use this module :D
- Fix critical / data integrity-affecting issues.
- Roll a beta.
- Get end user feedback.
- Fix remaining critical bugs, and get a stable release out the door.
- Eat cake. Delicious, delicious cake.
Funding would greatly expedite this work. If you're interested, contact @Jeremy.
User interface changes
Unknown.
API changes
Unknown.
Data model changes
Unknown.
---
Thoughts? :)
Comments
Comment #2
webchickAlso, this issue should credit @Jeremy, @damiankloip, and @anavarre.
Comment #3
webchickComment #4
webchickComment #5
shrop commentedThanks for the work on putting this plan together, @webchick!
I would like to suggest that #2364557: Port memcache_admin module to d8 be merged into 8.x-2.x soon since it has been Reviewed & tested by the community. I am happy to test it and comment additionally if that helps.
I mentioned why I find this module of value in the comment below:
https://www.drupal.org/project/memcache/issues/2364557#comment-12714170
Comment #6
catchComment #7
catchComment #8
catchComment #9
catchComment #10
catchComment #11
wim leershttps://www.drupal.org/project/memcache/releases/8.x-2.0 happened in October. Any reason to keep this open? :)
Comment #12
ryan.ryan commentedI'd say a more reliable release schedule would be helpful—possibly should be a different issue, but there's a lot of fixes in dev version which aren't in the latest stable release. :)