summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2017-11-28 13:13:14 +0100
committerRemi Collet <remi@remirepo.net>2017-11-28 13:13:14 +0100
commitb0013c19105f881d3d2b8a923571521e86d1de83 (patch)
tree46dfc5116d6941b11987cdf39c7ca791b44c0ffb
parentfced9219c12406d3a592c341177f9b5e94fbed7a (diff)
add upstream patch to disable binary protocol with old libmemcached 1.0.16 in EL-7
-rw-r--r--memcached-pr330.patch230
-rw-r--r--php-pecl-memcached.spec9
2 files changed, 238 insertions, 1 deletions
diff --git a/memcached-pr330.patch b/memcached-pr330.patch
new file mode 100644
index 0000000..aa6739f
--- /dev/null
+++ b/memcached-pr330.patch
@@ -0,0 +1,230 @@
+From d81697f7a04646edbbed8ecf34cb524ab1ff8d3c Mon Sep 17 00:00:00 2001
+From: Remi Collet <fedora@famillecollet.com>
+Date: Mon, 20 Feb 2017 19:27:39 +0100
+Subject: [PATCH 1/2] Refresh memcached.ini provided configuration
+
+- remove deprecated options
+- add missing memcached.sess_server_failure_limit option
+- comment all options default value (only needed when not default value)
+ see php.ini-production which follow this convention
+---
+ memcached.ini | 56 +++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 27 insertions(+), 29 deletions(-)
+
+diff --git a/memcached.ini b/memcached.ini
+index 59001aa..fa9a6fd 100644
+--- a/memcached.ini
++++ b/memcached.ini
+@@ -2,45 +2,39 @@
+ ; Use session locking
+ ; valid values: On, Off
+ ; the default is On
+-memcached.sess_locking = On
+-
+-; !! DEPRECATED AND REMOVED in 3.x !!
+-; memcached.sess_lock_wait = 150000
+-
+-; !! DEPRECATED AND REMOVED in 3.x !!
+-; memcached.sess_lock_max_wait = 0;
++;memcached.sess_locking = On
+
+ ; The minimum time, in milliseconds, to wait between session lock attempts.
+ ; This value is double on each lock retry until memcached.sess_lock_wait_max
+ ; is reached, after which any further retries will take sess_lock_wait_max seconds.
+ ; Default is 1000.
+-memcached.sess_lock_wait_min = 1000;
++;memcached.sess_lock_wait_min = 1000;
+
+ ; The maximum time, in milliseconds, to wait between session lock attempts.
+ ; Default is 2000.
+-memcached.sess_lock_wait_max = 2000;
++;memcached.sess_lock_wait_max = 2000;
+
+ ; The number of times to retry locking the session lock, not including the first attempt.
+ ; Default is 5.
+-memcached.sess_lock_retries = 5;
++;memcached.sess_lock_retries = 5;
+
+ ; The time, in seconds, before a lock should release itself.
+ ; Setting to 0 results in the default behaviour, which is to
+ ; use the memcached.sess_lock_max_wait setting. If that is
+ ; also 0, max_execution_time will be used.
+-memcached.sess_lock_expire = 0;
++;memcached.sess_lock_expire = 0;
+
+ ; memcached session key prefix
+ ; valid values are strings less than 219 bytes long
+ ; the default value is "memc.sess.key."
+-memcached.sess_prefix = "memc.sess.key."
++;memcached.sess_prefix = "memc.sess.key."
+
+ ; Whether or not to re-use the memcached connections corresponding to the value(s)
+ ; of session.save_path after the execution of the script ends.
+ ; Don't use this if certain settings (e.g. SASL settings, sess_binary_protocol) would
+ ; be overridden between requests.
+ ; Default is Off.
+-memcached.sess_persistent = Off
++;memcached.sess_persistent = Off
+
+ ; memcached session consistent hash mode
+ ; if set to On, consistent hashing (libketama) is used
+@@ -48,11 +42,15 @@ memcached.sess_persistent = Off
+ ; When consistent hashing is used, one can add or remove cache
+ ; node(s) without messing up too much with existing keys
+ ; default is On
+-memcached.sess_consistent_hash = On
++;memcached.sess_consistent_hash = On
+
+ ; Allow failed memcached server to automatically be removed.
+ ; Default is Off. (In previous versions, this setting was called memcached.sess_remove_failed)
+-memcached.sess_remove_failed_servers = Off
++;memcached.sess_remove_failed_servers = Off
++
++; Set this value to enable the server be removed after
++; configured number of continuous times connection failure.
++;memcached.sess_server_failure_limit = 0
+
+ ; Write data to a number of additional memcached servers
+ ; This is "poor man's HA" as libmemcached calls it.
+@@ -61,34 +59,34 @@ memcached.sess_remove_failed_servers = Off
+ ; from a replica. However, if the failed memcache server
+ ; becomes available again it will read the session from there
+ ; which could have old data or no data at all
+-memcached.sess_number_of_replicas = 0
++;memcached.sess_number_of_replicas = 0
+
+ ; Use the memcached binary protocol for memcached sessions (Instead of the text protocol)
+ ; libmemcached replicas work only if binary mode is enabled.
+ ; However, certain proxies (such as twemproxy) will work only if the binary protocol is disabled.
+ ; Default is On. In older versions of php-memcached, this setting was Off and was called memcached.sess_binary.
+-memcached.sess_binary_protocol = On
++;memcached.sess_binary_protocol = On
+
+ ; memcached session replica read randomize
+-memcached.sess_randomize_replica_read = Off
++;memcached.sess_randomize_replica_read = Off
+
+ ; memcached connect timeout value
+ ; In non-blocking mode this changes the value of the timeout
+ ; during socket connection in milliseconds. Specifying -1 means an infinite timeout.
+-memcached.sess_connect_timeout = 1000
++;memcached.sess_connect_timeout = 1000
+
+ ; Session SASL username
+ ; Both username and password need to be set for SASL to be enabled
+ ; In addition to this memcached.use_sasl needs to be on
+-memcached.sess_sasl_username = NULL
++;memcached.sess_sasl_username = NULL
+
+ ; Session SASL password
+-memcached.sess_sasl_password = NULL
++;memcached.sess_sasl_password = NULL
+
+ ; Set the compression type
+ ; valid values are: fastlz, zlib
+ ; the default is fastlz
+-memcached.compression_type = "fastlz"
++;memcached.compression_type = "fastlz"
+
+ ; Compression factor
+ ; Store compressed value only if the compression
+@@ -98,13 +96,13 @@ memcached.compression_type = "fastlz"
+ ; plain_len > comp_len * factor
+ ;
+ ; the default value is 1.3 (23% space saving)
+-memcached.compression_factor = "1.3"
++;memcached.compression_factor = "1.3"
+
+ ; The compression threshold
+ ;
+ ; Do not compress serialized values below this threshold.
+ ; the default is 2000 bytes
+-memcached.compression_threshold = 2000
++;memcached.compression_threshold = 2000
+
+ ; Set the default serializer for new memcached objects.
+ ; valid values are: php, igbinary, json, json_array, msgpack
+@@ -119,14 +117,14 @@ memcached.compression_threshold = 2000
+ ; msgpack - a cross-language binary serializer
+ ;
+ ; The default is igbinary if available, then msgpack if available, then php otherwise.
+-memcached.serializer = "igbinary"
++;memcached.serializer = "igbinary"
+
+ ; The amount of retries for failed store commands.
+ ; This mechanism allows transparent fail-over to secondary servers when
+ ; set/increment/decrement/setMulti operations fail on the desired server in a multi-server
+ ; environment.
+ ; the default is 2
+-memcached.store_retry_count = 2
++;memcached.store_retry_count = 2
+
+ ; Sets the default for consistent hashing for new connections.
+ ; (To configure consistent hashing for session connections,
+@@ -137,7 +135,7 @@ memcached.store_retry_count = 2
+ ; When consistent hashing is used, one can add or remove cache
+ ; node(s) without messing up too much with existing keys
+ ; default is Off
+-memcached.default_consistent_hash = Off
++;memcached.default_consistent_hash = Off
+
+ ; Sets the default memcached protocol for new connections.
+ ; (To configure the memcached protocol for connections used by sessions,
+@@ -146,7 +144,7 @@ memcached.default_consistent_hash = Off
+ ; If set to On, the memcached binary protocol is used by default.
+ ; If set to Off, the memcached text protocol is used.
+ ; Default is Off
+-memcached.default_binary_protocol = Off
++;memcached.default_binary_protocol = Off
+
+ ; Sets the default memcached connection timeout for new connections.
+ ; (To configure the memcached connection timeout for sessions,
+@@ -155,4 +153,4 @@ memcached.default_binary_protocol = Off
+ ; during socket connection in milliseconds. Specifying -1 means an infinite timeout.
+ ; Specifying 0 means using the memcached library's default connection timeout.
+ ; Default is 0.
+-memcached.default_connect_timeout = 0
++;memcached.default_connect_timeout = 0
+
+From 0a90491dd13af8dfc9a2e1ee600590fe9245ac50 Mon Sep 17 00:00:00 2001
+From: Remi Collet <fedora@famillecollet.com>
+Date: Mon, 20 Feb 2017 19:32:37 +0100
+Subject: [PATCH 2/2] set sess_binary_protocol off by default with older
+ libmemcached
+
+---
+ memcached.ini | 4 +++-
+ php_memcached.c | 4 ++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/memcached.ini b/memcached.ini
+index fa9a6fd..6d05da3 100644
+--- a/memcached.ini
++++ b/memcached.ini
+@@ -64,7 +64,9 @@
+ ; Use the memcached binary protocol for memcached sessions (Instead of the text protocol)
+ ; libmemcached replicas work only if binary mode is enabled.
+ ; However, certain proxies (such as twemproxy) will work only if the binary protocol is disabled.
+-; Default is On. In older versions of php-memcached, this setting was Off and was called memcached.sess_binary.
++; In older versions of php-memcached, this setting was Off and was called memcached.sess_binary.
++; Default is On with libmemcached 1.0.18 or newer.
++; Default is Off with older version.
+ ;memcached.sess_binary_protocol = On
+
+ ; memcached session replica read randomize
+diff --git a/php_memcached.c b/php_memcached.c
+index 1967332..b920970 100644
+--- a/php_memcached.c
++++ b/php_memcached.c
+@@ -332,7 +332,11 @@ PHP_INI_BEGIN()
+ MEMC_SESSION_INI_ENTRY("lock_wait_max", "2000", OnUpdateLongGEZero, lock_wait_max)
+ MEMC_SESSION_INI_ENTRY("lock_retries", "5", OnUpdateLong, lock_retries)
+ MEMC_SESSION_INI_ENTRY("lock_expire", "0", OnUpdateLongGEZero, lock_expiration)
++#if defined(LIBMEMCACHED_VERSION_HEX) && LIBMEMCACHED_VERSION_HEX < 0x01000018
++ MEMC_SESSION_INI_ENTRY("binary_protocol", "0", OnUpdateBool, binary_protocol_enabled)
++#else
+ MEMC_SESSION_INI_ENTRY("binary_protocol", "1", OnUpdateBool, binary_protocol_enabled)
++#endif
+ MEMC_SESSION_INI_ENTRY("consistent_hash", "1", OnUpdateBool, consistent_hash_enabled)
+ MEMC_SESSION_INI_ENTRY("number_of_replicas", "0", OnUpdateLongGEZero, number_of_replicas)
+ MEMC_SESSION_INI_ENTRY("randomize_replica_read", "0", OnUpdateLongGEZero, randomize_replica_read_enabled)
diff --git a/php-pecl-memcached.spec b/php-pecl-memcached.spec
index 7d314f1..8d07b78 100644
--- a/php-pecl-memcached.spec
+++ b/php-pecl-memcached.spec
@@ -27,13 +27,15 @@
Summary: Extension to work with the Memcached caching daemon
Name: %{?sub_prefix}php-pecl-memcached
Version: 3.0.4
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
License: PHP
Group: Development/Languages
URL: http://pecl.php.net/package/%{pecl_name}
Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+Patch0: %{pecl_name}-pr330.patch
+
BuildRequires: %{?scl_prefix}php-devel >= 7
BuildRequires: %{?scl_prefix}php-pear
BuildRequires: %{?scl_prefix}php-json
@@ -128,6 +130,7 @@ sed -e 's/role="test"/role="src"/' \
-i package.xml
cd NTS
+%patch0 -p1 -b .pr330
%if %{with_fastlz}
rm -r fastlz
@@ -331,6 +334,10 @@ exit $ret
%changelog
+* Tue Nov 28 2017 Remi Collet <remi@remirepo.net> - 3.0.4-2
+- add upstream patch to disable binary protocol with
+ old libmemcached 1.0.16 in EL-7
+
* Tue Nov 21 2017 Remi Collet <remi@remirepo.net> - 3.0.4-1
- Update to 3.0.4