• Jesse Gross's avatar
    ggml: Fix race that resulted in "context canceled" when loading · a6ef73f4
    Jesse Gross authored
    Successfully completing processing with an errgroup cancels the
    associated context. However, we also have a goroutine that is checking
    for cancelation of the context. As a result, there is a race where
    the goroutine can pick up the cancelation and report an error,
    replacing the sucessful error message.
    
    To avoid that, this replaces the goroutine with a cancelation check
    when we are reading files. This also has the advantage of stopping
    all reads relatively quickly on error and also ensuring that there are
    no outstanding I/O operations when we return in this case.
    
    The downside is that if a file read blocks forever (for example, over
    the network) then cancelation of the context effectively won't be
    honored. However, this is also true for other smaller files we read
    and the tensors are read in small chunks (128K), so it's consistent
    and better on balance overall.
    a6ef73f4
ggml.go 29.4 KB