[TASK] Remove igbinary from cache framework 57/47157/4
authorMathias Schreiber <mathias.schreiber@wmdb.de>
Tue, 8 Mar 2016 15:07:41 +0000 (16:07 +0100)
committerMorton Jonuschat <m.jonuschat@mojocode.de>
Tue, 8 Mar 2016 15:36:46 +0000 (16:36 +0100)
commit582d2e9e270fa99e713142f9c0f9e0cf35ea3ab8
tree9fa5f5bf8a9b06fe5b3ccbc395064dfd041bf6b7
parentfe306dd6386aae3fe718c05be991eaa096f49074
[TASK] Remove igbinary from cache framework

The patch removes igbinary serializer support from the cache framework.
When igbinary support was added back then in PHP 5.3 times, it had the
potential to serialize data quicker than the default serializer.

Unfortunately, other promises aren't held:
* The module found no general acceptance within the PHP community and
  isn't supported very well. PHP 7 is still not officially supported.
* Last release at the time of this writing was in 2014-08
* The module must still be compiled from source and no recent
  distribution ever packaged it by default
* The maintenance load on devOps side is high: The module must be
  recompiled with each minor php release
* In case the module is not updated, it throws errors at a central place
  of the system and can easily brick a whole instance
* The module found no huge acceptance by hosters and is only very rarely
  used in real life instances
* A performance impact is only measurable in very small and highly
  specialized use cases, it typically plays no role in casual frontend
  or backend requests.

We've seen several life systems in the wild lately with sloppy hosters
not maintaining the igbinary module within their infrastructure properly.
The current implementation with VariableFrontend dynamically detecting
and then force using the module leads to hard crashes in those situations.
The main issue is that serializing is done via PHPs serializer and
unserializing using igbinary then fails, effectively rendering the
entire installation bricked.
To come by those situations, it is considered more important to deliver
a stable product than a product that is quicker in more theoretical use
cases.

Thus, the support for this module is kicked from the standard cache
frontend. In case igbinary still gives significant boost for specialized
specific instances, an admin can still configure a VariableFrontend that
uses this serializer.

Resolves: #74501
Releases: master
Change-Id: I8d4407382c941f66e8c2747a82ec4464b95476f8
Reviewed-on: https://review.typo3.org/47157
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
typo3/sysext/core/Classes/Cache/Backend/FileBackend.php
typo3/sysext/core/Classes/Cache/Backend/SimpleFileBackend.php
typo3/sysext/core/Classes/Cache/Frontend/VariableFrontend.php
typo3/sysext/core/Tests/Unit/Cache/Frontend/VariableFrontendTest.php