Reduce lock contention.
authorTom Clegg <tom@tomclegg.ca>
Tue, 3 Aug 2021 17:18:14 +0000 (13:18 -0400)
committerTom Clegg <tom@tomclegg.ca>
Tue, 3 Aug 2021 17:18:14 +0000 (13:18 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

export.go

index f23725223b3ee95d4aca0631b5656084bd770f1f..cb332cd64335dfd9d30b11ea7c9e4dfd270bbaba 100644 (file)
--- a/export.go
+++ b/export.go
@@ -700,9 +700,8 @@ func (f *formatHGVSNumpy) Print(outw io.Writer, seqname string, varslice []tvVar
        sort.Slice(sorted, func(a, b int) bool { return hgvs.Less(sorted[a], sorted[b]) })
 
        f.Lock()
-       defer f.Unlock()
-
        seqalleles := f.alleles[seqname]
+       f.Unlock()
 
        // append a row to seqvariants and seqalleles for each unique
        // non-ref variant in varslice.
@@ -724,7 +723,10 @@ func (f *formatHGVSNumpy) Print(outw io.Writer, seqname string, varslice []tvVar
                        return err
                }
        }
+
+       f.Lock()
        f.alleles[seqname] = seqalleles
+       f.Unlock()
        return nil
 }
 func (f *formatHGVSNumpy) Finish(outdir string, _ io.Writer, seqname string) error {