Browse Source

fix error handling in ray

pull/876/head
Darien Raymond 7 years ago
parent
commit
f1231822f7
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
  1. 18
      transport/ray/direct.go

18
transport/ray/direct.go

@ -85,14 +85,14 @@ func (s *Stream) getData() (buf.MultiBuffer, error) {
return mb, nil return mb, nil
} }
if s.close {
return nil, io.EOF
}
if s.err { if s.err {
return nil, io.ErrClosedPipe return nil, io.ErrClosedPipe
} }
if s.close {
return nil, io.EOF
}
return nil, nil return nil, nil
} }
@ -121,7 +121,7 @@ func (s *Stream) ReadMultiBuffer() (buf.MultiBuffer, error) {
select { select {
case <-s.ctx.Done(): case <-s.ctx.Done():
return nil, io.EOF return nil, s.ctx.Err()
case <-s.writeSignal.Wait(): case <-s.writeSignal.Wait():
} }
} }
@ -142,7 +142,7 @@ func (s *Stream) ReadTimeout(timeout time.Duration) (buf.MultiBuffer, error) {
select { select {
case <-s.ctx.Done(): case <-s.ctx.Done():
return nil, io.EOF return nil, s.ctx.Err()
case <-time.After(timeout): case <-time.After(timeout):
return nil, buf.ErrReadTimeout return nil, buf.ErrReadTimeout
case <-s.writeSignal.Wait(): case <-s.writeSignal.Wait():
@ -167,7 +167,7 @@ func (s *Stream) waitForStreamSize() error {
for s.Size() >= streamSizeLimit { for s.Size() >= streamSizeLimit {
select { select {
case <-s.ctx.Done(): case <-s.ctx.Done():
return io.ErrClosedPipe return s.ctx.Err()
case <-s.readSignal.Wait(): case <-s.readSignal.Wait():
if s.err || s.close { if s.err || s.close {
return io.ErrClosedPipe return io.ErrClosedPipe
@ -227,7 +227,9 @@ func (s *Stream) CloseError() {
s.data = nil s.data = nil
s.size = 0 s.size = 0
} }
s.access.Unlock()
s.readSignal.Signal() s.readSignal.Signal()
s.writeSignal.Signal() s.writeSignal.Signal()
s.access.Unlock()
} }

Loading…
Cancel
Save