mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
restore without restart
This commit is contained in:
parent
cc0c1b829a
commit
b25ad81e67
6 changed files with 28 additions and 7 deletions
26
api.go
26
api.go
|
|
@ -2265,9 +2265,31 @@ func (api *API) RestoreShard(ctx context.Context, indexName string, shard uint64
|
|||
return err
|
||||
}
|
||||
api.holder.recalculateCaches()
|
||||
err = db.OpenDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tx, err := db.NewTx(false, idx.name, Txo{})
|
||||
defer tx.Rollback()
|
||||
//arguments idx,shard do not matter for rbf they
|
||||
//are ignored
|
||||
flvs, err := tx.GetSortedFieldViewList(idx, shard)
|
||||
for _, flv := range flvs {
|
||||
fld := idx.field(flv.Field)
|
||||
view, ok := fld.viewMap[flv.View]
|
||||
if !ok {
|
||||
view, err = fld.createViewIfNotExists(flv.View)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
_, err = view.CreateFragmentIfNotExists(shard)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return db.OpenDB()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type serverInfo struct {
|
||||
|
|
|
|||
|
|
@ -159,7 +159,6 @@ func (cmd *RestoreCommand) Run(ctx context.Context) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
case "idalloc":
|
||||
vprint.VV("Load ids")
|
||||
url := primary.URI.Path("/internal/idalloc/restore")
|
||||
|
|
@ -182,7 +181,6 @@ func (cmd *RestoreCommand) Run(ctx context.Context) error {
|
|||
}
|
||||
vprint.VV("shard %v %v", shard, indexName)
|
||||
url := primary.URI.Path(fmt.Sprintf("/internal/restore/%v/%v", indexName, shard))
|
||||
vprint.VV("%v", url)
|
||||
//TODO (twg) cluster aware client
|
||||
_, err = c.Post(url, "application/octet-stream", tarReader)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -3688,7 +3688,6 @@ func (e *executor) executeRowsShard(ctx context.Context, qcx *Qcx, index string,
|
|||
return nil, err
|
||||
}
|
||||
defer finisher(&err0)
|
||||
|
||||
for _, view := range views {
|
||||
if err := ctx.Err(); err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
1
field.go
1
field.go
|
|
@ -1029,7 +1029,6 @@ func (f *Field) createViewIfNotExistsBase(cvm *CreateViewMessage) (*view, bool,
|
|||
return nil, false, errors.Wrap(err, "persisting view")
|
||||
}
|
||||
}
|
||||
|
||||
view := f.newView(f.viewPath(cvm.View), cvm.View)
|
||||
|
||||
if err := view.openEmpty(); err != nil {
|
||||
|
|
|
|||
4
index.go
4
index.go
|
|
@ -814,6 +814,10 @@ func (i *Index) DeleteField(name string) error {
|
|||
return i.translationSyncer.Reset()
|
||||
}
|
||||
|
||||
func (i *Index) UpdateAvailbleShards(field, view string, shard uint64) {
|
||||
|
||||
}
|
||||
|
||||
type indexSlice []*Index
|
||||
|
||||
func (p indexSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
||||
|
|
|
|||
|
|
@ -493,7 +493,6 @@ func NewServer(opts ...ServerOption) (*Server, error) {
|
|||
s.holder.schemator = s.schemator
|
||||
s.holder.sharder = s.sharder
|
||||
s.holder.serializer = s.serializer
|
||||
|
||||
return s, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue