[MDEV-12050] Remove unused InnoDB Memcached hooks from MariaDB Server Created: 2017-02-11  Updated: 2024-01-20  Resolved: 2017-02-13

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Fix Version/s: 10.2.4

Type: Task Priority: Major
Reporter: Marko Mäkelä Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: innodb, plugins

Issue Links:
Problem/Incident
causes MDEV-4674 [PATCH] NoSQL - Implement Memcached p... Open

 Description   

Oracle introduced a Memcached plugin interface to the InnoDB storage engine in MySQL 5.6. That interface is essentially a fork of what seems like an abandoned development branch of Memcached. To my knowledge, there have not been any updates to the Memcached code between MySQL 5.6 and 5.7; only bug fixes and extensions related to the Oracle modifications.

The Memcached plugin is not part of the MariaDB Server. Therefore it does not make sense to include the InnoDB interfaces for the Memcached plugin, or to have any related configuration parameters:

  • innodb_api_bk_commit_interval
  • innodb_api_disable_rowlock
  • innodb_api_enable_binlog
  • innodb_api_enable_mdl
  • innodb_api_trx_level

While there is a request to implement Memcached in MariaDB (MDEV-4674), it cannot possibly be completed before the MariaDB Server 10.2 reaches Generally Available status. Removing this code in one commit makes it possible to easily restore it later, in case it turns out to be needed.



 Comments   
Comment by Marko Mäkelä [ 2017-02-11 ]

Pushed to bb-10.2-marko (on top of some unrelated patches) for test and review.

Comment by Jan Lindström (Inactive) [ 2017-02-12 ]

Let's discuss this, we have PR https://github.com/MariaDB/server/pull/126 to implement our own memcached plugin but it has not progressed after GSoC2015 much.

Comment by Marko Mäkelä [ 2017-02-13 ]

The patch missed the removal of the error codes DB_DATA_MISMATCH, DB_SCHEMA_NOT_LOCKED.
Also DB_NOT_FOUND was introduced with Memcached, but that code is now being used for ‘file not found’.
The now-unused function mach_write_int_type() should be removed too. Possibly also mach_write_ulonglong().

Comment by Marko Mäkelä [ 2017-02-13 ]

For the record, I tracked down the exact Memcached revision that is bundled in Oracle MySQL 5.6 and later.
The initial version was somewhat older, but the final updated version was in this commit:

commit 4b6aeb3065cd7dfe4541a0242f3d3066bf37d625
Author: Jimmy Yang <jimmy.yang@oracle.com>
Date:   Fri Sep 23 02:39:00 2011 -0700
 
    Update Memcached to the latest 1.6.0(beta 1).

This appears to correspond to the Memcached engine-pu branch, tag 1.6.0-beta1. Actually the very last commit is not included:

tag 1.6.0-beta1
Tagger: dormando <dormando@rydia.net>
Date:   Mon Apr 11 20:42:46 2011 -0700
 
Initial beta of 1.6.0. Apologies for the brief annotation :)
 
commit 6debef043b7da953c6a427ed687cd0b1d1185dec
Author: Piotr Sikora <piotr.sikora@frickle.com>
Date:   Mon Apr 11 15:20:43 2011 -0700
 
    Add missing header (fixes build on OpenBSD).

After this, there have not been any tags starting with 1.6, nor any imports of the Memcached code base. Memcached development seems to continue on the 1.4 stable branch.

Comment by Jan Lindström (Inactive) [ 2017-02-13 ]

ok to push.

Comment by Marko Mäkelä [ 2017-02-13 ]

I spent more time researching the version history of the Memcached code in MySQL.

Comment by Marko Mäkelä [ 2024-01-20 ]

For the record, the Memcached interface was finally removed in MySQL 8.3.0. Not completely, maybe because the original authors are gone, and the current MySQL InnoDB maintainers joined Oracle much later.

Generated at Thu Feb 08 07:54:43 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.