fix(PROJ-30): cmd import — Manticore-Backend support (wie cmd_reindex)
This commit is contained in:
@@ -76,12 +76,28 @@ func runImport(args []string) {
|
||||
if backend == "" {
|
||||
backend = "xapian"
|
||||
}
|
||||
idx, err := index.New(cfg.Index.Path, batchSize, backend)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: index init: %v\n", err)
|
||||
os.Exit(1)
|
||||
|
||||
var idxMgr index.TenantIndexer
|
||||
if backend == "manticore" {
|
||||
dsn := cfg.Index.ManticoreDSN
|
||||
if dsn == "" {
|
||||
dsn = "manticore@tcp(127.0.0.1:9306)/"
|
||||
}
|
||||
m, err := index.NewManticoreTenantManager(dsn)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: manticore init: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
idxMgr = m
|
||||
} else {
|
||||
m, err := index.NewTenantIndexManager(cfg.Index.Path, batchSize, backend)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: index init: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
idxMgr = m
|
||||
}
|
||||
defer idx.Close()
|
||||
defer idxMgr.Close()
|
||||
|
||||
// Collect files to process
|
||||
type fileEntry struct {
|
||||
@@ -169,7 +185,7 @@ func runImport(args []string) {
|
||||
|
||||
for _, msg := range messages {
|
||||
total++
|
||||
result := importMessage(mailStore, idx, msg, *dryRun)
|
||||
result := importMessage(mailStore, idxMgr, msg, *dryRun)
|
||||
switch result {
|
||||
case "imported":
|
||||
imported++
|
||||
@@ -209,7 +225,7 @@ func runImport(args []string) {
|
||||
}
|
||||
|
||||
// importMessage stores and indexes a single raw message. Returns "imported", "skipped", or "error".
|
||||
func importMessage(mailStore *storage.Store, idx index.Indexer, raw []byte, dryRun bool) string {
|
||||
func importMessage(mailStore *storage.Store, idxMgr index.TenantIndexer, raw []byte, dryRun bool) string {
|
||||
pm, err := mailparser.Parse(raw)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "warning: parse failed: %v\n", err)
|
||||
@@ -243,7 +259,7 @@ func importMessage(mailStore *storage.Store, idx index.Indexer, raw []byte, dryR
|
||||
Size: int64(len(raw)),
|
||||
}
|
||||
|
||||
if err := idx.IndexSync(doc); err != nil {
|
||||
if err := idxMgr.ForTenant(nil).IndexSync(doc); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "warning: index failed for %s: %v\n", id, err)
|
||||
return "error"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user