From ad3bf042ec1f717d5160acb05fe897caa2b25a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 08:22:01 +0000 Subject: [PATCH 01/25] Preparation for 1.3.0 --- Makefile | 2 +- docker/images/proxysql/centos67-build/proxysql.spec | 9 ++++++++- docker/images/proxysql/centos7-build/proxysql.spec | 9 ++++++++- docker/images/proxysql/debian-7.8-build/proxysql.ctl | 2 +- docker/images/proxysql/debian-8.2-build/proxysql.ctl | 2 +- docker/images/proxysql/fedora24-build/proxysql.spec | 9 ++++++++- docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl | 2 +- docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl | 2 +- 8 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index d942a4423..0f6831cc0 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ DEBUG=${ALL_DEBUG} #export DEBUG #export OPTZ #export EXTRALINK -CURVER=1.3.0-exp2 +CURVER=1.3.0 DISTRO := $(shell gawk -F= '/^NAME/{print $$2}' /etc/os-release) ifeq ($(wildcard /usr/lib/systemd/systemd), /usr/lib/systemd/systemd) SYSTEMD=1 diff --git a/docker/images/proxysql/centos67-build/proxysql.spec b/docker/images/proxysql/centos67-build/proxysql.spec index 1c1e0c279..260a48f77 100644 --- a/docker/images/proxysql/centos67-build/proxysql.spec +++ b/docker/images/proxysql/centos67-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.2.4 +Version: 1.3.0 Release: 1 License: GPL+ Group: Development/Tools @@ -52,6 +52,13 @@ chkconfig --del %{name} /usr/share/proxysql/tools/proxysql_galera_writer.pl %changelog +* Wed Oct 19 2016 Rene Cannao 1.3.0 +- experimental support for Prepared Statements +- enhanced scalability +* Thu Sep 29 2016 Rene Cannao 1.2.4 +- Forth stable release of 1.2 +* Tue Sep 20 2016 Rene Cannao 1.2.3 +- Third stable release of 1.2 * Fri Sep 2 2016 Rene Cannao 1.2.2 - Second stable release of 1.2 * Tue Aug 2 2016 Rene Cannao 1.2.1 diff --git a/docker/images/proxysql/centos7-build/proxysql.spec b/docker/images/proxysql/centos7-build/proxysql.spec index 1c1e0c279..260a48f77 100644 --- a/docker/images/proxysql/centos7-build/proxysql.spec +++ b/docker/images/proxysql/centos7-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.2.4 +Version: 1.3.0 Release: 1 License: GPL+ Group: Development/Tools @@ -52,6 +52,13 @@ chkconfig --del %{name} /usr/share/proxysql/tools/proxysql_galera_writer.pl %changelog +* Wed Oct 19 2016 Rene Cannao 1.3.0 +- experimental support for Prepared Statements +- enhanced scalability +* Thu Sep 29 2016 Rene Cannao 1.2.4 +- Forth stable release of 1.2 +* Tue Sep 20 2016 Rene Cannao 1.2.3 +- Third stable release of 1.2 * Fri Sep 2 2016 Rene Cannao 1.2.2 - Second stable release of 1.2 * Tue Aug 2 2016 Rene Cannao 1.2.1 diff --git a/docker/images/proxysql/debian-7.8-build/proxysql.ctl b/docker/images/proxysql/debian-7.8-build/proxysql.ctl index 2b2fd3357..85e80b816 100644 --- a/docker/images/proxysql/debian-7.8-build/proxysql.ctl +++ b/docker/images/proxysql/debian-7.8-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.2.4 +Version: 1.3.0 Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/debian-8.2-build/proxysql.ctl b/docker/images/proxysql/debian-8.2-build/proxysql.ctl index 2b2fd3357..85e80b816 100644 --- a/docker/images/proxysql/debian-8.2-build/proxysql.ctl +++ b/docker/images/proxysql/debian-8.2-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.2.4 +Version: 1.3.0 Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/fedora24-build/proxysql.spec b/docker/images/proxysql/fedora24-build/proxysql.spec index 1c1e0c279..260a48f77 100644 --- a/docker/images/proxysql/fedora24-build/proxysql.spec +++ b/docker/images/proxysql/fedora24-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.2.4 +Version: 1.3.0 Release: 1 License: GPL+ Group: Development/Tools @@ -52,6 +52,13 @@ chkconfig --del %{name} /usr/share/proxysql/tools/proxysql_galera_writer.pl %changelog +* Wed Oct 19 2016 Rene Cannao 1.3.0 +- experimental support for Prepared Statements +- enhanced scalability +* Thu Sep 29 2016 Rene Cannao 1.2.4 +- Forth stable release of 1.2 +* Tue Sep 20 2016 Rene Cannao 1.2.3 +- Third stable release of 1.2 * Fri Sep 2 2016 Rene Cannao 1.2.2 - Second stable release of 1.2 * Tue Aug 2 2016 Rene Cannao 1.2.1 diff --git a/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl index 2b2fd3357..85e80b816 100644 --- a/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.2.4 +Version: 1.3.0 Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl index 2b2fd3357..85e80b816 100644 --- a/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.2.4 +Version: 1.3.0 Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md From a0cfdccc15aba55d117d648378a5d3553cc5930b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 08:23:02 +0000 Subject: [PATCH 02/25] Updated .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index cd5b27499..da1463cde 100644 --- a/.gitignore +++ b/.gitignore @@ -95,6 +95,8 @@ deps/libconfig/libconfig-1.4.9/ #re2 deps/re2/re2/ +deps/pcre/pcre-8.39/ +deps/pcre/pcre/ #protobuf deps/protobuf/protobuf-2.6.1/ From 005fcfc60868a5a5fbff2b6f909d5ead8f00c013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 09:08:56 +0000 Subject: [PATCH 03/25] Adding commit version --- include/proxysql.h | 2 +- lib/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/proxysql.h b/include/proxysql.h index d09bf9992..be6bd16ad 100644 --- a/include/proxysql.h +++ b/include/proxysql.h @@ -99,7 +99,7 @@ #else #define DEB "" #endif /* DEBUG */ -#define PROXYSQL_VERSION "1.3.0-alpha" DEB +#define PROXYSQL_VERSION GITVERSION DEB #define PROXYSQL_CODENAME "Truls" #ifndef PROXYSQL_FUNC_DEFS diff --git a/lib/Makefile b/lib/Makefile index 2805fed53..6770b69b8 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,6 +1,6 @@ - +GIT_VERSION := $(shell git describe --long) DEPS_PATH=../deps @@ -39,7 +39,7 @@ ODIR= obj #CFLAGS=$(IDIRS) $(OPTZ) $(DEBUG) -Wall #-lcrypto #CPPFLAGS=-std=c++11 $(CFLAGS) $(LDIRS) $(LIBS) -MYCFLAGS=$(IDIRS) $(OPTZ) $(DEBUG) -Wall +MYCFLAGS=$(IDIRS) $(OPTZ) $(DEBUG) -Wall -DGITVERSION=\"$(GIT_VERSION)\" MYCPPFLAGS=-std=c++11 $(MYCFLAGS) default: libproxysql.a From d00dd2d3a75b1f0f59875415fc7924a4e34fc8e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 11:51:31 +0000 Subject: [PATCH 04/25] Added release note for v1.3.0 --- doc/release_notes/ProxySQL_v1.3.0.md | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 doc/release_notes/ProxySQL_v1.3.0.md diff --git a/doc/release_notes/ProxySQL_v1.3.0.md b/doc/release_notes/ProxySQL_v1.3.0.md new file mode 100644 index 000000000..af15c33f0 --- /dev/null +++ b/doc/release_notes/ProxySQL_v1.3.0.md @@ -0,0 +1,39 @@ +# ProxySQL v1.3.0 + +Release date: 2016-10-19 + +## Performance improvement + +* support for millions of connections. It is also able to handle workloads with hundreds thousands client connections, but only few connections are active. For example, 100k total connections, but only 100 active connections. +* use of pthread_mutex for connection pool +* several performance improvements + + +## Usability improvement + +* Packaging: version number now includes commit hash +* Monitor: limit the number of Monitor thread to 16 + + +## New features + +* EXPERIMENTAL support for proepared statements +* Connection Pool: each MySQL_Thread now has a pair thread, therefore the number of threads executed are mysql-threads x 2 . The second set of MySQL_Threads are responsible to only handle idle connections. + It also introduced two new global variables: + * mysql-session_idle_ms (default 1000) : when a session is idle for that long, it is moved to a thread responsible to handle idle connections + * mysql-session_idle_show_processlist (default false) : specifies if idle connections are displayed on SHOW PROCESSLIST or on any query against stats_mysql_processlist + And a new global status: + * Client_Connections_non_idle : returns the number of client connections that are not idle, therefore handled by the main MySQL_Threads and not moved to the second set of MySQL_Threads responsible to only handle idle connections +* Network: add support for IPv6 [#726](../../../../issues/726) and [#460](../../../../issues/460), thanks to @ton31337 +* Connection Pool: support for SO_REUSEPORT, it can be only enabled on the command line with -r or --reuseport at startup +* Query Processor: added new variable mysql-digests_lowercase to always set digest to lowercase [#725](../../../../issues/725) + + +## Bug fixes + +* Query Processor: rules with only digest were matching everything [#717](../../../../issues/717) +* Query Processor: rules without digest where incorrectly displayed [#719](../../../../issues/719) +* General: Unix Socket Domain file was not removed at shutdown [#714](../../../../issues/714) +* MySQL Protocol: upgrade from mariadb-connector-c 2.1.0 to 2.3.1 due to several bugs +* Connection Pool: server is not shunned if max_user_connections is reached for user [#737](../../../../issues/737) + From 256e7512e6921e868a510522f52bfb75e6597a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 12:20:27 +0000 Subject: [PATCH 05/25] Adding tag --- lib/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Makefile b/lib/Makefile index 6770b69b8..cdc28d8d7 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,6 +1,6 @@ -GIT_VERSION := $(shell git describe --long) +GIT_VERSION := $(shell git describe --long --tags) DEPS_PATH=../deps From 3d197aa9f3f5583038c6bafbeff49c871b8698fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 15:09:56 +0000 Subject: [PATCH 06/25] Minor change to compile on Ubuntu12 --- lib/network.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/network.cpp b/lib/network.cpp index 9dc38447b..542098f83 100644 --- a/lib/network.cpp +++ b/lib/network.cpp @@ -5,12 +5,11 @@ * returns the socket */ int listen_on_port(char *ip, uint16_t port, int backlog, bool reuseport) { - int arg_on = 1; - struct addrinfo hints = { - .ai_flags = AI_PASSIVE, - .ai_family = AF_UNSPEC, - .ai_socktype = SOCK_STREAM - }; + int arg_on = 1; + struct addrinfo hints; + hints.ai_flags = AI_PASSIVE; + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; struct addrinfo *next, *ai; char port_string[NI_MAXSERV]; int sd = -1; From c608771d1472ebb61c6542cd7ceef03ca72e1573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 19 Oct 2016 12:20:45 -0700 Subject: [PATCH 07/25] Update ProxySQL_v1.3.0.md --- doc/release_notes/ProxySQL_v1.3.0.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/release_notes/ProxySQL_v1.3.0.md b/doc/release_notes/ProxySQL_v1.3.0.md index af15c33f0..1a67950c5 100644 --- a/doc/release_notes/ProxySQL_v1.3.0.md +++ b/doc/release_notes/ProxySQL_v1.3.0.md @@ -19,11 +19,10 @@ Release date: 2016-10-19 * EXPERIMENTAL support for proepared statements * Connection Pool: each MySQL_Thread now has a pair thread, therefore the number of threads executed are mysql-threads x 2 . The second set of MySQL_Threads are responsible to only handle idle connections. - It also introduced two new global variables: - * mysql-session_idle_ms (default 1000) : when a session is idle for that long, it is moved to a thread responsible to handle idle connections - * mysql-session_idle_show_processlist (default false) : specifies if idle connections are displayed on SHOW PROCESSLIST or on any query against stats_mysql_processlist - And a new global status: - * Client_Connections_non_idle : returns the number of client connections that are not idle, therefore handled by the main MySQL_Threads and not moved to the second set of MySQL_Threads responsible to only handle idle connections + It also introduced two new global variables and a new global status: + * `mysql-session_idle_ms` (default 1000) : when a session is idle for that long, it is moved to a thread responsible to handle idle connections + * `mysql-session_idle_show_processlist` (default false) : specifies if idle connections are displayed on SHOW PROCESSLIST or on any query against `stats_mysql_processlist` + * `Client_Connections_non_idle` : returns the number of client connections that are not idle, therefore handled by the main MySQL_Threads and not moved to the second set of MySQL_Threads responsible to only handle idle connections * Network: add support for IPv6 [#726](../../../../issues/726) and [#460](../../../../issues/460), thanks to @ton31337 * Connection Pool: support for SO_REUSEPORT, it can be only enabled on the command line with -r or --reuseport at startup * Query Processor: added new variable mysql-digests_lowercase to always set digest to lowercase [#725](../../../../issues/725) From 1cf78c16e1a4e00e37964de3d7c26002b8d23e41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 21 Oct 2016 09:58:15 +0000 Subject: [PATCH 08/25] Fixed computation of idle time #744 --- lib/MySQL_Thread.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 65701fbe1..fa64fa2bc 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -2341,7 +2341,10 @@ __run_skip_1a: mysess_idx=0; } unsigned int i; - unsigned long long min_idle = curtime - (unsigned long long)mysql_thread___wait_timeout*1000; + unsigned long long min_idle = 0; + if (curtime > (unsigned long long)mysql_thread___wait_timeout*1000) { + min_idle = curtime - (unsigned long long)mysql_thread___wait_timeout*1000; + } for (i=0;ilen; i++) { uint32_t sess_pos=mysess_idx; MySQL_Session *mysess=(MySQL_Session *)mysql_sessions->index(sess_pos); From cb9e9b691732d9e60a4618145c10163bc7f7d242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 21 Oct 2016 11:36:21 +0000 Subject: [PATCH 09/25] Added some sleep in Makefile Relevant when preparing packages --- Makefile | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Makefile b/Makefile index 0f6831cc0..b516aab2d 100644 --- a/Makefile +++ b/Makefile @@ -117,9 +117,11 @@ binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm: docker exec -it centos67_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos67-build/rpmmacros centos67_build:/root/.rpmmacros docker cp docker/images/proxysql/centos67-build/proxysql.spec centos67_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 docker exec -it centos67_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" docker exec -it centos67_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 docker cp centos67_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm docker stop centos67_build docker rm centos67_build @@ -135,9 +137,11 @@ binaries/proxysql-${CURVER}-1-dbg-centos67.x86_64.rpm: docker exec -it centos67_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos67-build/rpmmacros centos67_build:/root/.rpmmacros docker cp docker/images/proxysql/centos67-build/proxysql.spec centos67_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 docker exec -it centos67_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" docker exec -it centos67_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 docker cp centos67_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-centos67.x86_64.rpm docker stop centos67_build docker rm centos67_build @@ -153,9 +157,11 @@ binaries/proxysql-${CURVER}-1-centos7.x86_64.rpm: docker exec -it centos7_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos7-build/rpmmacros centos7_build:/root/.rpmmacros docker cp docker/images/proxysql/centos7-build/proxysql.spec centos7_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 docker exec -it centos7_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" docker exec -it centos7_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 docker cp centos7_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-centos7.x86_64.rpm docker stop centos7_build docker rm centos7_build @@ -171,9 +177,11 @@ binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm: docker exec -it centos7_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos7-build/rpmmacros centos7_build:/root/.rpmmacros docker cp docker/images/proxysql/centos7-build/proxysql.spec centos7_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 docker exec -it centos7_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" docker exec -it centos7_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 docker cp centos7_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm docker stop centos7_build docker rm centos7_build @@ -190,9 +198,11 @@ binaries/proxysql-${CURVER}-1-fedora24.x86_64.rpm: docker exec -it fedora24_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/fedora24-build/rpmmacros fedora24_build:/root/.rpmmacros docker cp docker/images/proxysql/fedora24-build/proxysql.spec fedora24_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 docker exec -it fedora24_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" docker exec -it fedora24_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 docker cp fedora24_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-fedora24.x86_64.rpm docker stop fedora24_build docker rm fedora24_build @@ -208,9 +218,11 @@ binaries/proxysql-${CURVER}-1-dbg-fedora24.x86_64.rpm: docker exec -it fedora24_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/fedora24-build/rpmmacros fedora24_build:/root/.rpmmacros docker cp docker/images/proxysql/fedora24-build/proxysql.spec fedora24_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 docker exec -it fedora24_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" docker exec -it fedora24_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 docker cp fedora24_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-fedora24.x86_64.rpm docker stop fedora24_build docker rm fedora24_build @@ -225,6 +237,7 @@ binaries/proxysql_${CURVER}-ubuntu12_amd64.deb: docker exec ubuntu12_build bash -c "cd /opt/proxysql; sed -i -e 's/c++11/c++0x/' lib/Makefile ; sed -i -e 's/c++11/c++0x/' src/Makefile ; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" docker cp docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl ubuntu12_build:/opt/proxysql/ docker exec ubuntu12_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp ubuntu12_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-ubuntu12_amd64.deb docker stop ubuntu12_build docker rm ubuntu12_build @@ -237,7 +250,9 @@ binaries/proxysql_${CURVER}-ubuntu14_amd64.deb: docker exec ubuntu14_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" docker cp docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl ubuntu14_build:/opt/proxysql/ + sleep 2 docker exec ubuntu14_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp ubuntu14_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-ubuntu14_amd64.deb docker stop ubuntu14_build docker rm ubuntu14_build @@ -250,7 +265,9 @@ binaries/proxysql_${CURVER}-ubuntu16_amd64.deb: docker exec ubuntu16_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec ubuntu16_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" docker cp docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl ubuntu16_build:/opt/proxysql/ + sleep 2 docker exec ubuntu16_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp ubuntu16_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-ubuntu16_amd64.deb docker stop ubuntu16_build docker rm ubuntu16_build @@ -263,7 +280,9 @@ binaries/proxysql_${CURVER}-debian7_amd64.deb: docker exec debian7_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec debian7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" docker cp docker/images/proxysql/debian-7.8-build/proxysql.ctl debian7_build:/opt/proxysql/ + sleep 2 docker exec debian7_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp debian7_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-debian7_amd64.deb docker stop debian7_build docker rm debian7_build @@ -276,7 +295,9 @@ binaries/proxysql_${CURVER}-debian8_amd64.deb: docker exec debian8_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec debian8_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" docker cp docker/images/proxysql/debian-8.2-build/proxysql.ctl debian8_build:/opt/proxysql/ + sleep 2 docker exec debian8_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp debian8_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-debian8_amd64.deb docker stop debian8_build docker rm debian8_build @@ -290,7 +311,9 @@ binaries/proxysql_${CURVER}-dbg-ubuntu12_amd64.deb: docker exec ubuntu12_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec ubuntu12_build bash -c "cd /opt/proxysql; sed -i -e 's/c++11/c++0x/' lib/Makefile ; sed -i -e 's/c++11/c++0x/' src/Makefile ; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" docker cp docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl ubuntu12_build:/opt/proxysql/ + sleep 2 docker exec ubuntu12_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp ubuntu12_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-dbg-ubuntu12_amd64.deb docker stop ubuntu12_build docker rm ubuntu12_build @@ -303,7 +326,9 @@ binaries/proxysql_${CURVER}-dbg-ubuntu14_amd64.deb: docker exec ubuntu14_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" docker cp docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl ubuntu14_build:/opt/proxysql/ + sleep 2 docker exec ubuntu14_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp ubuntu14_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-dbg-ubuntu14_amd64.deb docker stop ubuntu14_build docker rm ubuntu14_build @@ -316,7 +341,9 @@ binaries/proxysql_${CURVER}-dbg-ubuntu16_amd64.deb: docker exec ubuntu16_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec ubuntu16_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" docker cp docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl ubuntu16_build:/opt/proxysql/ + sleep 2 docker exec ubuntu16_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp ubuntu16_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-dbg-ubuntu16_amd64.deb docker stop ubuntu16_build docker rm ubuntu16_build @@ -329,7 +356,9 @@ binaries/proxysql_${CURVER}-dbg-debian7_amd64.deb: docker exec debian7_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec debian7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" docker cp docker/images/proxysql/debian-7.8-build/proxysql.ctl debian7_build:/opt/proxysql/ + sleep 2 docker exec debian7_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp debian7_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-dbg-debian7_amd64.deb docker stop debian7_build docker rm debian7_build @@ -342,7 +371,9 @@ binaries/proxysql_${CURVER}-dbg-debian8_amd64.deb: docker exec debian8_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" docker exec debian8_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" docker cp docker/images/proxysql/debian-8.2-build/proxysql.ctl debian8_build:/opt/proxysql/ + sleep 2 docker exec debian8_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" + sleep 2 docker cp debian8_build:/opt/proxysql/proxysql_${CURVER}_amd64.deb ./binaries/proxysql_${CURVER}-dbg-debian8_amd64.deb docker stop debian8_build docker rm debian8_build From f28bd5a96d5d279039bfe0f982b83154c959f203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 21 Oct 2016 22:24:07 +0000 Subject: [PATCH 10/25] Minor changes to debug #740 --- lib/MySQL_Session.cpp | 14 ++++++++++++++ lib/mysql_connection.cpp | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 8ea5ce799..6ba3e4e63 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -2075,6 +2075,20 @@ handler_again: if (rc==-1) { CurrentQuery.mysql_stmt=NULL; // immediately reset mysql_stmt // the query failed + /* placeholder. This may be releant for #740 + switch(status) { + case PROCESSING_STMT_EXECUTE: + myds->destroy_MySQL_Connection_From_Pool(false); + myds->fd=0; + break; + case PROCESSING_STMT_PREPARE: + myds->destroy_MySQL_Connection_From_Pool(false); + myds->fd=0; + break; + default: + break; + } + */ if ( (myconn->parent->status==MYSQL_SERVER_STATUS_OFFLINE_HARD) // the query failed because the server is offline hard || diff --git a/lib/mysql_connection.cpp b/lib/mysql_connection.cpp index 620ccc36b..f92e79603 100644 --- a/lib/mysql_connection.cpp +++ b/lib/mysql_connection.cpp @@ -480,7 +480,7 @@ void MySQL_Connection::stmt_execute_start() { assert(query.stmt->mysql); // if we reached here, we hit bug #740 _rc=mysql_stmt_bind_param(query.stmt, query.stmt_meta->binds); // FIXME : add error handling if (_rc) { - fprintf(stderr, " mysql_stmt_bind_param() failed: %s\n", mysql_stmt_error(query.stmt)); + proxy_error("mysql_stmt_bind_param() failed: %s", mysql_stmt_error(query.stmt)); } //proxy_info("Calling mysql_stmt_execute_start, current state: %d\n", query.stmt->state); async_exit_status = mysql_stmt_execute_start(&interr , query.stmt); From a355bfedd1471043e5068ec2db7f6efa876ab614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 21 Oct 2016 22:35:46 +0000 Subject: [PATCH 11/25] Minor fix on getaddrinfo() in listen_on_port() --- lib/network.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/network.cpp b/lib/network.cpp index 542098f83..ef62022bc 100644 --- a/lib/network.cpp +++ b/lib/network.cpp @@ -5,20 +5,22 @@ * returns the socket */ int listen_on_port(char *ip, uint16_t port, int backlog, bool reuseport) { - int arg_on = 1; + int rc, arg_on = 1; struct addrinfo hints; hints.ai_flags = AI_PASSIVE; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; struct addrinfo *next, *ai; char port_string[NI_MAXSERV]; int sd = -1; snprintf(port_string, sizeof(port_string), "%d", port); - if (getaddrinfo(ip, port_string, &hints, &ai) != 0) { - proxy_error("getaddrinfo(): %s\n", gai_strerror(errno)); - return -1; - } + rc = getaddrinfo(ip, port_string, &hints, &ai); + if (rc) { + proxy_error("getaddrinfo(): %s\n", gai_strerror(rc)); + return -1; + } for (next = ai; next != NULL; next = next->ai_next) { if ((sd = socket(next->ai_family, next->ai_socktype, next->ai_protocol)) == -1) From 6a4517f910eb4ae61c563933dcaf6c7db5c2b172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 21 Oct 2016 23:17:02 +0000 Subject: [PATCH 12/25] Kill threads uses wrong credentials This is a regression bug introduced by hashed passwords --- lib/MySQL_Session.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 6ba3e4e63..c40f71c5d 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -736,7 +736,15 @@ void MySQL_Session::handler_again___new_thread_to_kill_connection() { myds->killed_at=thread->curtime; //fprintf(stderr,"Expired: %llu, %llu\n", mybe->server_myds->wait_until, thread->curtime); MySQL_Connection_userinfo *ui=client_myds->myconn->userinfo; - KillArgs *ka = new KillArgs(ui->username, ui->password, myds->myconn->parent->address, myds->myconn->parent->port, myds->myconn->mysql->thread_id); + char *auth_password=NULL; + if (ui->password) { + if (ui->password[0]=='*') { // we don't have the real password, let's pass sha1 + auth_password=ui->sha1_pass; + } else { + auth_password=ui->password; + } + } + KillArgs *ka = new KillArgs(ui->username, auth_password, myds->myconn->parent->address, myds->myconn->parent->port, myds->myconn->mysql->thread_id); pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); From 67f782bed81b54e8c95339f7e2aacd71aec63a76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 21 Oct 2016 23:52:13 +0000 Subject: [PATCH 13/25] Reducing maintenance loop to 30ms --- lib/MySQL_Thread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index fa64fa2bc..2b3d79e2d 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -2178,9 +2178,9 @@ __run_skip_1a: mypolls.poll_timeout=0; // always reset this to 0 . If a session needs a specific timeout, it will set this one curtime=monotonic_time(); - unsigned int maintenance_interval = 300000; // hardcoded value for now + unsigned int maintenance_interval = 30000; // hardcoded value for now if (idle_maintenance_thread) { - maintenance_interval=maintenance_interval*2; + maintenance_interval=maintenance_interval*20; } if (curtime > last_maintenance_time + maintenance_interval) { last_maintenance_time=curtime; From bf6c93cb166078eeea2fdb1ed9a5d6cc5c23b46a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 22 Oct 2016 12:14:35 +0000 Subject: [PATCH 14/25] Killed queries now return 1907 #750 --- include/MySQL_Session.h | 2 +- lib/MySQL_Session.cpp | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/include/MySQL_Session.h b/include/MySQL_Session.h index a039b5d27..ac389de1c 100644 --- a/include/MySQL_Session.h +++ b/include/MySQL_Session.h @@ -180,7 +180,7 @@ class MySQL_Session MySQL_Backend * find_or_create_backend(int, MySQL_Data_Stream *_myds=NULL); void SQLite3_to_MySQL(SQLite3_result *, char *, int , MySQL_Protocol *); - void MySQL_Result_to_MySQL_wire(MYSQL *mysql, MySQL_ResultSet *MyRS); + void MySQL_Result_to_MySQL_wire(MYSQL *mysql, MySQL_ResultSet *MyRS, MySQL_Data_Stream *_myds=NULL); void MySQL_Stmt_Result_to_MySQL_wire(MYSQL_STMT *stmt, MySQL_Connection *myconn); unsigned int NumActiveTransactions(); int FindOneActiveTransaction(); diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index c40f71c5d..fe3f09d7e 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -2183,9 +2183,13 @@ handler_again: bool retry_conn=false; switch (myerr) { case 1317: // Query execution was interrupted - if (killed==true || myds->killed_at) { + if (killed==true) { // this session is being kiled return -1; } + if (myds->killed_at) { + // we intentionally killed the query + break; + } case 1290: // read-only case 1047: // WSREP has not yet prepared node for application use case 1053: // Server shutdown in progress @@ -2225,7 +2229,7 @@ handler_again: switch (status) { case PROCESSING_QUERY: - MySQL_Result_to_MySQL_wire(myconn->mysql, myconn->MyRS); + MySQL_Result_to_MySQL_wire(myconn->mysql, myconn->MyRS, myds); break; case PROCESSING_STMT_PREPARE: //MySQL_Result_to_MySQL_wire(myconn->mysql, myconn->MyRS, true); @@ -2912,7 +2916,7 @@ void MySQL_Session::MySQL_Stmt_Result_to_MySQL_wire(MYSQL_STMT *stmt, MySQL_Conn } } -void MySQL_Session::MySQL_Result_to_MySQL_wire(MYSQL *mysql, MySQL_ResultSet *MyRS) { +void MySQL_Session::MySQL_Result_to_MySQL_wire(MYSQL *mysql, MySQL_ResultSet *MyRS, MySQL_Data_Stream *_myds) { if (MyRS) { assert(MyRS->result); bool transfer_started=MyRS->transfer_started; @@ -2955,8 +2959,12 @@ void MySQL_Session::MySQL_Result_to_MySQL_wire(MYSQL *mysql, MySQL_ResultSet *My } else { // error char sqlstate[10]; - sprintf(sqlstate,"#%s",mysql_sqlstate(mysql)); - client_myds->myprot.generate_pkt_ERR(true,NULL,NULL,client_myds->pkt_sid+1,mysql_errno(mysql),sqlstate,mysql_error(mysql)); + sprintf(sqlstate,"%s",mysql_sqlstate(mysql)); + if (_myds && _myds->killed_at) { // see case #750 + client_myds->myprot.generate_pkt_ERR(true,NULL,NULL,client_myds->pkt_sid+1,1907,sqlstate,"Query execution was interrupted, query_timeout exceeded"); + } else { + client_myds->myprot.generate_pkt_ERR(true,NULL,NULL,client_myds->pkt_sid+1,mysql_errno(mysql),sqlstate,mysql_error(mysql)); + } client_myds->pkt_sid++; } } From 91dff86468b8b2362bb5e878416cf9416d0776c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 22 Oct 2016 13:11:18 +0000 Subject: [PATCH 15/25] Check on timeouts don't depend on maintenance loop This is related to #751 --- lib/MySQL_Thread.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 2b3d79e2d..5aeb6925d 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -2408,6 +2408,19 @@ __run_skip_1a: if (mypolls.fds[n].revents==0) { // FIXME: this logic was removed completely because we added mariadb client library. Yet, we need to implement a way to manage connection timeout // check for timeout + // no events. This section is copied from process_data_on_data_stream() + MySQL_Data_Stream *_myds=mypolls.myds[n]; + if (_myds && _myds->sess) { + if (_myds->wait_until && curtime > _myds->wait_until) { + // timeout + _myds->sess->to_process=1; + } else { + if (_myds->sess->pause_until && curtime > _myds->sess->pause_until) { + // timeout + _myds->sess->to_process=1; + } + } + } } else { // check if the FD is valid if (mypolls.fds[n].revents==POLLNVAL) { From 823015370641e50b76e3c5af2ea39579b891d4b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 22 Oct 2016 13:29:44 +0000 Subject: [PATCH 16/25] Increasing again maintenance loop interval After applying 91dff86468b8b2362bb5e878416cf9416d0776c2 , 67f782bed81b54e8c95339f7e2aacd71aec63a76 becomes not relevant --- lib/MySQL_Thread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 5aeb6925d..40137b3de 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -2178,9 +2178,9 @@ __run_skip_1a: mypolls.poll_timeout=0; // always reset this to 0 . If a session needs a specific timeout, it will set this one curtime=monotonic_time(); - unsigned int maintenance_interval = 30000; // hardcoded value for now + unsigned int maintenance_interval = 1000000; // hardcoded value for now if (idle_maintenance_thread) { - maintenance_interval=maintenance_interval*20; + maintenance_interval=maintenance_interval*2; } if (curtime > last_maintenance_time + maintenance_interval) { last_maintenance_time=curtime; From 242384a7fb4a3c02eb412cfd87ac8aea0f91559b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 22 Oct 2016 13:53:41 +0000 Subject: [PATCH 17/25] Check timeout only if poll() timeouts Main MySQL threads will only heck for timeout in data streams if poll() has timed out --- include/MySQL_Thread.h | 2 ++ lib/MySQL_Thread.cpp | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/MySQL_Thread.h b/include/MySQL_Thread.h index 0fd3ecb05..b69b97c66 100644 --- a/include/MySQL_Thread.h +++ b/include/MySQL_Thread.h @@ -165,6 +165,7 @@ class MySQL_Thread ProxySQL_Poll mypolls; pthread_t thread_id; unsigned long long curtime; + unsigned long long pre_poll_time; unsigned long long last_maintenance_time; PtrArray *mysql_sessions; PtrArray *idle_mysql_sessions; @@ -176,6 +177,7 @@ class MySQL_Thread int shutdown; bool epoll_thread; + bool poll_timeout_bool; // status variables are per thread only // in this way, there is no need for atomic operation and there is no cache miss diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 40137b3de..106dae6bd 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -2153,7 +2153,7 @@ __run_skip_1a: // flush mysql log file GloMyLogger->flush(); - + pre_poll_time=curtime; if (idle_maintenance_thread) { memset(events,0,sizeof(struct epoll_event)*MY_EPOLL_THREAD_MAXEVENTS); // let's make valgrind happy. It also seems that needs to be zeroed anyway // we call epoll() @@ -2178,6 +2178,11 @@ __run_skip_1a: mypolls.poll_timeout=0; // always reset this to 0 . If a session needs a specific timeout, it will set this one curtime=monotonic_time(); + if (idle_maintenance_thread==false && (curtime >= pre_poll_time + mypolls.poll_timeout)) { + poll_timeout_bool=true; + } else { + poll_timeout_bool=false; + } unsigned int maintenance_interval = 1000000; // hardcoded value for now if (idle_maintenance_thread) { maintenance_interval=maintenance_interval*2; @@ -2409,6 +2414,7 @@ __run_skip_1a: // FIXME: this logic was removed completely because we added mariadb client library. Yet, we need to implement a way to manage connection timeout // check for timeout // no events. This section is copied from process_data_on_data_stream() + if (poll_timeout_bool) { MySQL_Data_Stream *_myds=mypolls.myds[n]; if (_myds && _myds->sess) { if (_myds->wait_until && curtime > _myds->wait_until) { @@ -2421,6 +2427,7 @@ __run_skip_1a: } } } + } } else { // check if the FD is valid if (mypolls.fds[n].revents==POLLNVAL) { From b8cf07e8326b9522103cc9782593c10bf72202aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 22 Oct 2016 16:30:56 +0000 Subject: [PATCH 18/25] Preparation for v1.3.0b --- Makefile | 2 +- docker/images/proxysql/centos67-build/proxysql.spec | 2 +- docker/images/proxysql/centos7-build/proxysql.spec | 2 +- docker/images/proxysql/debian-7.8-build/proxysql.ctl | 2 +- docker/images/proxysql/debian-8.2-build/proxysql.ctl | 2 +- docker/images/proxysql/fedora24-build/proxysql.spec | 2 +- docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl | 2 +- docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl | 2 +- docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index b516aab2d..86dd8caaa 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ DEBUG=${ALL_DEBUG} #export DEBUG #export OPTZ #export EXTRALINK -CURVER=1.3.0 +CURVER=1.3.0b DISTRO := $(shell gawk -F= '/^NAME/{print $$2}' /etc/os-release) ifeq ($(wildcard /usr/lib/systemd/systemd), /usr/lib/systemd/systemd) SYSTEMD=1 diff --git a/docker/images/proxysql/centos67-build/proxysql.spec b/docker/images/proxysql/centos67-build/proxysql.spec index 260a48f77..5efdc1073 100644 --- a/docker/images/proxysql/centos67-build/proxysql.spec +++ b/docker/images/proxysql/centos67-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.3.0 +Version: 1.3.0b Release: 1 License: GPL+ Group: Development/Tools diff --git a/docker/images/proxysql/centos7-build/proxysql.spec b/docker/images/proxysql/centos7-build/proxysql.spec index 260a48f77..5efdc1073 100644 --- a/docker/images/proxysql/centos7-build/proxysql.spec +++ b/docker/images/proxysql/centos7-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.3.0 +Version: 1.3.0b Release: 1 License: GPL+ Group: Development/Tools diff --git a/docker/images/proxysql/debian-7.8-build/proxysql.ctl b/docker/images/proxysql/debian-7.8-build/proxysql.ctl index 85e80b816..0b3f53cdb 100644 --- a/docker/images/proxysql/debian-7.8-build/proxysql.ctl +++ b/docker/images/proxysql/debian-7.8-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0 +Version: 1.3.0b Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/debian-8.2-build/proxysql.ctl b/docker/images/proxysql/debian-8.2-build/proxysql.ctl index 85e80b816..0b3f53cdb 100644 --- a/docker/images/proxysql/debian-8.2-build/proxysql.ctl +++ b/docker/images/proxysql/debian-8.2-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0 +Version: 1.3.0b Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/fedora24-build/proxysql.spec b/docker/images/proxysql/fedora24-build/proxysql.spec index 260a48f77..5efdc1073 100644 --- a/docker/images/proxysql/fedora24-build/proxysql.spec +++ b/docker/images/proxysql/fedora24-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.3.0 +Version: 1.3.0b Release: 1 License: GPL+ Group: Development/Tools diff --git a/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl index 85e80b816..0b3f53cdb 100644 --- a/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0 +Version: 1.3.0b Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl index 85e80b816..0b3f53cdb 100644 --- a/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0 +Version: 1.3.0b Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl index 85e80b816..0b3f53cdb 100644 --- a/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0 +Version: 1.3.0b Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md From d6c05ee660b44f5bd2bafcf6f96bb081d15af202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 10:16:30 +0000 Subject: [PATCH 19/25] Fix bug #752 : reset PS on COM_CHANGE_USER --- lib/MySQL_Session.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index fe3f09d7e..a8a3bf952 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -1164,6 +1164,9 @@ bool MySQL_Session::handler_again___status_CHANGING_USER_SERVER(int *_rc) { if (myds->mypolls==NULL) { thread->mypolls.add(POLLIN|POLLOUT, mybe->server_myds->fd, mybe->server_myds, thread->curtime); } + // we recreate local_stmts : see issue #752 + delete myconn->local_stmts; + myconn->local_stmts=new MySQL_STMTs_local(false); int rc=myconn->async_change_user(myds->revents); if (rc==0) { myds->myconn->userinfo->set(client_myds->myconn->userinfo); From faefe166f01990e4a2337e983413868677f0d9a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 10:35:49 +0000 Subject: [PATCH 20/25] Fix issue #745 --- lib/ProxySQL_Admin.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index c876f67a6..e6225ad3b 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -25,6 +25,8 @@ #define SELECT_VERSION_COMMENT_LEN 32 #define SELECT_DB_USER "select DATABASE(), USER() limit 1" #define SELECT_DB_USER_LEN 33 +#define SELECT_CHARSET_VARIOUS "select @@character_set_client, @@character_set_connection, @@character_set_server, @@character_set_database limit 1" +#define SELECT_CHARSET_VARIOUS_LEN 115 #define READ_ONLY_OFF "\x01\x00\x00\x01\x02\x23\x00\x00\x02\x03\x64\x65\x66\x00\x00\x00\x0d\x56\x61\x72\x69\x61\x62\x6c\x65\x5f\x6e\x61\x6d\x65\x00\x0c\x21\x00\x0f\x00\x00\x00\xfd\x01\x00\x1f\x00\x00\x1b\x00\x00\x03\x03\x64\x65\x66\x00\x00\x00\x05\x56\x61\x6c\x75\x65\x00\x0c\x21\x00\x0f\x00\x00\x00\xfd\x01\x00\x1f\x00\x00\x05\x00\x00\x04\xfe\x00\x00\x02\x00\x0e\x00\x00\x05\x09\x72\x65\x61\x64\x5f\x6f\x6e\x6c\x79\x03\x4f\x46\x46\x05\x00\x00\x06\xfe\x00\x00\x02\x00" #define READ_ONLY_ON "\x01\x00\x00\x01\x02\x23\x00\x00\x02\x03\x64\x65\x66\x00\x00\x00\x0d\x56\x61\x72\x69\x61\x62\x6c\x65\x5f\x6e\x61\x6d\x65\x00\x0c\x21\x00\x0f\x00\x00\x00\xfd\x01\x00\x1f\x00\x00\x1b\x00\x00\x03\x03\x64\x65\x66\x00\x00\x00\x05\x56\x61\x6c\x75\x65\x00\x0c\x21\x00\x0f\x00\x00\x00\xfd\x01\x00\x1f\x00\x00\x05\x00\x00\x04\xfe\x00\x00\x02\x00\x0d\x00\x00\x05\x09\x72\x65\x61\x64\x5f\x6f\x6e\x6c\x79\x02\x4f\x4e\x05\x00\x00\x06\xfe\x00\x00\x02\x00" @@ -1690,6 +1692,19 @@ void admin_session_handler(MySQL_Session *sess, ProxySQL_Admin *pa, PtrSize_t *p } } + if (query_no_space_length==SELECT_CHARSET_VARIOUS_LEN) { + if (!strncasecmp(SELECT_CHARSET_VARIOUS, query_no_space, query_no_space_length)) { + l_free(query_length,query); + char *query1=(char *)"select 'utf8' as '@@character_set_client', 'utf8' as '@@character_set_connection', 'utf8' as '@@character_set_server', 'utf8' as '@@character_set_database' limit 1"; +// char *query2=(char *)malloc(strlen(query1)+strlen(sess->client_myds->myconn->userinfo->username)+10); +// sprintf(query2,query1,sess->client_myds->myconn->userinfo->username); + query=l_strdup(query1); + query_length=strlen(query1)+1; +// free(query2); + goto __run_query; + } + } + if (!strncasecmp("SELECT @@version", query_no_space, strlen("SELECT @@version"))) { l_free(query_length,query); char *q=(char *)"SELECT '%s' AS '@@version'"; From dfb18a02d24ce02e06f3f5528e6c6f3113869898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 10:57:42 +0000 Subject: [PATCH 21/25] Show double quote in PROCESSLIST #746 --- lib/ProxySQL_Admin.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index e6225ad3b..563dde93a 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -3297,14 +3297,20 @@ void ProxySQL_Admin::stats___mysql_processlist() { if (resultset==NULL) return; statsdb->execute("BEGIN"); statsdb->execute("DELETE FROM stats_mysql_processlist"); - char *a=(char *)"INSERT INTO stats_mysql_processlist VALUES (\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")"; + char *a=(char *)"INSERT INTO stats_mysql_processlist VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"; for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { SQLite3_row *r=*it; int arg_len=0; - for (int i=0; i<14; i++) { + char *o_info=NULL; + for (int i=0; i<13; i++) { // info (field 13) is left out! See #746 if (r->fields[i]) arg_len+=strlen(r->fields[i]); } + if (r->fields[13]) { // this is just for info column (field 13) . See #746 + o_info=escape_string_single_quotes(r->fields[13],false); + int l=strlen(o_info)+4; + arg_len+=l; + } char *query=(char *)malloc(strlen(a)+arg_len+32); sprintf(query,a, (r->fields[0] ? r->fields[0] : ""), @@ -3320,10 +3326,15 @@ void ProxySQL_Admin::stats___mysql_processlist() { (r->fields[10] ? r->fields[10] : ""), (r->fields[11] ? r->fields[11] : ""), (r->fields[12] ? r->fields[12] : ""), - (r->fields[13] ? r->fields[13] : "") + (r->fields[13] ? o_info : "") ); statsdb->execute(query); free(query); + if (o_info) { + if (o_info!=r->fields[13]) { // there was a copy + free(o_info); + } + } } statsdb->execute("COMMIT"); delete resultset; From faa3752e4cff45bff826bafa08604259d75a1360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 12:40:32 +0000 Subject: [PATCH 22/25] Queries were not logged #723 mysql_query_rules.log was ignored --- lib/Query_Processor.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Query_Processor.cpp b/lib/Query_Processor.cpp index 3b214c6e2..c27f9f7f7 100644 --- a/lib/Query_Processor.cpp +++ b/lib/Query_Processor.cpp @@ -824,6 +824,11 @@ __internal_loop: proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 5, "query rule %d has set cache_ttl: %d. Query will%s hit the cache\n", qr->rule_id, qr->cache_ttl, (qr->cache_ttl == 0 ? " NOT" : "" )); ret->cache_ttl=qr->cache_ttl; } + if (qr->log >= 0) { + // Note: negative log means this rule doesn't change + proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 5, "query rule %d has set log: %d. Query will%s logged\n", qr->rule_id, qr->log, (qr->log == 0 ? " NOT" : "" )); + ret->log=qr->log; + } if (qr->destination_hostgroup >= 0) { // Note: negative hostgroup means this rule doesn't change proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 5, "query rule %d has set destination hostgroup: %d\n", qr->rule_id, qr->destination_hostgroup); From d12b7cf55c6843d4dbad4fd859187424cd8fac4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 14:08:50 +0000 Subject: [PATCH 23/25] Return error in resultset , #750 Depending from the query, an error "Query execution was interrupted" can be returned either as: * a standalone ERR Packet (previously handled) * an ERR Packet at the end of a result set : this commit handle this case --- include/MySQL_Protocol.h | 1 + lib/MySQL_Protocol.cpp | 19 +++++++++++++++++++ lib/mysql_connection.cpp | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/include/MySQL_Protocol.h b/include/MySQL_Protocol.h index 27405565b..3b8a0f000 100644 --- a/include/MySQL_Protocol.h +++ b/include/MySQL_Protocol.h @@ -52,6 +52,7 @@ class MySQL_ResultSet { unsigned int add_row(MYSQL_ROW row); unsigned int add_row2(MYSQL_ROWS *row, unsigned char *offset); void add_eof(); + void add_err(MySQL_Data_Stream *_myds); bool get_resultset(PtrSizeArray *PSarrayFinal); unsigned char *buffer; unsigned int buffer_used; diff --git a/lib/MySQL_Protocol.cpp b/lib/MySQL_Protocol.cpp index b373f66b1..1b671cf96 100644 --- a/lib/MySQL_Protocol.cpp +++ b/lib/MySQL_Protocol.cpp @@ -1885,6 +1885,25 @@ void MySQL_ResultSet::add_eof() { resultset_completed=true; } +void MySQL_ResultSet::add_err(MySQL_Data_Stream *_myds) { + PtrSize_t pkt; + if (myprot) { + MYSQL *_mysql=_myds->myconn->mysql; + buffer_to_PSarrayOut(); + char sqlstate[10]; + sprintf(sqlstate,"%s",mysql_sqlstate(_mysql)); + if (_myds && _myds->killed_at) { // see case #750 + myprot->generate_pkt_ERR(false,&pkt.ptr,&pkt.size,sid,1907,sqlstate,"Query execution was interrupted, query_timeout exceeded"); + } else { + myprot->generate_pkt_ERR(false,&pkt.ptr,&pkt.size,sid,mysql_errno(_mysql),sqlstate,mysql_error(_mysql)); + } + PSarrayOUT->add(pkt.ptr,pkt.size); + sid++; + resultset_size+=pkt.size; + } + resultset_completed=true; +} + bool MySQL_ResultSet::get_resultset(PtrSizeArray *PSarrayFinal) { transfer_started=true; if (myprot) { diff --git a/lib/mysql_connection.cpp b/lib/mysql_connection.cpp index f92e79603..be322edae 100644 --- a/lib/mysql_connection.cpp +++ b/lib/mysql_connection.cpp @@ -899,6 +899,16 @@ handler_again: NEXT_IMMEDIATE(ASYNC_USE_RESULT_CONT); // we continue looping } } else { + if (mysql) { + int _myerrno=mysql_errno(mysql); + if (_myerrno) { + if (myds) { + MyRS->add_err(myds); + NEXT_IMMEDIATE(ASYNC_QUERY_END); + } + } + } + // we reach here if there was no error MyRS->add_eof(); NEXT_IMMEDIATE(ASYNC_QUERY_END); } From a5548bd5f606456bbd20144c51388b7144fb734a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 14:15:49 +0000 Subject: [PATCH 24/25] v1.3.0c --- Makefile | 2 +- docker/images/proxysql/centos67-build/proxysql.spec | 2 +- docker/images/proxysql/centos7-build/proxysql.spec | 2 +- docker/images/proxysql/debian-7.8-build/proxysql.ctl | 2 +- docker/images/proxysql/debian-8.2-build/proxysql.ctl | 2 +- docker/images/proxysql/fedora24-build/proxysql.spec | 2 +- docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl | 2 +- docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl | 2 +- docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 86dd8caaa..74507dc8d 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ DEBUG=${ALL_DEBUG} #export DEBUG #export OPTZ #export EXTRALINK -CURVER=1.3.0b +CURVER=1.3.0c DISTRO := $(shell gawk -F= '/^NAME/{print $$2}' /etc/os-release) ifeq ($(wildcard /usr/lib/systemd/systemd), /usr/lib/systemd/systemd) SYSTEMD=1 diff --git a/docker/images/proxysql/centos67-build/proxysql.spec b/docker/images/proxysql/centos67-build/proxysql.spec index 5efdc1073..d9a7ec3f2 100644 --- a/docker/images/proxysql/centos67-build/proxysql.spec +++ b/docker/images/proxysql/centos67-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.3.0b +Version: 1.3.0c Release: 1 License: GPL+ Group: Development/Tools diff --git a/docker/images/proxysql/centos7-build/proxysql.spec b/docker/images/proxysql/centos7-build/proxysql.spec index 5efdc1073..d9a7ec3f2 100644 --- a/docker/images/proxysql/centos7-build/proxysql.spec +++ b/docker/images/proxysql/centos7-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.3.0b +Version: 1.3.0c Release: 1 License: GPL+ Group: Development/Tools diff --git a/docker/images/proxysql/debian-7.8-build/proxysql.ctl b/docker/images/proxysql/debian-7.8-build/proxysql.ctl index 0b3f53cdb..d8ec06dbc 100644 --- a/docker/images/proxysql/debian-7.8-build/proxysql.ctl +++ b/docker/images/proxysql/debian-7.8-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0b +Version: 1.3.0c Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/debian-8.2-build/proxysql.ctl b/docker/images/proxysql/debian-8.2-build/proxysql.ctl index 0b3f53cdb..d8ec06dbc 100644 --- a/docker/images/proxysql/debian-8.2-build/proxysql.ctl +++ b/docker/images/proxysql/debian-8.2-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0b +Version: 1.3.0c Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/fedora24-build/proxysql.spec b/docker/images/proxysql/fedora24-build/proxysql.spec index 5efdc1073..d9a7ec3f2 100644 --- a/docker/images/proxysql/fedora24-build/proxysql.spec +++ b/docker/images/proxysql/fedora24-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.3.0b +Version: 1.3.0c Release: 1 License: GPL+ Group: Development/Tools diff --git a/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl index 0b3f53cdb..d8ec06dbc 100644 --- a/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0b +Version: 1.3.0c Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl index 0b3f53cdb..d8ec06dbc 100644 --- a/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0b +Version: 1.3.0c Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md diff --git a/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl b/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl index 0b3f53cdb..d8ec06dbc 100644 --- a/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl +++ b/docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl @@ -4,7 +4,7 @@ Homepage: http://www.proxysql.com Standards-Version: 3.9.2 Package: proxysql -Version: 1.3.0b +Version: 1.3.0c Maintainer: Rene Cannao Architecture: amd64 # Changelog: CHANGELOG.md From 8b64f76e6a0e7eb8fab9dcaf0812ce75096dfef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 23 Oct 2016 15:14:42 +0000 Subject: [PATCH 25/25] Adding sleep in Makefile Docker seems to fail randomly. Adding some sleep. --- Makefile | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 74507dc8d..9f1cce242 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ DEBUG=${ALL_DEBUG} #export OPTZ #export EXTRALINK CURVER=1.3.0c +MAKEOPT="-j 8" DISTRO := $(shell gawk -F= '/^NAME/{print $$2}' /etc/os-release) ifeq ($(wildcard /usr/lib/systemd/systemd), /usr/lib/systemd/systemd) SYSTEMD=1 @@ -112,7 +113,7 @@ binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm: docker create --name centos67_build renecannao/proxysql:build-centos6.7 bash -c "while : ; do sleep 10 ; done" docker start centos67_build docker exec centos67_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec centos67_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE}" + docker exec centos67_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker exec -it centos67_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; mkdir -p proxysql/usr/share/proxysql/tools ; cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools ; mv proxysql proxysql-${CURVER} ; tar czvf proxysql-${CURVER}.tar.gz proxysql-${CURVER}" docker exec -it centos67_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos67-build/rpmmacros centos67_build:/root/.rpmmacros @@ -120,6 +121,7 @@ binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm: sleep 2 docker exec -it centos67_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + sleep 2 docker exec -it centos67_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 docker cp centos67_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm @@ -132,7 +134,7 @@ binaries/proxysql-${CURVER}-1-dbg-centos67.x86_64.rpm: docker create --name centos67_build renecannao/proxysql:build-centos6.7 bash -c "while : ; do sleep 10 ; done" docker start centos67_build docker exec centos67_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec centos67_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec centos67_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker exec -it centos67_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; mkdir -p proxysql/usr/share/proxysql/tools ; cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools ; mv proxysql proxysql-${CURVER} ; tar czvf proxysql-${CURVER}.tar.gz proxysql-${CURVER}" docker exec -it centos67_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos67-build/rpmmacros centos67_build:/root/.rpmmacros @@ -140,6 +142,7 @@ binaries/proxysql-${CURVER}-1-dbg-centos67.x86_64.rpm: sleep 2 docker exec -it centos67_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + sleep 2 docker exec -it centos67_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 docker cp centos67_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-centos67.x86_64.rpm @@ -152,7 +155,7 @@ binaries/proxysql-${CURVER}-1-centos7.x86_64.rpm: docker create --name centos7_build renecannao/proxysql:build-centos7 bash -c "while : ; do sleep 10 ; done" docker start centos7_build docker exec centos7_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec centos7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE}" + docker exec centos7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker exec -it centos7_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; mkdir -p proxysql/usr/share/proxysql/tools ; cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools ; mv proxysql proxysql-${CURVER} ; tar czvf proxysql-${CURVER}.tar.gz proxysql-${CURVER}" docker exec -it centos7_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos7-build/rpmmacros centos7_build:/root/.rpmmacros @@ -160,6 +163,7 @@ binaries/proxysql-${CURVER}-1-centos7.x86_64.rpm: sleep 2 docker exec -it centos7_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + sleep 2 docker exec -it centos7_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 docker cp centos7_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-centos7.x86_64.rpm @@ -172,7 +176,7 @@ binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm: docker create --name centos7_build renecannao/proxysql:build-centos7 bash -c "while : ; do sleep 10 ; done" docker start centos7_build docker exec centos7_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec centos7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec centos7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker exec -it centos7_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; mkdir -p proxysql/usr/share/proxysql/tools ; cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools ; mv proxysql proxysql-${CURVER} ; tar czvf proxysql-${CURVER}.tar.gz proxysql-${CURVER}" docker exec -it centos7_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/centos7-build/rpmmacros centos7_build:/root/.rpmmacros @@ -180,6 +184,7 @@ binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm: sleep 2 docker exec -it centos7_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + sleep 2 docker exec -it centos7_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 docker cp centos7_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm @@ -193,7 +198,7 @@ binaries/proxysql-${CURVER}-1-fedora24.x86_64.rpm: docker create --name fedora24_build renecannao/proxysql:build-fedora24 bash -c "while : ; do sleep 10 ; done" docker start fedora24_build docker exec fedora24_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec fedora24_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE}" + docker exec fedora24_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker exec -it fedora24_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; mkdir -p proxysql/usr/share/proxysql/tools ; cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools ; mv proxysql proxysql-${CURVER} ; tar czvf proxysql-${CURVER}.tar.gz proxysql-${CURVER}" docker exec -it fedora24_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/fedora24-build/rpmmacros fedora24_build:/root/.rpmmacros @@ -201,6 +206,7 @@ binaries/proxysql-${CURVER}-1-fedora24.x86_64.rpm: sleep 2 docker exec -it fedora24_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + sleep 2 docker exec -it fedora24_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 docker cp fedora24_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-fedora24.x86_64.rpm @@ -213,7 +219,7 @@ binaries/proxysql-${CURVER}-1-dbg-fedora24.x86_64.rpm: docker create --name fedora24_build renecannao/proxysql:build-fedora24 bash -c "while : ; do sleep 10 ; done" docker start fedora24_build docker exec fedora24_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec fedora24_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec fedora24_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker exec -it fedora24_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; mkdir -p proxysql/usr/share/proxysql/tools ; cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools ; mv proxysql proxysql-${CURVER} ; tar czvf proxysql-${CURVER}.tar.gz proxysql-${CURVER}" docker exec -it fedora24_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" docker cp docker/images/proxysql/fedora24-build/rpmmacros fedora24_build:/root/.rpmmacros @@ -221,6 +227,7 @@ binaries/proxysql-${CURVER}-1-dbg-fedora24.x86_64.rpm: sleep 2 docker exec -it fedora24_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + sleep 2 docker exec -it fedora24_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 docker cp fedora24_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-fedora24.x86_64.rpm @@ -234,7 +241,7 @@ binaries/proxysql_${CURVER}-ubuntu12_amd64.deb: docker create --name ubuntu12_build renecannao/proxysql:build-ubuntu12 bash -c "while : ; do sleep 10 ; done" docker start ubuntu12_build docker exec ubuntu12_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec ubuntu12_build bash -c "cd /opt/proxysql; sed -i -e 's/c++11/c++0x/' lib/Makefile ; sed -i -e 's/c++11/c++0x/' src/Makefile ; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" + docker exec ubuntu12_build bash -c "cd /opt/proxysql; sed -i -e 's/c++11/c++0x/' lib/Makefile ; sed -i -e 's/c++11/c++0x/' src/Makefile ; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker cp docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl ubuntu12_build:/opt/proxysql/ docker exec ubuntu12_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" sleep 2 @@ -248,7 +255,7 @@ binaries/proxysql_${CURVER}-ubuntu14_amd64.deb: docker create --name ubuntu14_build renecannao/proxysql:build-ubuntu14 bash -c "while : ; do sleep 10 ; done" docker start ubuntu14_build docker exec ubuntu14_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" + docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker cp docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl ubuntu14_build:/opt/proxysql/ sleep 2 docker exec ubuntu14_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -263,7 +270,7 @@ binaries/proxysql_${CURVER}-ubuntu16_amd64.deb: docker create --name ubuntu16_build renecannao/proxysql:build-ubuntu16 bash -c "while : ; do sleep 10 ; done" docker start ubuntu16_build docker exec ubuntu16_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec ubuntu16_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" + docker exec ubuntu16_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker cp docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl ubuntu16_build:/opt/proxysql/ sleep 2 docker exec ubuntu16_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -278,7 +285,7 @@ binaries/proxysql_${CURVER}-debian7_amd64.deb: docker create --name debian7_build renecannao/proxysql:build-debian7 bash -c "while : ; do sleep 10 ; done" docker start debian7_build docker exec debian7_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec debian7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" + docker exec debian7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker cp docker/images/proxysql/debian-7.8-build/proxysql.ctl debian7_build:/opt/proxysql/ sleep 2 docker exec debian7_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -293,7 +300,7 @@ binaries/proxysql_${CURVER}-debian8_amd64.deb: docker create --name debian8_build renecannao/proxysql:build-debian8 bash -c "while : ; do sleep 10 ; done" docker start debian8_build docker exec debian8_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec debian8_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} -j 4" + docker exec debian8_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" docker cp docker/images/proxysql/debian-8.2-build/proxysql.ctl debian8_build:/opt/proxysql/ sleep 2 docker exec debian8_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -309,7 +316,7 @@ binaries/proxysql_${CURVER}-dbg-ubuntu12_amd64.deb: docker create --name ubuntu12_build renecannao/proxysql:build-ubuntu12 bash -c "while : ; do sleep 10 ; done" docker start ubuntu12_build docker exec ubuntu12_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec ubuntu12_build bash -c "cd /opt/proxysql; sed -i -e 's/c++11/c++0x/' lib/Makefile ; sed -i -e 's/c++11/c++0x/' src/Makefile ; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec ubuntu12_build bash -c "cd /opt/proxysql; sed -i -e 's/c++11/c++0x/' lib/Makefile ; sed -i -e 's/c++11/c++0x/' src/Makefile ; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker cp docker/images/proxysql/ubuntu-12.04-build/proxysql.ctl ubuntu12_build:/opt/proxysql/ sleep 2 docker exec ubuntu12_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -324,7 +331,7 @@ binaries/proxysql_${CURVER}-dbg-ubuntu14_amd64.deb: docker create --name ubuntu14_build renecannao/proxysql:build-ubuntu14 bash -c "while : ; do sleep 10 ; done" docker start ubuntu14_build docker exec ubuntu14_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec ubuntu14_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker cp docker/images/proxysql/ubuntu-14.04-build/proxysql.ctl ubuntu14_build:/opt/proxysql/ sleep 2 docker exec ubuntu14_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -339,7 +346,7 @@ binaries/proxysql_${CURVER}-dbg-ubuntu16_amd64.deb: docker create --name ubuntu16_build renecannao/proxysql:build-ubuntu16 bash -c "while : ; do sleep 10 ; done" docker start ubuntu16_build docker exec ubuntu16_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec ubuntu16_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec ubuntu16_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker cp docker/images/proxysql/ubuntu-16.04-build/proxysql.ctl ubuntu16_build:/opt/proxysql/ sleep 2 docker exec ubuntu16_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -354,7 +361,7 @@ binaries/proxysql_${CURVER}-dbg-debian7_amd64.deb: docker create --name debian7_build renecannao/proxysql:build-debian7 bash -c "while : ; do sleep 10 ; done" docker start debian7_build docker exec debian7_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec debian7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec debian7_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker cp docker/images/proxysql/debian-7.8-build/proxysql.ctl debian7_build:/opt/proxysql/ sleep 2 docker exec debian7_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl" @@ -369,7 +376,7 @@ binaries/proxysql_${CURVER}-dbg-debian8_amd64.deb: docker create --name debian8_build renecannao/proxysql:build-debian8 bash -c "while : ; do sleep 10 ; done" docker start debian8_build docker exec debian8_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" - docker exec debian8_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} -j 4 build_deps && ${MAKE} debug" + docker exec debian8_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" docker cp docker/images/proxysql/debian-8.2-build/proxysql.ctl debian8_build:/opt/proxysql/ sleep 2 docker exec debian8_build bash -c "cd /opt/proxysql; cp src/proxysql . ; equivs-build proxysql.ctl"