@@ -81,20 +81,15 @@ func (c *Cache) Get(pkg *packages.Package, mode HashMode, key string, data any)
8181 return fmt .Errorf ("failed to calculate package %s action id: %w" , pkg .Name , err )
8282 }
8383
84- var b []byte
85- c .ioSem <- struct {}{}
86- c .sw .TrackStage ("cache io" , func () {
87- b , _ , err = cache .GetBytes (c .lowLevelCache , actionID )
88- })
89- <- c .ioSem
84+ cachedData , err := c .getBytes (actionID )
9085 if err != nil {
9186 if cache .IsErrMissing (err ) {
9287 return ErrMissing
9388 }
9489 return fmt .Errorf ("failed to get data from low-level cache by key %s for package %s: %w" , key , pkg .Name , err )
9590 }
9691
97- return c .decode (b , data )
92+ return c .decode (cachedData , data )
9893}
9994
10095func (c * Cache ) buildKey (pkg * packages.Package , mode HashMode , key string ) (cache.ActionID , error ) {
@@ -224,6 +219,23 @@ func (c *Cache) putBytes(actionID cache.ActionID, buf *bytes.Buffer) error {
224219 return nil
225220}
226221
222+ func (c * Cache ) getBytes (actionID cache.ActionID ) ([]byte , error ) {
223+ c .ioSem <- struct {}{}
224+
225+ cachedData , err := timeutils .TrackStage [[]byte ](c .sw , "cache io" , func () ([]byte , error ) {
226+ b , _ , errGB := cache .GetBytes (c .lowLevelCache , actionID )
227+ return b , errGB
228+ })
229+
230+ <- c .ioSem
231+
232+ if err != nil {
233+ return nil , err
234+ }
235+
236+ return cachedData , nil
237+ }
238+
227239func (c * Cache ) encode (data any ) (* bytes.Buffer , error ) {
228240 buf := & bytes.Buffer {}
229241 err := c .sw .TrackStageErr ("gob" , func () error {
0 commit comments