Skip to content

Commit 925d868

Browse files
committed
use loop
1 parent fcc868f commit 925d868

1 file changed

Lines changed: 27 additions & 25 deletions

File tree

protocol/logger/job_logger.go

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -331,37 +331,39 @@ func (logger *BufferedLiveLogger) Close() error {
331331
}
332332

333333
func (logger *BufferedLiveLogger) SendLog(wrapper *protocol.TimelineRecordFeedLinesWrapper) error {
334-
if data := logger.data.Load(); data != nil {
335-
if data.IsZero() {
336-
return errors.New("buffered live logger is closed")
337-
}
338-
select {
339-
case <-data.logdrain:
340-
return errors.New("buffered live logger closing")
341-
case data.logchan <- wrapper:
342-
}
343-
} else {
344-
logchan := make(chan *protocol.TimelineRecordFeedLinesWrapper, websocketPingSize)
345-
logfinished := make(chan struct{})
346-
ndata := internalBufferedLiveLoggerData{
347-
logchan: logchan,
348-
logdrain: make(chan struct{}),
349-
logfinished: logfinished,
350-
}
351-
if logger.data.CompareAndSwap(data, &ndata) {
334+
for {
335+
if data := logger.data.Load(); data != nil {
336+
if data.IsZero() {
337+
return errors.New("buffered live logger is closed")
338+
}
352339
select {
353-
case <-ndata.logdrain:
340+
case <-data.logdrain:
354341
return errors.New("buffered live logger closing")
355-
case ndata.logchan <- wrapper:
342+
case data.logchan <- wrapper:
343+
return nil
356344
}
357-
go logger.sendLogs(logchan, ndata.logdrain, logfinished)
358345
} else {
359-
close(ndata.logchan)
360-
close(ndata.logfinished)
361-
return logger.SendLog(wrapper)
346+
logchan := make(chan *protocol.TimelineRecordFeedLinesWrapper, websocketPingSize)
347+
logfinished := make(chan struct{})
348+
ndata := internalBufferedLiveLoggerData{
349+
logchan: logchan,
350+
logdrain: make(chan struct{}),
351+
logfinished: logfinished,
352+
}
353+
if logger.data.CompareAndSwap(data, &ndata) {
354+
go logger.sendLogs(logchan, ndata.logdrain, logfinished)
355+
select {
356+
case <-ndata.logdrain:
357+
return errors.New("buffered live logger closing")
358+
case ndata.logchan <- wrapper:
359+
return nil
360+
}
361+
} else {
362+
close(ndata.logchan)
363+
close(ndata.logfinished)
364+
}
362365
}
363366
}
364-
return nil
365367
}
366368

367369
type JobLogger struct {

0 commit comments

Comments
 (0)