Merge pull request #9777 from influxdata/er-index-log

Log information about index version during startup
pull/9781/head
Edd Robinson 2018-04-26 10:48:54 +01:00 committed by GitHub
commit ba16268f41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 4 deletions

View File

@ -369,18 +369,21 @@ func (s *Shard) close() error {
return err return err
} }
// IndexType returns the index version being used for this shard.
//
// IndexType returns the empty string if it is called before the shard is opened,
// since it is only that point that the underlying index type is known.
func (s *Shard) IndexType() string { func (s *Shard) IndexType() string {
s.mu.RLock() s.mu.RLock()
defer s.mu.RUnlock() defer s.mu.RUnlock()
if err := s.ready(); err != nil { if s._engine == nil || s.index == nil { // Shard not open yet.
return "" return ""
} }
return s.index.Type() return s.index.Type()
} }
// ready determines if the Shard is ready for queries or writes. // ready determines if the Shard is ready for queries or writes.
// It returns nil if ready, otherwise ErrShardClosed or ErrShardDiabled // It returns nil if ready, otherwise ErrShardClosed or ErrShardDisabled
func (s *Shard) ready() error { func (s *Shard) ready() error {
var err error var err error
if s._engine == nil { if s._engine == nil {

View File

@ -23,6 +23,7 @@ import (
"github.com/influxdata/influxdb/query" "github.com/influxdata/influxdb/query"
"github.com/influxdata/influxql" "github.com/influxdata/influxql"
"go.uber.org/zap" "go.uber.org/zap"
"go.uber.org/zap/zapcore"
) )
var ( var (
@ -322,12 +323,16 @@ func (s *Store) loadShards() error {
} }
resC <- &res{s: shard} resC <- &res{s: shard}
log.Info("Opened shard", zap.String("path", path), zap.Duration("duration", time.Since(start))) log.Info("Opened shard", zap.String("index_version", shard.IndexType()), zap.String("path", path), zap.Duration("duration", time.Since(start)))
}(db.Name(), rp.Name(), sh.Name()) }(db.Name(), rp.Name(), sh.Name())
} }
} }
} }
// indexVersions tracks counts of the number of different types of index
// being used within each database.
indexVersions := make(map[string]map[string]int)
// Gather results of opening shards concurrently, keeping track of how // Gather results of opening shards concurrently, keeping track of how
// many databases we are managing. // many databases we are managing.
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
@ -337,9 +342,25 @@ func (s *Store) loadShards() error {
} }
s.shards[res.s.id] = res.s s.shards[res.s.id] = res.s
s.databases[res.s.database] = struct{}{} s.databases[res.s.database] = struct{}{}
if _, ok := indexVersions[res.s.database]; !ok {
indexVersions[res.s.database] = make(map[string]int, 2)
}
indexVersions[res.s.database][res.s.IndexType()]++
} }
close(resC) close(resC)
// Check if any databases are running multiple index types.
for db, idxVersions := range indexVersions {
if len(idxVersions) > 1 {
var fields []zapcore.Field
for idx, cnt := range idxVersions {
fields = append(fields, zap.Int(fmt.Sprintf("%s_count", idx), cnt))
}
s.Logger.Warn("Mixed shard index types", append(fields, logger.Database(db))...)
}
}
// Enable all shards // Enable all shards
for _, sh := range s.shards { for _, sh := range s.shards {
sh.SetEnabled(true) sh.SetEnabled(true)