boltdbcache: fix releasing results

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi
2018-07-23 18:24:13 -07:00
parent a7fedd9c9f
commit 73eaeba88c
2 changed files with 21 additions and 2 deletions

View File

@@ -133,6 +133,11 @@ func (s *Store) Load(id string, resultID string) (solver.CacheResult, error) {
func (s *Store) AddResult(id string, res solver.CacheResult) error {
return s.db.Update(func(tx *bolt.Tx) error {
_, err := tx.Bucket([]byte(linksBucket)).CreateBucketIfNotExists([]byte(id))
if err != nil {
return err
}
b, err := tx.Bucket([]byte(resultBucket)).CreateBucketIfNotExists([]byte(id))
if err != nil {
return err
@@ -218,7 +223,7 @@ func (s *Store) releaseHelper(tx *bolt.Tx, id, resultID string) error {
return nil
}
if err := ids.Delete([]byte(resultID)); err != nil {
if err := ids.Delete([]byte(id)); err != nil {
return err
}
@@ -283,6 +288,11 @@ func (s *Store) emptyBranchWithParents(tx *bolt.Tx, id []byte) error {
return err
}
}
// intentionally ignoring errors
tx.Bucket([]byte(linksBucket)).DeleteBucket([]byte(id))
tx.Bucket([]byte(resultBucket)).DeleteBucket([]byte(id))
return nil
}

View File

@@ -203,6 +203,11 @@ func testResultReleaseSingleLevel(t *testing.T, st solver.CacheKeyStorage) {
})
require.Equal(t, len(m), 0)
st.Walk(func(id string) error {
require.False(t, true, fmt.Sprintf("id %s should have been released", id))
return nil
})
}
func testBacklinks(t *testing.T, st solver.CacheKeyStorage) {
@@ -321,12 +326,16 @@ func testResultReleaseMultiLevel(t *testing.T, st solver.CacheKeyStorage) {
require.Equal(t, len(m), 1)
// release sub1 now releases foo as well
err = st.Release("sub1-result")
require.NoError(t, err)
require.False(t, st.Exists("sub1"))
require.False(t, st.Exists("foo"))
st.Walk(func(id string) error {
require.False(t, true, fmt.Sprintf("id %s should have been released", id))
return nil
})
}
func testWalkIDsByResult(t *testing.T, st solver.CacheKeyStorage) {