mirror of https://github.com/k3s-io/k3s
Patch golang
parent
1e6061b9ec
commit
3a1bb09ea9
|
@ -19,7 +19,7 @@ FROM gcr.io/google_containers/kube-cross:KUBE_BUILD_IMAGE_CROSS_TAG
|
|||
RUN touch /kube-build-image
|
||||
|
||||
# To run as non-root we sometimes need to rebuild go stdlib packages.
|
||||
RUN chmod -R a+rwx /usr/local/go/pkg
|
||||
RUN chmod -R a+rwx /usr/local/go/pkg ${K8S_PATCHED_GOROOT}/pkg
|
||||
|
||||
# For running integration tests /var/run/kubernetes is required
|
||||
# and should be writable by user
|
||||
|
|
|
@ -77,3 +77,22 @@ RUN export ETCD_VERSION=v3.0.17; \
|
|||
&& cd /usr/local/src/etcd \
|
||||
&& curl -fsSL https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz | tar -xz \
|
||||
&& ln -s ../src/etcd/etcd-${ETCD_VERSION}-linux-amd64/etcd /usr/local/bin/
|
||||
|
||||
|
||||
# There is a significant performance regression in Go 1.8 comparing to Go 1.7.
|
||||
# Until this is solved in Go itself, we are patching 1.8.1 version of Go to
|
||||
# reduce the impact of this regression - for more detailed discussion see:
|
||||
# https://github.com/kubernetes/kubernetes/issues/45216
|
||||
#
|
||||
# TODO: Once this issue is fixed in Go itself, we can get rid of the code below.
|
||||
ENV K8S_PATCHED_GOLANG_VERSION=1.8.1 \
|
||||
K8S_PATCHED_GOROOT=/usr/local/go_k8s_patched
|
||||
RUN mkdir -p ${K8S_PATCHED_GOROOT} \
|
||||
&& curl -sSL https://github.com/golang/go/archive/go${K8S_PATCHED_GOLANG_VERSION}.tar.gz | tar -xz -C ${K8S_PATCHED_GOROOT} --strip-components=1
|
||||
|
||||
COPY go_181_performance_fix.patch ${K8S_PATCHED_GOROOT}/
|
||||
RUN cd ${K8S_PATCHED_GOROOT} \
|
||||
&& patch -p1 < go_181_performance_fix.patch \
|
||||
&& cd src \
|
||||
&& GOROOT_FINAL=${K8S_PATCHED_GOROOT} GOROOT_BOOTSTRAP=/usr/local/go ./make.bash \
|
||||
&& for platform in ${KUBE_CROSSPLATFORMS}; do GOOS=${platform%/*} GOARCH=${platform##*/} GOROOT=${K8S_PATCHED_GOROOT} go install std; done
|
||||
|
|
|
@ -1 +1 @@
|
|||
v1.8.1-1
|
||||
v1.8.1-2
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
diff --git a/src/net/http/h2_bundle.go b/src/net/http/h2_bundle.go
|
||||
index 4536b2ff5d..84e78534a9 100644
|
||||
--- a/src/net/http/h2_bundle.go
|
||||
+++ b/src/net/http/h2_bundle.go
|
||||
@@ -3536,9 +3536,17 @@ func (sc *http2serverConn) serve() {
|
||||
sc.idleTimerCh = sc.idleTimer.C
|
||||
}
|
||||
|
||||
- var gracefulShutdownCh <-chan struct{}
|
||||
+ var gracefulShutdownCh chan struct{}
|
||||
if sc.hs != nil {
|
||||
- gracefulShutdownCh = http2h1ServerShutdownChan(sc.hs)
|
||||
+ ch := http2h1ServerShutdownChan(sc.hs)
|
||||
+ gracefulShutdownCh = make(chan struct{})
|
||||
+ go func() {
|
||||
+ select {
|
||||
+ case <-sc.doneServing:
|
||||
+ case <-ch:
|
||||
+ close(gracefulShutdownCh)
|
||||
+ }
|
||||
+ }()
|
||||
}
|
||||
|
||||
go sc.readFrames()
|
|
@ -267,6 +267,10 @@ kube::golang::set_platform_envs() {
|
|||
|
||||
# Do not set CC when building natively on a platform, only if cross-compiling from linux/amd64
|
||||
if [[ $(kube::golang::host_platform) == "linux/amd64" ]]; then
|
||||
# We are currently using go 1.8.1, which has significant performance
|
||||
# regression. Until this is fixed in Golang head, we are using patched
|
||||
# version of Go that eliminates this problem.
|
||||
export GOROOT=${K8S_PATCHED_GOROOT:-${GOROOT}}
|
||||
|
||||
# Dynamic CGO linking for other server architectures than linux/amd64 goes here
|
||||
# If you want to include support for more server platforms than these, add arch-specific gcc names here
|
||||
|
|
Loading…
Reference in New Issue