mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 17:15:56 +00:00
Merge pull request #1044 from jaten-molecula/startup_shards
don't apply startup shard cache to roaring with a specified view path
This commit is contained in:
commit
51c9f4feeb
2 changed files with 30 additions and 21 deletions
49
dbshard.go
49
dbshard.go
|
|
@ -698,6 +698,21 @@ func (per *DBPerShard) TypedDBPerShardGetShardsForIndex(ty txtype, idx *Index, r
|
|||
per.Mu.Lock()
|
||||
defer per.Mu.Unlock()
|
||||
|
||||
if ty == roaringTxn && roaringViewPath != "" {
|
||||
rx := &RoaringTx{
|
||||
Index: idx,
|
||||
}
|
||||
sos, err := rx.SliceOfShards("", "", "", roaringViewPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
shardMap = make(map[uint64]bool)
|
||||
for _, shard := range sos {
|
||||
shardMap[shard] = true
|
||||
}
|
||||
return shardMap, nil
|
||||
}
|
||||
|
||||
i2ss, ok := per.index2shards[ty]
|
||||
if !ok {
|
||||
// index -> shardSet
|
||||
|
|
@ -719,32 +734,24 @@ func (per *DBPerShard) TypedDBPerShardGetShardsForIndex(ty txtype, idx *Index, r
|
|||
// Upon return, cache the setOfShards value and reuse it next time
|
||||
|
||||
if ty == roaringTxn {
|
||||
// INVAR: roaringViewPath == "", because the other case is
|
||||
// handled above.
|
||||
rx := &RoaringTx{
|
||||
Index: idx,
|
||||
}
|
||||
if roaringViewPath == "" {
|
||||
fields := idx.Fields()
|
||||
for _, field := range fields {
|
||||
for _, view := range field.views() {
|
||||
sos, err := rx.SliceOfShards("", "", "", view.path)
|
||||
if err != nil {
|
||||
return nil,
|
||||
errors.Wrap(err, fmt.Sprintf(
|
||||
"TypedDBPerShardGetLocalShardsForIndex roaringTxn view.path='%v'", view.path))
|
||||
}
|
||||
for _, shard := range sos {
|
||||
setOfShards.add(shard)
|
||||
}
|
||||
fields := idx.Fields()
|
||||
for _, field := range fields {
|
||||
for _, view := range field.views() {
|
||||
sos, err := rx.SliceOfShards("", "", "", view.path)
|
||||
if err != nil {
|
||||
return nil,
|
||||
errors.Wrap(err, fmt.Sprintf(
|
||||
"TypedDBPerShardGetLocalShardsForIndex roaringTxn view.path='%v'", view.path))
|
||||
}
|
||||
for _, shard := range sos {
|
||||
setOfShards.add(shard)
|
||||
}
|
||||
}
|
||||
return setOfShards.CloneMaybe(), nil
|
||||
}
|
||||
sos, err := rx.SliceOfShards("", "", "", roaringViewPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, shard := range sos {
|
||||
setOfShards.add(shard)
|
||||
}
|
||||
return setOfShards.CloneMaybe(), nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1307,6 +1307,8 @@ func (f *TxFactory) green2blue(holder *Holder) (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
holder.Logger.Printf("green2blue analysis begins.")
|
||||
|
||||
blueDest := f.types[0]
|
||||
greenSrc := f.types[1]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue