summaryrefslogtreecommitdiffstatshomepage
path: root/repository
diff options
context:
space:
mode:
Diffstat (limited to 'repository')
-rw-r--r--repository/gogit_test.go2
-rw-r--r--repository/index_bleve.go29
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 {