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:
tgruben 2020-10-29 18:24:57 -05:00 committed by GitHub
commit 51c9f4feeb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 21 deletions

View file

@ -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
}

View file

@ -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]