mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-29 19:40:47 +00:00
refactor: drop two unmaintained dependencies, rename the byte size helpers (#39083)
This commit is contained in:
@@ -12,7 +12,6 @@ import (
|
||||
|
||||
"github.com/blevesearch/bleve/v2"
|
||||
"github.com/blevesearch/bleve/v2/mapping"
|
||||
"github.com/ethantkoenig/rupture"
|
||||
)
|
||||
|
||||
var _ internal.Indexer = &Indexer{}
|
||||
@@ -69,9 +68,7 @@ func (i *Indexer) Init(_ context.Context) (bool, error) {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if err = rupture.WriteIndexMetadata(i.indexDir, &rupture.IndexMetadata{
|
||||
Version: i.version,
|
||||
}); err != nil {
|
||||
if err = writeIndexMetadataVersion(i.indexDir, i.version); err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
|
||||
@@ -6,21 +6,47 @@ package bleve
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"unicode"
|
||||
|
||||
"gitea.dev/modules/json"
|
||||
"gitea.dev/modules/log"
|
||||
"gitea.dev/modules/setting"
|
||||
|
||||
"github.com/blevesearch/bleve/v2"
|
||||
unicode_tokenizer "github.com/blevesearch/bleve/v2/analysis/tokenizer/unicode"
|
||||
"github.com/blevesearch/bleve/v2/index/upsidedown"
|
||||
"github.com/ethantkoenig/rupture"
|
||||
)
|
||||
|
||||
const (
|
||||
maxFuzziness = 2
|
||||
maxFuzziness = 2
|
||||
indexMetadataFilename = "rupture_meta.json" // named after the former "rupture" dependency, renaming it would force a reindex
|
||||
)
|
||||
|
||||
type indexMetadata struct {
|
||||
Version int `json:"version"`
|
||||
}
|
||||
|
||||
func readIndexMetadataVersion(path string) (int, error) {
|
||||
data, err := os.ReadFile(filepath.Join(path, indexMetadataFilename))
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
return 0, nil
|
||||
} else if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
var metadata indexMetadata
|
||||
if err := json.Unmarshal(data, &metadata); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return metadata.Version, nil
|
||||
}
|
||||
|
||||
func writeIndexMetadataVersion(path string, version int) error {
|
||||
data, _ := json.Marshal(indexMetadata{Version: version}) // marshalling a single int cannot fail
|
||||
return os.WriteFile(filepath.Join(path, indexMetadataFilename), data, 0o666)
|
||||
}
|
||||
|
||||
// openIndexer open the index at the specified path, checking for metadata
|
||||
// updates and bleve version updates. If index needs to be created (or
|
||||
// re-created), returns (nil, nil)
|
||||
@@ -32,14 +58,14 @@ func openIndexer(path string, latestVersion int) (bleve.Index, int, error) {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
metadata, err := rupture.ReadIndexMetadata(path)
|
||||
version, err := readIndexMetadataVersion(path)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if metadata.Version < latestVersion {
|
||||
if version < latestVersion {
|
||||
// the indexer is using a previous version, so we should delete it and
|
||||
// re-populate
|
||||
return nil, metadata.Version, os.RemoveAll(path)
|
||||
return nil, version, os.RemoveAll(path)
|
||||
}
|
||||
|
||||
index, err := bleve.Open(path)
|
||||
|
||||
@@ -5,14 +5,33 @@ package bleve
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"gitea.dev/modules/setting"
|
||||
"gitea.dev/modules/test"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestIndexMetadataVersion(t *testing.T) {
|
||||
indexDir := t.TempDir()
|
||||
version, err := readIndexMetadataVersion(indexDir)
|
||||
require.NoError(t, err)
|
||||
assert.Zero(t, version)
|
||||
|
||||
require.NoError(t, writeIndexMetadataVersion(indexDir, 42))
|
||||
data, err := os.ReadFile(filepath.Join(indexDir, indexMetadataFilename))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, `{"version":42}`, string(data))
|
||||
|
||||
version, err = readIndexMetadataVersion(indexDir)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 42, version)
|
||||
}
|
||||
|
||||
func TestBleveGuessFuzzinessByKeyword(t *testing.T) {
|
||||
defer test.MockVariableValue(&setting.Indexer.TypeBleveMaxFuzzniess, 2)()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user