Merge pull request #7314 from influxdata/jw-delete-shard

Unload index before closing shard
pull/7349/head
Jason Wilder 2016-09-21 11:32:19 -06:00 committed by GitHub
commit a8ad18bb36
3 changed files with 13 additions and 1 deletions

View File

@ -24,6 +24,7 @@
- [#7231](https://github.com/influxdata/influxdb/issues/7231): Duplicate parsing bug in ALTER RETENTION POLICY.
- [#7285](https://github.com/influxdata/influxdb/issues/7285): Correctly use password-type field in Admin UI. Thanks @dandv!
- [#2792](https://github.com/influxdata/influxdb/issues/2792): Exceeding max retention policy duration gives incorrect error message
- [#7226](https://github.com/influxdata/influxdb/issues/7226): Fix database locked up when deleting shards
## v1.0.0 [2016-09-08]

View File

@ -263,6 +263,12 @@ func (s *Shard) Open() error {
return nil
}
// UnloadIndex removes all references to this shard from the DatabaseIndex
func (s *Shard) UnloadIndex() {
// Don't leak our shard ID and series keys in the index
s.index.RemoveShard(s.id)
}
// Close shuts down the shard's store.
func (s *Shard) Close() error {
s.mu.Lock()
@ -283,7 +289,7 @@ func (s *Shard) close() error {
}
// Don't leak our shard ID and series keys in the index
s.index.RemoveShard(s.id)
s.UnloadIndex()
err := s.engine.Close()
if err == nil {

View File

@ -357,6 +357,11 @@ func (s *Store) DeleteShard(shardID uint64) error {
return nil
}
// Remove the shard from the database indexes before closing the shard.
// Closing the shard will do this as well, but it will unload it while
// the shard is locked which can block stats collection and other calls.
sh.UnloadIndex()
if err := sh.Close(); err != nil {
return err
}