!219 docker: fix blockThreshold full bug

From: @jackchan8 
Reviewed-by: @duguhaotian, @zhangsong234 
Signed-off-by: @duguhaotian
This commit is contained in:
openeuler-ci-bot 2023-06-29 07:28:33 +00:00 committed by Gitee
commit f8a9392395
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 56 additions and 3 deletions

View File

@ -1 +1 @@
18.09.0.324
18.09.0.325

View File

@ -1,6 +1,6 @@
Name: docker-engine
Version: 18.09.0
Release: 324
Release: 325
Epoch: 2
Summary: The open-source application container engine
Group: Tools/Docker
@ -229,6 +229,12 @@ fi
%endif
%changelog
* Tue Jun 27 2023 chenjiankun<chenjiankun1@huawei.com> - 18.09.0-325
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:fix blockThreshold full bug
* Thu Jun 08 2023 zhongjiawei<zhongjiawei1@huawei.com> - 18.09.0-324
- Type:bugfix
- CVE:NA

View File

@ -1 +1 @@
6e4bf15b8a9b1ee7f1e2ec998e338319f3247148
67cbcd3bf8881fc8434a3e35e778cbe6791e7727

View File

@ -0,0 +1,46 @@
From dcfe23a0381da232eb427f8616abd8949fb9693e Mon Sep 17 00:00:00 2001
From: ningmingxiao <ning.mingxiao@zte.com.cn>
Date: Thu, 30 Dec 2021 23:10:48 +0800
Subject: [PATCH] fix blockThreshold full bug
Signed-off-by: ningmingxiao <ning.mingxiao@zte.com.cn>
---
components/engine/pkg/ioutils/bytespipe.go | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/components/engine/pkg/ioutils/bytespipe.go b/components/engine/pkg/ioutils/bytespipe.go
index d4bbf3c9..e04a5bf5 100644
--- a/components/engine/pkg/ioutils/bytespipe.go
+++ b/components/engine/pkg/ioutils/bytespipe.go
@@ -34,6 +34,7 @@ type BytesPipe struct {
buf []*fixedBuffer
bufLen int
closeErr error // error to return from next Read. set to nil if not closed.
+ readBlock bool // check read BytesPipe is Wait() or not
}
// NewBytesPipe creates new BytesPipe, initialized by specified slice.
@@ -86,6 +87,9 @@ loop0:
// make sure the buffer doesn't grow too big from this write
for bp.bufLen >= blockThreshold {
+ if bp.readBlock {
+ bp.wait.Broadcast()
+ }
bp.wait.Wait()
if bp.closeErr != nil {
continue loop0
@@ -131,7 +135,9 @@ func (bp *BytesPipe) Read(p []byte) (n int, err error) {
bp.mu.Unlock()
return 0, bp.closeErr
}
+ bp.readBlock = true
bp.wait.Wait()
+ bp.readBlock = false
if bp.bufLen == 0 && bp.closeErr != nil {
err := bp.closeErr
bp.mu.Unlock()
--
2.23.0

View File

@ -256,4 +256,5 @@ patch/0255-docker-libnet-d-overlay-extract-VNI-match-rule-builder.patch
patch/0256-docker-libnet-d-overlay-document-some-encryption-code.patch
patch/0257-docker-libnet-d-overlay-add-BPF-powered-VNI-matcher.patch
patch/0258-docker-thinpool-full-because-kill-docker-daemon-when.patch
patch/0259-backport-fix-blockThreshold-full-bug.patch
#end