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 == "" {
|
if backend == "" {
|
||||||
backend = "xapian"
|
backend = "xapian"
|
||||||
}
|
}
|
||||||
idx, err := index.New(cfg.Index.Path, batchSize, backend)
|
|
||||||
if err != nil {
|
var idxMgr index.TenantIndexer
|
||||||
fmt.Fprintf(os.Stderr, "error: index init: %v\n", err)
|
if backend == "manticore" {
|
||||||
os.Exit(1)
|
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
|
// Collect files to process
|
||||||
type fileEntry struct {
|
type fileEntry struct {
|
||||||
@@ -169,7 +185,7 @@ func runImport(args []string) {
|
|||||||
|
|
||||||
for _, msg := range messages {
|
for _, msg := range messages {
|
||||||
total++
|
total++
|
||||||
result := importMessage(mailStore, idx, msg, *dryRun)
|
result := importMessage(mailStore, idxMgr, msg, *dryRun)
|
||||||
switch result {
|
switch result {
|
||||||
case "imported":
|
case "imported":
|
||||||
imported++
|
imported++
|
||||||
@@ -209,7 +225,7 @@ func runImport(args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// importMessage stores and indexes a single raw message. Returns "imported", "skipped", or "error".
|
// 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)
|
pm, err := mailparser.Parse(raw)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "warning: parse failed: %v\n", err)
|
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)),
|
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)
|
fmt.Fprintf(os.Stderr, "warning: index failed for %s: %v\n", id, err)
|
||||||
return "error"
|
return "error"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user