mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
add UpdateSuffixarray and refactor TruncIndex
This commit refactors TruncIndex to make it possible to add container ids to the TruncIndex without updating the Suffixarray. This is useful during the Docker daemon's startup when we don't want to update the Suffixarray for every container we add. Add continues to function like before. Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
This commit is contained in:
parent
f637eaca5d
commit
219b7ae8b5
1 changed files with 22 additions and 3 deletions
|
@ -493,9 +493,7 @@ func NewTruncIndex(ids []string) (idx *TruncIndex) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (idx *TruncIndex) Add(id string) error {
|
func (idx *TruncIndex) addId(id string) error {
|
||||||
idx.Lock()
|
|
||||||
defer idx.Unlock()
|
|
||||||
if strings.Contains(id, " ") {
|
if strings.Contains(id, " ") {
|
||||||
return fmt.Errorf("Illegal character: ' '")
|
return fmt.Errorf("Illegal character: ' '")
|
||||||
}
|
}
|
||||||
|
@ -504,10 +502,31 @@ func (idx *TruncIndex) Add(id string) error {
|
||||||
}
|
}
|
||||||
idx.ids[id] = true
|
idx.ids[id] = true
|
||||||
idx.bytes = append(idx.bytes, []byte(id+" ")...)
|
idx.bytes = append(idx.bytes, []byte(id+" ")...)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (idx *TruncIndex) Add(id string) error {
|
||||||
|
idx.Lock()
|
||||||
|
defer idx.Unlock()
|
||||||
|
if err := idx.addId(id); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
idx.index = suffixarray.New(idx.bytes)
|
idx.index = suffixarray.New(idx.bytes)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (idx *TruncIndex) AddWithoutSuffixarrayUpdate(id string) error {
|
||||||
|
idx.Lock()
|
||||||
|
defer idx.Unlock()
|
||||||
|
return idx.addId(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (idx *TruncIndex) UpdateSuffixarray() {
|
||||||
|
idx.Lock()
|
||||||
|
defer idx.Unlock()
|
||||||
|
idx.index = suffixarray.New(idx.bytes)
|
||||||
|
}
|
||||||
|
|
||||||
func (idx *TruncIndex) Delete(id string) error {
|
func (idx *TruncIndex) Delete(id string) error {
|
||||||
idx.Lock()
|
idx.Lock()
|
||||||
defer idx.Unlock()
|
defer idx.Unlock()
|
||||||
|
|
Loading…
Reference in a new issue