From 8d5cdbdd77a0e69798d13a1d18c5843ed1f56eea Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Fri, 11 Feb 2022 11:19:44 -0600 Subject: [PATCH 1/8] roaring-migrate bug;performance improvements --- cmd/roaring-migrate/main.go | 129 ++++++++++++++++++++++++------------ 1 file changed, 86 insertions(+), 43 deletions(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index 72e6fa94a..f215996ae 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -4,6 +4,7 @@ package main import ( "encoding/json" "fmt" + "io" "io/ioutil" "os" "path/filepath" @@ -17,11 +18,20 @@ import ( "github.com/molecula/featurebase/v3/rbf/cfg" "github.com/molecula/featurebase/v3/roaring" txkey "github.com/molecula/featurebase/v3/short_txkey" + "github.com/molecula/featurebase/v3/vprint" "github.com/spf13/cobra" ) +var visited map[string]int64 + +const ( + Version = "1.0" +) + func main() { + visited = make(map[string]int64) var dataDir, backupPath string + var verbose bool cmdMigrate := &cobra.Command{ Use: "roaring-migrate", Short: "convert roaring pilosa backup to rbf", @@ -29,7 +39,7 @@ func main() { Run: func(cmd *cobra.Command, args []string) { nodes := strings.Split(dataDir, ",") for _, nodePath := range nodes { - err := Migrate(nodePath, backupPath) + err := Migrate(nodePath, backupPath, verbose) if err != nil { fmt.Println("Error", err) return @@ -40,6 +50,7 @@ func main() { } cmdMigrate.Flags().StringVarP(&dataDir, "data-dir", "d", "", "source directories for each node seperated by commas") cmdMigrate.Flags().StringVarP(&backupPath, "backup-dir", "b", "", "location of backup directory") + cmdMigrate.Flags().BoolVar(&verbose, "verbose", false, "addition progress information") err := cmdMigrate.MarkFlagRequired("data-dir") if err != nil { fmt.Println("Error setting flag data-dir") @@ -52,6 +63,9 @@ func main() { os.Exit(1) return } + if verbose { + vprint.VV("Version: %v", Version) + } err = cmdMigrate.Execute() if err != nil { @@ -94,6 +108,14 @@ type local struct { Fields []*pilosa.FieldInfo `json:"fields,omitempty"` } +func fileExists(filename string) (bool, int64) { + info, err := os.Stat(filename) + if os.IsNotExist(err) { + return false, 0 + } + return !info.IsDir(), info.Size() +} + func BuildSchema(dataDir string) ([]byte, error) { //need to find all the ".meta" files and load as field options @@ -197,20 +219,34 @@ func (d *rbfFile) getDB(path, index string, shard uint64) (*rbf.DB, error) { return d.working, nil } func (d *rbfFile) Close() error { + defer func() error { + //cleanup the tempdirectory + err := os.RemoveAll(d.temp) + if err != nil { + return err + } + return nil + }() + if d.last != "" { d.working.Close() + //if d.last exists only keep the biggest - err := os.MkdirAll(filepath.Dir(d.last), 0777) - if err != nil { - return err + exists, sz := fileExists(d.last) + src := filepath.Join(d.temp, "data") + if !exists { + err := os.MkdirAll(filepath.Dir(d.last), 0777) + if err != nil { + return err + } + } else { + _, sz2 := fileExists(src) + if sz > sz2 { + return nil + } } // move the datafile backup shard - err = os.Rename(filepath.Join(d.temp, "data"), d.last) - if err != nil { - return err - } - //cleanup the tempdirectory - err = os.RemoveAll(d.temp) + err := os.Rename(src, d.last) if err != nil { return err } @@ -218,19 +254,26 @@ func (d *rbfFile) Close() error { return nil } func copyFile(src, dest string) error { - input, err := ioutil.ReadFile(src) + from, err := os.Open(src) if err != nil { return err } + defer from.Close() - err = ioutil.WriteFile(dest, input, 0644) + to, err := os.OpenFile(dest, os.O_RDWR|os.O_CREATE, 0644) + if err != nil { + return err + } + defer to.Close() + + _, err = io.Copy(to, from) if err != nil { return err } return nil } -func Migrate(dataDir, backupPath string) error { +func Migrate(dataDir, backupPath string, verbose bool) error { dataDir = strings.TrimSuffix(dataDir, "/") err := os.MkdirAll(backupPath, 0777) @@ -279,7 +322,21 @@ func Migrate(dataDir, backupPath string) error { bm := roaring.NewSliceBitmap() for _, filename := range raw { index, field, view, shard := Extract(filename) - + sz, before := visited[filename] + fi, _ := os.Stat(dataDir + filename) + if field != "_exists" { + if !before { + visited[filename] = fi.Size() + } else { + if fi.Size() <= sz { + continue //skipp it + } + visited[filename] = fi.Size() + } + } + if verbose { + vprint.VV("processing: %v", dataDir+filename) + } content, err := ioutil.ReadFile(dataDir + filename) if err != nil { return err @@ -293,35 +350,19 @@ func Migrate(dataDir, backupPath string) error { if err != nil { return err } - tx, err := db.Begin(true) - if err != nil { - return err - } key := string(txkey.Prefix(index, field, view, shard)) - itr, ok := bm.Containers.Iterator(0) - if ok { - for itr.Next() { - k, v := itr.Value() - tx.PutContainer(key, k, v) - - } - } + tx, err := db.Begin(true) + tx.AddRoaring(key, bm) err = tx.Commit() - if err != nil { - return err - } } cache.Close() keys := FetchIndexKeys(dataDir) for _, filename := range keys { fmt.Println("index keys", filename) - content, err := ioutil.ReadFile(filepath.Join(dataDir, filename)) - if err != nil { - return err - } + srcFile := filepath.Join(dataDir, filename) parts := strings.Split(filename, "/") destFile := filepath.Join(backupPath, "indexes", parts[1], "translate", parts[3]) - err = writeIfBigger(destFile, content) + err = writeIfBigger(destFile, srcFile) if err != nil { return err } @@ -331,13 +372,10 @@ func Migrate(dataDir, backupPath string) error { keys = FetchRowkeys(dataDir) for _, filename := range keys { fmt.Println("field", filename) - content, err := ioutil.ReadFile(dataDir + filename) - if err != nil { - return err - } + srcFile := dataDir + filename parts := strings.Split(filename, "/") destFile := filepath.Join(backupPath, "indexes", parts[1], "fields", parts[2], "translate") - err = writeIfBigger(destFile, content) + err = writeIfBigger(destFile, srcFile) if err != nil { return err } @@ -345,16 +383,21 @@ func Migrate(dataDir, backupPath string) error { return nil } -func writeIfBigger(dst string, content []byte) error { +func writeIfBigger(dst string, srcFile string) error { if stats, err := os.Stat(dst); os.IsNotExist(err) { err = os.MkdirAll(filepath.Dir(dst), 0777) if err != nil { return err } - return ioutil.WriteFile(dst, content, 0644) + return copyFile(srcFile, dst) } else { - if stats.Size() < int64(len(content)) { - return ioutil.WriteFile(dst, content, 0644) + stats2, err := os.Stat(srcFile) + if err != nil { + return err + } + if stats.Size() < stats2.Size() { + vprint.VV("Bigger %v %v", stats.Size(), stats2.Size()) + return copyFile(srcFile, dst) } } return nil //simply skip it From 9bc28091c9655a799b50be56c4fb1dc236112d05 Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Mon, 14 Feb 2022 12:11:28 -0600 Subject: [PATCH 2/8] better testing --- cmd/roaring-migrate/main.go | 13 +++-- cmd/roaring-migrate/main_test.go | 50 ++++++++++++++++++ cmd/roaring-migrate/testdata/data-dir/.id | 1 + .../testdata/data-dir/.startup.log | 1 + .../testdata/data-dir/.topology | 2 + .../testdata/data-dir/idalloc.db | Bin 0 -> 16384 bytes .../testdata/data-dir/repository/.data | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/.meta | 1 + .../data-dir/repository/_exists/.data | Bin 0 -> 32768 bytes .../data-dir/repository/_exists/.meta | Bin 0 -> 23 bytes .../testdata/data-dir/repository/_exists/keys | Bin 0 -> 32768 bytes .../_exists/views/standard/fragments/222 | Bin 0 -> 21 bytes .../views/standard/fragments/222.cache | Bin 0 -> 3 bytes .../testdata/data-dir/repository/_keys/0 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/1 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/10 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/100 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/101 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/102 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/103 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/104 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/105 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/106 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/107 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/108 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/109 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/11 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/110 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/111 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/112 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/113 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/114 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/115 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/116 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/117 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/118 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/119 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/12 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/120 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/121 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/122 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/123 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/124 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/125 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/126 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/127 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/128 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/129 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/13 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/130 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/131 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/132 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/133 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/134 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/135 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/136 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/137 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/138 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/139 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/14 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/140 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/141 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/142 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/143 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/144 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/145 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/146 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/147 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/148 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/149 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/15 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/150 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/151 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/152 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/153 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/154 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/155 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/156 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/157 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/158 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/159 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/16 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/160 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/161 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/162 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/163 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/164 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/165 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/166 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/167 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/168 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/169 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/17 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/170 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/171 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/172 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/173 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/174 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/175 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/176 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/177 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/178 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/179 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/18 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/180 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/181 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/182 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/183 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/184 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/185 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/186 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/187 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/188 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/189 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/19 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/190 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/191 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/192 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/193 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/194 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/195 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/196 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/197 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/198 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/199 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/2 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/20 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/200 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/201 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/202 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/203 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/204 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/205 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/206 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/207 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/208 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/209 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/21 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/210 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/211 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/212 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/213 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/214 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/215 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/216 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/217 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/218 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/219 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/22 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/220 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/221 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/222 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/223 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/224 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/225 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/226 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/227 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/228 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/229 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/23 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/230 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/231 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/232 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/233 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/234 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/235 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/236 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/237 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/238 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/239 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/24 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/240 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/241 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/242 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/243 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/244 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/245 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/246 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/247 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/248 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/249 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/25 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/250 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/251 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/252 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/253 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/254 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/255 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/26 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/27 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/28 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/29 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/3 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/30 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/31 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/32 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/33 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/34 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/35 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/36 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/37 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/38 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/39 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/4 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/40 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/41 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/42 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/43 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/44 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/45 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/46 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/47 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/48 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/49 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/5 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/50 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/51 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/52 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/53 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/54 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/55 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/56 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/57 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/58 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/59 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/6 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/60 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/61 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/62 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/63 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/64 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/65 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/66 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/67 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/68 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/69 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/7 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/70 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/71 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/72 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/73 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/74 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/75 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/76 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/77 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/78 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/79 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/8 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/80 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/81 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/82 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/83 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/84 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/85 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/86 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/87 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/88 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/89 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/9 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/90 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/91 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/92 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/93 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/94 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/95 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/96 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/97 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/98 | Bin 0 -> 32768 bytes .../testdata/data-dir/repository/_keys/99 | Bin 0 -> 32768 bytes .../data-dir/repository/language/.data | Bin 0 -> 32768 bytes .../data-dir/repository/language/.meta | Bin 0 -> 23 bytes .../data-dir/repository/language/keys | Bin 0 -> 32768 bytes .../language/views/standard/fragments/222 | Bin 0 -> 21 bytes .../views/standard/fragments/222.cache | 2 + .../data-dir/repository/stargazer/.data | Bin 0 -> 32768 bytes .../data-dir/repository/stargazer/.meta | Bin 0 -> 23 bytes .../data-dir/repository/stargazer/keys | Bin 0 -> 32768 bytes 277 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 cmd/roaring-migrate/main_test.go create mode 100644 cmd/roaring-migrate/testdata/data-dir/.id create mode 100644 cmd/roaring-migrate/testdata/data-dir/.startup.log create mode 100644 cmd/roaring-migrate/testdata/data-dir/.topology create mode 100644 cmd/roaring-migrate/testdata/data-dir/idalloc.db create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/.data create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/.meta create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_exists/.data create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_exists/.meta create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_exists/keys create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_exists/views/standard/fragments/222 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_exists/views/standard/fragments/222.cache create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/0 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/1 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/10 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/100 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/101 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/102 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/103 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/104 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/105 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/106 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/107 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/108 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/109 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/11 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/110 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/111 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/112 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/113 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/114 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/115 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/116 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/117 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/118 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/119 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/12 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/120 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/121 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/122 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/123 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/124 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/125 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/126 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/127 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/128 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/129 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/13 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/130 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/131 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/132 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/133 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/134 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/135 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/136 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/137 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/138 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/139 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/14 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/140 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/141 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/142 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/143 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/144 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/145 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/146 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/147 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/148 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/149 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/15 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/150 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/151 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/152 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/153 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/154 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/155 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/156 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/157 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/158 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/159 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/16 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/160 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/161 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/162 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/163 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/164 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/165 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/166 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/167 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/168 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/169 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/17 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/170 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/171 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/172 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/173 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/174 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/175 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/176 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/177 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/178 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/179 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/18 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/180 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/181 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/182 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/183 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/184 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/185 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/186 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/187 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/188 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/189 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/19 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/190 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/191 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/192 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/193 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/194 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/195 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/196 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/197 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/198 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/199 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/2 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/20 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/200 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/201 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/202 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/203 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/204 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/205 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/206 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/207 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/208 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/209 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/21 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/210 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/211 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/212 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/213 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/214 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/215 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/216 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/217 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/218 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/219 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/22 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/220 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/221 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/222 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/223 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/224 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/225 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/226 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/227 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/228 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/229 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/23 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/230 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/231 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/232 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/233 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/234 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/235 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/236 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/237 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/238 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/239 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/24 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/240 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/241 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/242 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/243 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/244 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/245 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/246 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/247 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/248 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/249 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/25 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/250 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/251 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/252 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/253 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/254 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/255 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/26 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/27 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/28 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/29 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/3 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/30 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/31 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/32 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/33 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/34 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/35 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/36 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/37 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/38 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/39 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/4 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/40 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/41 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/42 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/43 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/44 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/45 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/46 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/47 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/48 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/49 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/5 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/50 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/51 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/52 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/53 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/54 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/55 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/56 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/57 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/58 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/59 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/6 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/60 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/61 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/62 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/63 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/64 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/65 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/66 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/67 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/68 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/69 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/7 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/70 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/71 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/72 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/73 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/74 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/75 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/76 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/77 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/78 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/79 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/8 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/80 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/81 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/82 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/83 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/84 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/85 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/86 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/87 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/88 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/89 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/9 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/90 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/91 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/92 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/93 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/94 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/95 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/96 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/97 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/98 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/_keys/99 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/language/.data create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/language/.meta create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/language/keys create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/language/views/standard/fragments/222 create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/language/views/standard/fragments/222.cache create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/stargazer/.data create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/stargazer/.meta create mode 100644 cmd/roaring-migrate/testdata/data-dir/repository/stargazer/keys diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index f215996ae..740522bda 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -29,6 +29,10 @@ const ( ) func main() { + os.Exit(realMain()) +} +func realMain() int { + visited = make(map[string]int64) var dataDir, backupPath string var verbose bool @@ -54,14 +58,12 @@ func main() { err := cmdMigrate.MarkFlagRequired("data-dir") if err != nil { fmt.Println("Error setting flag data-dir") - os.Exit(1) - return + return 1 } err = cmdMigrate.MarkFlagRequired("backup-dir") if err != nil { fmt.Println("Error setting flag backup-dir") - os.Exit(1) - return + return 1 } if verbose { vprint.VV("Version: %v", Version) @@ -70,8 +72,9 @@ func main() { err = cmdMigrate.Execute() if err != nil { fmt.Println("exec error", err) - os.Exit(1) + return 1 } + return 0 } func FetchFragments(base string) []string { diff --git a/cmd/roaring-migrate/main_test.go b/cmd/roaring-migrate/main_test.go new file mode 100644 index 000000000..9b1d86d05 --- /dev/null +++ b/cmd/roaring-migrate/main_test.go @@ -0,0 +1,50 @@ +package main + +import ( + "io/ioutil" + "os" + "testing" +) + +func TestFileExists(t *testing.T) { + fileName := "missing" + if x, _ := fileExists(fileName); x { + t.Fatalf("file %v doesn't exist", fileName) + } + file, err := os.Create(fileName) + if err != nil { + t.Fatal(err) + } + file.Close() + + if x, _ := fileExists(fileName); !x { + t.Fatalf("file %v doesn't exist", fileName) + } + + t.Cleanup(func() { + os.Remove(fileName) + }) +} + +func TestMainProgram(t *testing.T) { + os.Args = []string{"roaring-migrate", + "--verbose", + } + if realMain() == 0 { + t.Fatal("should fail and it succeeded") + } + dir, err := ioutil.TempDir("", "backup") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) // clean up + os.Args = []string{"roaring-migrate", + "--verbose", + "--data-dir=testdata/data-dir/", + "--backup-dir=" + dir, + } + if realMain() == 1 { + t.Fatal("shouldn't fail") + } + +} diff --git a/cmd/roaring-migrate/testdata/data-dir/.id b/cmd/roaring-migrate/testdata/data-dir/.id new file mode 100644 index 000000000..8b78590a2 --- /dev/null +++ b/cmd/roaring-migrate/testdata/data-dir/.id @@ -0,0 +1 @@ +6fc20f49-edf3-4211-8f6d-c670258ee6ea \ No newline at end of file diff --git a/cmd/roaring-migrate/testdata/data-dir/.startup.log b/cmd/roaring-migrate/testdata/data-dir/.startup.log new file mode 100644 index 000000000..704761102 --- /dev/null +++ b/cmd/roaring-migrate/testdata/data-dir/.startup.log @@ -0,0 +1 @@ +2022-02-14T11:49:34.20065623-06:00 v2.7.0 diff --git a/cmd/roaring-migrate/testdata/data-dir/.topology b/cmd/roaring-migrate/testdata/data-dir/.topology new file mode 100644 index 000000000..c434c3203 --- /dev/null +++ b/cmd/roaring-migrate/testdata/data-dir/.topology @@ -0,0 +1,2 @@ + +$a317bd70-60ed-4723-99fa-3067563a708e$6fc20f49-edf3-4211-8f6d-c670258ee6ea \ No newline at end of file diff --git a/cmd/roaring-migrate/testdata/data-dir/idalloc.db b/cmd/roaring-migrate/testdata/data-dir/idalloc.db new file mode 100644 index 0000000000000000000000000000000000000000..e449c28987ce16bf4ca8ea054d2f468599fb2e03 GIT binary patch literal 16384 zcmeI&yA8rH5C-7zkZ6#AmI2s+6%YkY7D=BGSdksV21q<|{{VDR^rbobY)ihcvz?|H zzjejou^pD*_I^yPDxdHh`*bot`RD6?IdttNeUShG0t5&UAV7cs0RjXF5SWg@qPCLr z{J-b_tlwSx_ISRXrc;@n5FkK+009C72oNAZfB*pk5y*RfJ@+Rq5+Fc;009C72oNAZ lfB*pkGZM)E{kaF2QE5scK!5-N0t5&UAV7cs0RjX{;0=f~3rhe1 literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/.data b/cmd/roaring-migrate/testdata/data-dir/repository/.data new file mode 100644 index 0000000000000000000000000000000000000000..efe3a38f14b681df8c448af0fc3d00ba42be5789 GIT binary patch literal 32768 zcmeI)JC4FI5CBl~t&o-)8Y(I}#2vQSh9htQD1Ziz${nDmBiVQg5Ohdb;#o@UB#t$D z-Plf2YDzcP=hNWauG_==`}uL|m}3upBM^rVrg+5+Fc;009C72oNAZfB*pk1qehwpO^a! zh)4(o2oNAZfB*pk1PBlyK!Cuz1!8?a<^kS4zVQeUAV7cs0RjXF5FkK+0D;d7#6JFZ zYIgG1=Xx(d{hj}$I#&Drc30I;i%Em0EN&7YK!5-N0t5&UAV7csfzkxxe}2Q%B=eEd z$G(8l;uQ}80t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs M0RjXF5co!c8x}tf0RR91 literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/.meta b/cmd/roaring-migrate/testdata/data-dir/repository/.meta new file mode 100644 index 000000000..af4e17a1c --- /dev/null +++ b/cmd/roaring-migrate/testdata/data-dir/repository/.meta @@ -0,0 +1 @@ +  \ No newline at end of file diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/_exists/.data b/cmd/roaring-migrate/testdata/data-dir/repository/_exists/.data new file mode 100644 index 0000000000000000000000000000000000000000..efe3a38f14b681df8c448af0fc3d00ba42be5789 GIT binary patch literal 32768 zcmeI)JC4FI5CBl~t&o-)8Y(I}#2vQSh9htQD1Ziz${nDmBiVQg5Ohdb;#o@UB#t$D z-Plf2YDzcP=hNWauG_==`}uL|m}3upBM^rVrg+5+Fc;009C72oNAZfB*pk1qehwpO^a! zh)4(o2oNAZfB*pk1PBlyK!Cuz1!8?a<^kS4zVQeUAV7cs0RjXF5FkK+0D;d7#6JFZ zYIgG1=Xx(d{hj}$I#&Drc30I;i%Em0EN&7YK!5-N0t5&UAV7csfzkxxe}2Q%B=eEd z$G(8l;uQ}80t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs M0RjXF5co!c8x}tf0RR91 literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/_exists/.meta b/cmd/roaring-migrate/testdata/data-dir/repository/_exists/.meta new file mode 100644 index 0000000000000000000000000000000000000000..2267b8ec2b52d06abbf0b560205bbbee63123108 GIT binary patch literal 23 ecmb1QD@x4EPEAp`(8lbb;z6adha0uvIQ`v`hUPo7(HiV7yzMjuEFOK!5-N0t5&UAV7cs z0RjZ-Bk)m%@?ZY{c{S9?_ai>u?|yB+`_tLzD%>Rj0t5&UAV7cs0RjXF5Fk(kfyn2} za(@j*WC#QZ5FkK+009C72oNAZfWWf_Vtqg60iNBz{s<5tK!5-N0t5&UAV7csf%gl< zKK@2^nE}ZA`G=|Gd4XK#>q#m(ZkWpAXOqr1kC;MO&bN1CZg$`%0RjXF5FkK+009C7 z2oNCf8iDwqU$5lpFBLEBl literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/_keys/0 b/cmd/roaring-migrate/testdata/data-dir/repository/_keys/0 new file mode 100644 index 0000000000000000000000000000000000000000..37e586e0e463a598132dca264243dabc515b3365 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/_keys/44 b/cmd/roaring-migrate/testdata/data-dir/repository/_keys/44 new file mode 100644 index 0000000000000000000000000000000000000000..37e586e0e463a598132dca264243dabc515b3365 GIT binary patch literal 32768 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 M0RjXF5co!c8x}tf0RR91 literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/language/.meta b/cmd/roaring-migrate/testdata/data-dir/repository/language/.meta new file mode 100644 index 0000000000000000000000000000000000000000..2267b8ec2b52d06abbf0b560205bbbee63123108 GIT binary patch literal 23 ecmb1QD@x4EPEAp`(8lbb;z6adha0uvIQ`v`hUPo7(HiV7yzMjuEFOK!5-N0t5&UAV7cs z0RjZ-Bk)m%@?ZY{c{S9?_ai>u?|yB+`_tLzD%>Rj0t5&UAV7cs0RjXF5Fk(kfyn2} za(@j*WC#QZ5FkK+009C72oNAZfWWf_Vtqg60iNBz{s<5tK!5-N0t5&UAV7csf%gl< zKK@2^nE}ZA`G=|Gd4XK#>q#m(ZkWpAXOqr1kC;MO&bN1CZg$`%0RjXF5FkK+009C7 z2oNCf8iDwqU$5lm}3upBM^rVrg+5+Fc;009C72oNAZfB*pk1qehwpO^a! zh)4(o2oNAZfB*pk1PBlyK!Cuz1!8?a<^kS4zVQeUAV7cs0RjXF5FkK+0D;d7#6JFZ zYIgG1=Xx(d{hj}$I#&Drc30I;i%Em0EN&7YK!5-N0t5&UAV7csfzkxxe}2Q%B=eEd z$G(8l;uQ}80t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs M0RjXF5co!c8x}tf0RR91 literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/stargazer/.meta b/cmd/roaring-migrate/testdata/data-dir/repository/stargazer/.meta new file mode 100644 index 0000000000000000000000000000000000000000..38cad5ccbde1772c7727a4c2e53e03aad96ec6b4 GIT binary patch literal 23 ecmb1Q$;;16)nbnHb#Y=T$;?gdVq}=a$N&IJHwF0s literal 0 HcmV?d00001 diff --git a/cmd/roaring-migrate/testdata/data-dir/repository/stargazer/keys b/cmd/roaring-migrate/testdata/data-dir/repository/stargazer/keys new file mode 100644 index 0000000000000000000000000000000000000000..37e586e0e463a598132dca264243dabc515b3365 GIT binary patch literal 32768 zcmeI)F>b;z6adha0uvIQ`v`hUPo7(HiV7yzMjuEFOK!5-N0t5&UAV7cs z0RjZ-Bk)m%@?ZY{c{S9?_ai>u?|yB+`_tLzD%>Rj0t5&UAV7cs0RjXF5Fk(kfyn2} za(@j*WC#QZ5FkK+009C72oNAZfWWf_Vtqg60iNBz{s<5tK!5-N0t5&UAV7csf%gl< zKK@2^nE}ZA`G=|Gd4XK#>q#m(ZkWpAXOqr1kC;MO&bN1CZg$`%0RjXF5FkK+009C7 z2oNCf8iDwqU$5l Date: Mon, 14 Feb 2022 12:17:24 -0600 Subject: [PATCH 3/8] Update cmd/roaring-migrate/main.go Co-authored-by: Matthew Jaffee --- cmd/roaring-migrate/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index 740522bda..7f1b7d8f7 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -54,7 +54,7 @@ func realMain() int { } cmdMigrate.Flags().StringVarP(&dataDir, "data-dir", "d", "", "source directories for each node seperated by commas") cmdMigrate.Flags().StringVarP(&backupPath, "backup-dir", "b", "", "location of backup directory") - cmdMigrate.Flags().BoolVar(&verbose, "verbose", false, "addition progress information") + cmdMigrate.Flags().BoolVar(&verbose, "verbose", false, "additional progress information") err := cmdMigrate.MarkFlagRequired("data-dir") if err != nil { fmt.Println("Error setting flag data-dir") From 89598a778874f001493155a77bb494f02c551682 Mon Sep 17 00:00:00 2001 From: tgruben Date: Mon, 14 Feb 2022 12:17:42 -0600 Subject: [PATCH 4/8] Update cmd/roaring-migrate/main.go Co-authored-by: Matthew Jaffee --- cmd/roaring-migrate/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index 7f1b7d8f7..31346061b 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -332,7 +332,7 @@ func Migrate(dataDir, backupPath string, verbose bool) error { visited[filename] = fi.Size() } else { if fi.Size() <= sz { - continue //skipp it + continue // skip it } visited[filename] = fi.Size() } From c4eebc68853d45896e56127c327b95a5622234b6 Mon Sep 17 00:00:00 2001 From: tgruben Date: Mon, 14 Feb 2022 12:17:55 -0600 Subject: [PATCH 5/8] Update cmd/roaring-migrate/main.go Co-authored-by: Matthew Jaffee --- cmd/roaring-migrate/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index 31346061b..e434be6f1 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -223,7 +223,7 @@ func (d *rbfFile) getDB(path, index string, shard uint64) (*rbf.DB, error) { } func (d *rbfFile) Close() error { defer func() error { - //cleanup the tempdirectory + // clean up the temp directory err := os.RemoveAll(d.temp) if err != nil { return err From 8a48c1b67a78f6db36af0710290a5cef25e2c786 Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Mon, 14 Feb 2022 14:09:05 -0600 Subject: [PATCH 6/8] standard logger --- cmd/roaring-migrate/main.go | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index e434be6f1..607a5b129 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -14,6 +14,7 @@ import ( "syscall" pilosa "github.com/molecula/featurebase/v3" + "github.com/molecula/featurebase/v3/logger" "github.com/molecula/featurebase/v3/rbf" "github.com/molecula/featurebase/v3/rbf/cfg" "github.com/molecula/featurebase/v3/roaring" @@ -23,6 +24,7 @@ import ( ) var visited map[string]int64 +var glogger = logger.NewStandardLogger(os.Stdout) const ( Version = "1.0" @@ -32,7 +34,6 @@ func main() { os.Exit(realMain()) } func realMain() int { - visited = make(map[string]int64) var dataDir, backupPath string var verbose bool @@ -57,21 +58,21 @@ func realMain() int { cmdMigrate.Flags().BoolVar(&verbose, "verbose", false, "additional progress information") err := cmdMigrate.MarkFlagRequired("data-dir") if err != nil { - fmt.Println("Error setting flag data-dir") + glogger.Errorf("Error setting flag data-dir") return 1 } err = cmdMigrate.MarkFlagRequired("backup-dir") if err != nil { - fmt.Println("Error setting flag backup-dir") + glogger.Errorf("Error setting flag backup-dir") return 1 } if verbose { - vprint.VV("Version: %v", Version) + glogger.Infof("Version: %v", Version) } err = cmdMigrate.Execute() if err != nil { - fmt.Println("exec error", err) + glogger.Errorf("exec error", err) return 1 } return 0 @@ -84,7 +85,7 @@ func FetchFragments(base string) []string { // first thing to do, check error. and decide what to do about it if errX != nil { - fmt.Printf("error 「%v」 at a path 「%q」\n", errX, pathX) + glogger.Errorf("error 「%v」 at a path 「%q」\n", errX, pathX) return errX } pathX = pathX[len(base):] @@ -99,7 +100,7 @@ func FetchFragments(base string) []string { err := filepath.Walk(base, ff) if err != nil { - fmt.Printf("error walking the path %q: %v\n", base, err) + glogger.Errorf("error walking the path %q: %v\n", base, err) } return fragments } @@ -130,7 +131,7 @@ func BuildSchema(dataDir string) ([]byte, error) { // first thing to do, check error. and decide what to do about it if errX != nil { - fmt.Printf("error 「%v」 at a path 「%q」\n", errX, pathX) + glogger.Infof("error 「%v」 at a path 「%q」\n", errX, pathX) return errX } pathX = pathX[len(dataDir):] @@ -140,7 +141,7 @@ func BuildSchema(dataDir string) ([]byte, error) { if strings.Contains(pathX, ".meta") { //convert the file to a fieldOptions // ex: metaPath /trait_store/aba/.meta - fmt.Println("PATHX", pathX) + glogger.Infof("PATHX %v", pathX) t := strings.Split(pathX, "/") index := t[1] src := dataDir + pathX @@ -185,7 +186,7 @@ func BuildSchema(dataDir string) ([]byte, error) { err := filepath.Walk(dataDir, ff) if err != nil { - fmt.Printf("error walking the path %q: %v\n", dataDir, err) + glogger.Errorf("error walking the path %q: %v\n", dataDir, err) } return json.MarshalIndent(schemaSerializer, "", " ") } @@ -208,7 +209,7 @@ func (d *rbfFile) getDB(path, index string, shard uint64) (*rbf.DB, error) { if d.last != src { d.Close() d.last = src - fmt.Println("RBF:", src) + glogger.Infof("RBF: %v", src) c := cfg.NewDefaultConfig() c.FsyncEnabled = false c.MinWALCheckpointSize = 0 @@ -338,7 +339,7 @@ func Migrate(dataDir, backupPath string, verbose bool) error { } } if verbose { - vprint.VV("processing: %v", dataDir+filename) + glogger.Infof("processing: %v", dataDir+filename) } content, err := ioutil.ReadFile(dataDir + filename) if err != nil { @@ -361,7 +362,7 @@ func Migrate(dataDir, backupPath string, verbose bool) error { cache.Close() keys := FetchIndexKeys(dataDir) for _, filename := range keys { - fmt.Println("index keys", filename) + glogger.Infof("index keys %v", filename) srcFile := filepath.Join(dataDir, filename) parts := strings.Split(filename, "/") destFile := filepath.Join(backupPath, "indexes", parts[1], "translate", parts[3]) @@ -374,7 +375,7 @@ func Migrate(dataDir, backupPath string, verbose bool) error { //deal with index field(row)keys keys = FetchRowkeys(dataDir) for _, filename := range keys { - fmt.Println("field", filename) + glogger.Infof("field %v", filename) srcFile := dataDir + filename parts := strings.Split(filename, "/") destFile := filepath.Join(backupPath, "indexes", parts[1], "fields", parts[2], "translate") @@ -422,7 +423,7 @@ func FetchIndexKeys(base string) []string { // first thing to do, check error. and decide what to do about it if errX != nil { - fmt.Printf("error 「%v」 at a path 「%q」\n", errX, pathX) + glogger.Errorf("error 「%v」 at a path 「%q」\n", errX, pathX) return errX } pathX = pathX[len(base):] @@ -439,7 +440,7 @@ func FetchIndexKeys(base string) []string { err := filepath.Walk(base, ff) if err != nil { - fmt.Printf("error walking the path %q: %v\n", base, err) + glogger.Errorf("error walking the path %q: %v\n", base, err) } return directory } @@ -451,7 +452,7 @@ func FetchRowkeys(base string) []string { // first thing to do, check error. and decide what to do about it if errX != nil { - fmt.Printf("error 「%v」 at a path 「%q」\n", errX, pathX) + glogger.Errorf("error 「%v」 at a path 「%q」\n", errX, pathX) return errX } pathX = pathX[len(base):] @@ -473,7 +474,7 @@ func FetchRowkeys(base string) []string { err := filepath.Walk(base, ff) if err != nil { - fmt.Printf("error walking the path %q: %v\n", base, err) + glogger.Errorf("error walking the path %q: %v\n", base, err) } return directory } From cbc9bf71a1d3aebe130510caff76db40310f4e82 Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Mon, 14 Feb 2022 14:41:22 -0600 Subject: [PATCH 7/8] logging --- cmd/roaring-migrate/main.go | 8 ++++---- cmd/roaring-migrate/main_test.go | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index 607a5b129..aa78c9b07 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -42,6 +42,9 @@ func realMain() int { Short: "convert roaring pilosa backup to rbf", Long: `roaring-migrate uses the pilosa data-dir for each node, and produces a new backup that is able to be restored from utilizing the new pilosa restore tool.`, Run: func(cmd *cobra.Command, args []string) { + if verbose { + glogger.Infof("Version: %v", Version) + } nodes := strings.Split(dataDir, ",") for _, nodePath := range nodes { err := Migrate(nodePath, backupPath, verbose) @@ -66,13 +69,10 @@ func realMain() int { glogger.Errorf("Error setting flag backup-dir") return 1 } - if verbose { - glogger.Infof("Version: %v", Version) - } err = cmdMigrate.Execute() if err != nil { - glogger.Errorf("exec error", err) + glogger.Errorf("exec error %v", err) return 1 } return 0 diff --git a/cmd/roaring-migrate/main_test.go b/cmd/roaring-migrate/main_test.go index 9b1d86d05..8f452c178 100644 --- a/cmd/roaring-migrate/main_test.go +++ b/cmd/roaring-migrate/main_test.go @@ -27,6 +27,12 @@ func TestFileExists(t *testing.T) { } func TestMainProgram(t *testing.T) { + os.Args = []string{"roaring-migrate", + "--verbose", + } + if realMain() == 0 { + t.Fatal("should fail and it succeeded") + } os.Args = []string{"roaring-migrate", "--verbose", } @@ -39,7 +45,7 @@ func TestMainProgram(t *testing.T) { } defer os.RemoveAll(dir) // clean up os.Args = []string{"roaring-migrate", - "--verbose", + "--verbose=true", "--data-dir=testdata/data-dir/", "--backup-dir=" + dir, } From 6c512359a1162dd6ce8981c215a7ae11c5f375e8 Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Mon, 14 Feb 2022 14:53:47 -0600 Subject: [PATCH 8/8] missed a fmt statement --- cmd/roaring-migrate/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/roaring-migrate/main.go b/cmd/roaring-migrate/main.go index aa78c9b07..129159f2b 100644 --- a/cmd/roaring-migrate/main.go +++ b/cmd/roaring-migrate/main.go @@ -49,7 +49,7 @@ func realMain() int { for _, nodePath := range nodes { err := Migrate(nodePath, backupPath, verbose) if err != nil { - fmt.Println("Error", err) + glogger.Errorf("%v", Version) return }