diff options
Diffstat (limited to 'repository')
-rw-r--r-- | repository/gogit_test.go | 2 | ||||
-rw-r--r-- | repository/index_bleve.go | 29 |
2 files changed, 23 insertions, 8 deletions
diff --git a/repository/gogit_test.go b/repository/gogit_test.go index 21acd5dfb..7e1f6687f 100644 --- a/repository/gogit_test.go +++ b/repository/gogit_test.go @@ -71,7 +71,7 @@ func TestGoGitRepo_Indexes(t *testing.T) { require.NoError(t, err) require.NotZero(t, indexA) require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "index_meta.json")) - require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "store")) + require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "store", "root.bolt")) indexB, err := repo.GetIndex("b") require.NoError(t, err) diff --git a/repository/index_bleve.go b/repository/index_bleve.go index 401709195..1e79db1c6 100644 --- a/repository/index_bleve.go +++ b/repository/index_bleve.go @@ -7,7 +7,8 @@ import ( "sync" "unicode/utf8" - "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/v2" + "github.com/blevesearch/bleve/v2/index/upsidedown" ) var _ Index = &bleveIndex{} @@ -21,17 +22,31 @@ type bleveIndex struct { func openBleveIndex(path string) (*bleveIndex, error) { index, err := bleve.Open(path) - if err == nil { - return &bleveIndex{path: path, index: index}, nil + if err != nil { + // likely we have no index yet, we make one. + b := &bleveIndex{path: path} + return b, b.makeIndex() } - b := &bleveIndex{path: path} - err = b.makeIndex() + adv, err := index.Advanced() if err != nil { - return nil, err + _ = index.Close() + return nil, fmt.Errorf("bleve: couldn't get the advanced index to assert index type: %v", err) + } + + // if we detect the v1 format (upside-down), we force a rebuild to the v2 format (scorch) + // which is much smaller. + if _, ok := adv.(*upsidedown.UpsideDownCouch); ok { + _ = index.Close() + err = os.RemoveAll(path) + if err != nil { + return nil, err + } + b := &bleveIndex{path: path} + return b, b.makeIndex() } - return b, nil + return &bleveIndex{path: path, index: index}, nil } func (b *bleveIndex) makeIndex() error { |