Browse Source

Merge pull request #42543 from rainrambler/patch-1

use defer to unlock mutex
Sebastiaan van Stijn 3 years ago
parent
commit
8fa6126f75
1 changed files with 4 additions and 10 deletions
  1. 4 10
      pkg/ioutils/bytespipe.go

+ 4 - 10
pkg/ioutils/bytespipe.go

@@ -50,12 +50,12 @@ func NewBytesPipe() *BytesPipe {
 // It can allocate new []byte slices in a process of writing.
 // It can allocate new []byte slices in a process of writing.
 func (bp *BytesPipe) Write(p []byte) (int, error) {
 func (bp *BytesPipe) Write(p []byte) (int, error) {
 	bp.mu.Lock()
 	bp.mu.Lock()
+	defer bp.mu.Unlock()
 
 
 	written := 0
 	written := 0
 loop0:
 loop0:
 	for {
 	for {
 		if bp.closeErr != nil {
 		if bp.closeErr != nil {
-			bp.mu.Unlock()
 			return written, ErrClosed
 			return written, ErrClosed
 		}
 		}
 
 
@@ -72,7 +72,6 @@ loop0:
 		// errBufferFull is an error we expect to get if the buffer is full
 		// errBufferFull is an error we expect to get if the buffer is full
 		if err != nil && err != errBufferFull {
 		if err != nil && err != errBufferFull {
 			bp.wait.Broadcast()
 			bp.wait.Broadcast()
-			bp.mu.Unlock()
 			return written, err
 			return written, err
 		}
 		}
 
 
@@ -100,7 +99,6 @@ loop0:
 		bp.buf = append(bp.buf, getBuffer(nextCap))
 		bp.buf = append(bp.buf, getBuffer(nextCap))
 	}
 	}
 	bp.wait.Broadcast()
 	bp.wait.Broadcast()
-	bp.mu.Unlock()
 	return written, nil
 	return written, nil
 }
 }
 
 
@@ -126,17 +124,14 @@ func (bp *BytesPipe) Close() error {
 // Data could be read only once.
 // Data could be read only once.
 func (bp *BytesPipe) Read(p []byte) (n int, err error) {
 func (bp *BytesPipe) Read(p []byte) (n int, err error) {
 	bp.mu.Lock()
 	bp.mu.Lock()
+	defer bp.mu.Unlock()
 	if bp.bufLen == 0 {
 	if bp.bufLen == 0 {
 		if bp.closeErr != nil {
 		if bp.closeErr != nil {
-			err := bp.closeErr
-			bp.mu.Unlock()
-			return 0, err
+			return 0, bp.closeErr
 		}
 		}
 		bp.wait.Wait()
 		bp.wait.Wait()
 		if bp.bufLen == 0 && bp.closeErr != nil {
 		if bp.bufLen == 0 && bp.closeErr != nil {
-			err := bp.closeErr
-			bp.mu.Unlock()
-			return 0, err
+			return 0, bp.closeErr
 		}
 		}
 	}
 	}
 
 
@@ -161,7 +156,6 @@ func (bp *BytesPipe) Read(p []byte) (n int, err error) {
 	}
 	}
 
 
 	bp.wait.Broadcast()
 	bp.wait.Broadcast()
-	bp.mu.Unlock()
 	return
 	return
 }
 }