store: Add missing buffer flushes.
This could result in deadlock in unusual situations, whereby we'd start waiting for a reply while the query hasn't been flushed to the socket. * guix/store.scm (buffering-output-port)[flush]: Add call to 'force-output'. (add-to-store): Add call to 'write-buffered-output'.
This commit is contained in:
parent
d68aa41573
commit
3809824199
@ -770,6 +770,7 @@ bytevector) as its internal buffer, and a thunk to flush this output port."
|
|||||||
|
|
||||||
(define (flush)
|
(define (flush)
|
||||||
(put-bytevector port buffer 0 total)
|
(put-bytevector port buffer 0 total)
|
||||||
|
(force-output port)
|
||||||
(set! total 0))
|
(set! total 0))
|
||||||
|
|
||||||
(define (write bv offset count)
|
(define (write bv offset count)
|
||||||
@ -927,6 +928,7 @@ path."
|
|||||||
(write-int (if recursive? 1 0) port)
|
(write-int (if recursive? 1 0) port)
|
||||||
(write-string hash-algo port)
|
(write-string hash-algo port)
|
||||||
(write-file file-name port #:select? select?)
|
(write-file file-name port #:select? select?)
|
||||||
|
(write-buffered-output server)
|
||||||
(let loop ((done? (process-stderr server)))
|
(let loop ((done? (process-stderr server)))
|
||||||
(or done? (loop (process-stderr server))))
|
(or done? (loop (process-stderr server))))
|
||||||
(read-store-path port)))))
|
(read-store-path port)))))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user