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:
parent
395c662ab3
commit
52efec290c
59
634.patch
59
634.patch
@ -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
120
635.patch
@ -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");
|
||||
|
@ -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
3
memcached-1.6.5.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1f4da3706fc13c33be9df97b2c1c8d7b0891d5f0dc88aebc603cb178e68b27df
|
||||
size 539962
|
@ -1,3 +1,22 @@
|
||||
-------------------------------------------------------------------
|
||||
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>
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user