Accepting request 793906 from home:darix:branches:network:utilities

- update to version 1.6.5
  https://github.com/memcached/memcached/wiki/ReleaseNotes165
- drop link_sasl.patch issue is fixed

- update to version 1.6.4
  https://github.com/memcached/memcached/wiki/ReleaseNotes163
  https://github.com/memcached/memcached/wiki/ReleaseNotes164
- drop patches as they are included in the update:
  https://github.com/memcached/memcached/pull/634
  https://github.com/memcached/memcached/pull/635
- added link_sasl.patch: it seems libsasl2 wasnt linked which lead
  to undefined references

- disable extstore also on ppc(64)
- limit tls support to 15 and above
- disable lto until the 2 settings structs are resolved

OBS-URL: https://build.opensuse.org/request/show/793906
OBS-URL: https://build.opensuse.org/package/show/network:utilities/memcached?expand=0&rev=73
This commit is contained in:
Marcus Meissner 2020-04-19 13:07:41 +00:00 committed by Git OBS Bridge
parent 395c662ab3
commit 52efec290c
6 changed files with 26 additions and 190 deletions

View File

@ -1,59 +0,0 @@
From aba4ffb5fce37ba6d2977c190592fd35ad7f3462 Mon Sep 17 00:00:00 2001
From: Kanak Kshetri <kanakkshetri@fastmail.fm>
Date: Wed, 1 Apr 2020 07:34:16 -0500
Subject: [PATCH] testapp: Fix failure with -flto=auto
---
Makefile.am | 2 +-
testapp.c | 11 +++++------
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 0d30161e7..d62facfce 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,7 @@ noinst_PROGRAMS = memcached-debug sizes testapp timedrun
BUILT_SOURCES=
-testapp_SOURCES = testapp.c util.c util.h stats_prefix.c stats_prefix.h jenkins_hash.c murmur3_hash.c hash.c hash.h cache.c
+testapp_SOURCES = testapp.c util.c util.h stats_prefix.c stats_prefix.h jenkins_hash.c murmur3_hash.c hash.h cache.c
timedrun_SOURCES = timedrun.c
diff --git a/testapp.c b/testapp.c
index fffed794e..193adda86 100644
--- a/testapp.c
+++ b/testapp.c
@@ -21,6 +21,7 @@
#include "config.h"
#include "cache.h"
#include "hash.h"
+#include "jenkins_hash.h"
#include "stats_prefix.h"
#include "util.h"
#include "protocol_binary.h"
@@ -42,10 +43,7 @@ struct conn {
ssize_t (*write)(struct conn *c, const void *buf, size_t count);
};
-struct settings {
- char *hash_algorithm;
-};
-struct settings settings;
+hash_func hash;
static ssize_t tcp_read(struct conn *c, void *buf, size_t count);
static ssize_t tcp_write(struct conn *c, const void *buf, size_t count);
@@ -2306,8 +2304,9 @@ int main(int argc, char **argv)
enable_ssl = true;
}
#endif
- /* Stats prefix test is sensitive to the choice of hash function */
- hash_init(JENKINS_HASH);
+ /* Initialized directly instead of using hash_init to avoid pulling in
+ the definition of settings struct from memcached.h */
+ hash = jenkins_hash;
stats_prefix_init(':');
for (num_cases = 0; testcases[num_cases].description; num_cases++) {

120
635.patch
View File

@ -1,120 +0,0 @@
From 5174ef33576f461d43f43b2019f5e10655b4c78f Mon Sep 17 00:00:00 2001
From: dormando <dormando@rydia.net>
Date: Wed, 25 Mar 2020 14:02:11 -0700
Subject: [PATCH] restart: fix rare segfault on shutdown
Client connections were being closed and cleaned up after worker
threads exit. In 2018 a patch went in to have the worker threads
actually free their event base when stopped. If your system is strict
enough (which is apparently none out of the dozen+ systems we've tested
against!) it will segfault on invalid memory.
This change leaves the workers hung while they wait for connections to
be centrally closed. I would prefer to have each worker thread close
its own connections for speed if nothing else, but we still need to
close the listener connections and any connections currently open in
side channels.
Much apprecation to darix for helping narrow this down, as it presented
as a wiped stack that only appeared in a specific build environment on
a specific linux distribution.
Hopefully with all of the valgrind noise fixes lately we can start
running it more regularly and spot these early.
---
memcached.c | 19 ++++++++++++-------
memcached.h | 3 +--
thread.c | 14 ++++++++++++++
3 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/memcached.c b/memcached.c
index 2592b3f94..dd52dd04c 100644
--- a/memcached.c
+++ b/memcached.c
@@ -939,6 +939,18 @@ static void conn_close(conn *c) {
return;
}
+// Since some connections might be off on side threads and some are managed as
+// listeners we need to walk through them all from a central point.
+// Must be called with all worker threads hung or in the process of closing.
+void conn_close_all(void) {
+ int i;
+ for (i = 0; i < max_fds; i++) {
+ if (conns[i] && conns[i]->state != conn_closed) {
+ conn_close(conns[i]);
+ }
+ }
+}
+
/**
* Convert a state name to a human readable form.
*/
@@ -10126,13 +10138,6 @@ int main (int argc, char **argv) {
fprintf(stderr, "Gracefully stopping\n");
stop_threads();
- int i;
- // FIXME: make a function callable from threads.c
- for (i = 0; i < max_fds; i++) {
- if (conns[i] && conns[i]->state != conn_closed) {
- conn_close(conns[i]);
- }
- }
if (memory_file != NULL) {
restart_mmap_close();
}
diff --git a/memcached.h b/memcached.h
index a3ddd88c1..bdc38bd9c 100644
--- a/memcached.h
+++ b/memcached.h
@@ -820,9 +820,8 @@ enum delta_result_type add_delta(conn *c, const char *key,
const int64_t delta, char *buf,
uint64_t *cas);
void accept_new_conns(const bool do_accept);
-conn *conn_from_freelist(void);
-bool conn_add_to_freelist(conn *c);
void conn_close_idle(conn *c);
+void conn_close_all(void);
item *item_alloc(char *key, size_t nkey, int flags, rel_time_t exptime, int nbytes);
#define DO_UPDATE true
#define DONT_UPDATE false
diff --git a/thread.c b/thread.c
index ed9765a48..e7f96dcba 100644
--- a/thread.c
+++ b/thread.c
@@ -204,6 +204,7 @@ void stop_threads(void) {
if (settings.verbose > 0)
fprintf(stderr, "asking workers to stop\n");
buf[0] = 's';
+ pthread_mutex_lock(&worker_hang_lock);
pthread_mutex_lock(&init_lock);
init_count = 0;
for (i = 0; i < settings.num_threads; i++) {
@@ -215,6 +216,8 @@ void stop_threads(void) {
wait_for_thread_registration(settings.num_threads);
pthread_mutex_unlock(&init_lock);
+ // All of the workers are hung but haven't done cleanup yet.
+
if (settings.verbose > 0)
fprintf(stderr, "asking background threads to stop\n");
@@ -236,6 +239,17 @@ void stop_threads(void) {
if (settings.verbose > 0)
fprintf(stderr, "stopped idle timeout thread\n");
+ // Close all connections then let the workers finally exit.
+ if (settings.verbose > 0)
+ fprintf(stderr, "closing connections\n");
+ conn_close_all();
+ pthread_mutex_unlock(&worker_hang_lock);
+ if (settings.verbose > 0)
+ fprintf(stderr, "reaping worker threads\n");
+ for (i = 0; i < settings.num_threads; i++) {
+ pthread_join(threads[i].thread_id, NULL);
+ }
+
if (settings.verbose > 0)
fprintf(stderr, "all background threads stopped\n");

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:06720118c40689be0b85249b3dcb23c6e6d5e3ce53893aca9faced264145168b
size 536527

3
memcached-1.6.5.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1f4da3706fc13c33be9df97b2c1c8d7b0891d5f0dc88aebc603cb178e68b27df
size 539962

View File

@ -1,7 +1,26 @@
-------------------------------------------------------------------
Mon Apr 13 19:08:36 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- update to version 1.6.5
https://github.com/memcached/memcached/wiki/ReleaseNotes165
- drop link_sasl.patch issue is fixed
-------------------------------------------------------------------
Mon Apr 13 12:00:31 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- update to version 1.6.4
https://github.com/memcached/memcached/wiki/ReleaseNotes163
https://github.com/memcached/memcached/wiki/ReleaseNotes164
- drop patches as they are included in the update:
https://github.com/memcached/memcached/pull/634
https://github.com/memcached/memcached/pull/635
- added link_sasl.patch: it seems libsasl2 wasnt linked which lead
to undefined references
-------------------------------------------------------------------
Wed Apr 1 23:59:38 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- disable extstore also on ppc(64)
- disable extstore also on ppc(64)
-------------------------------------------------------------------
Wed Apr 1 23:26:11 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
@ -21,12 +40,12 @@ Thu Mar 26 01:22:59 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
-------------------------------------------------------------------
Tue Mar 24 21:27:33 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- limit tls support to 15 and above
- limit tls support to 15 and above
-------------------------------------------------------------------
Tue Mar 24 21:20:51 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- disable lto until the 2 settings structs are resolved
- disable lto until the 2 settings structs are resolved
-------------------------------------------------------------------
Tue Mar 24 20:54:55 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>

View File

@ -28,7 +28,7 @@
%endif
Name: memcached
Version: 1.6.2
Version: 1.6.5
Release: 0
Summary: A high-performance, distributed memory object caching system
License: BSD-3-Clause
@ -39,8 +39,6 @@ Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: memcached-rpmlintrc
Source4: memcached.service
Patch: https://patch-diff.githubusercontent.com/raw/memcached/memcached/pull/635.patch
Patch1: https://patch-diff.githubusercontent.com/raw/memcached/memcached/pull/634.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: cyrus-sasl-devel
@ -90,8 +88,6 @@ This package contains development files
%prep
%setup -q
%patch -p1
%patch1 -p1
%build
autoreconf -fi