We should just keep track of the time object instead of the seconds

pull/376/head
John Shahid 2014-08-07 13:02:15 -04:00
parent 7a297b3f5e
commit dcbadb92f8
1 changed files with 5 additions and 6 deletions

View File

@ -4,7 +4,6 @@ import (
"bytes"
"fmt"
"io/ioutil"
"math"
"os"
"path"
"path/filepath"
@ -24,7 +23,7 @@ type ShardDatastore struct {
baseDbDir string
config *configuration.Configuration
shards map[uint32]*Shard
lastAccess map[uint32]int64
lastAccess map[uint32]time.Time
shardRefCounts map[uint32]int
shardsToClose map[uint32]bool
shardsLock sync.RWMutex
@ -78,7 +77,7 @@ func NewShardDatastore(config *configuration.Configuration, metaStore *metastore
config: config,
shards: make(map[uint32]*Shard),
maxOpenShards: config.StorageMaxOpenShards,
lastAccess: make(map[uint32]int64),
lastAccess: make(map[uint32]time.Time),
shardRefCounts: make(map[uint32]int),
shardsToClose: make(map[uint32]bool),
pointBatchSize: config.StoragePointBatchSize,
@ -147,7 +146,7 @@ func (self *ShardDatastore) getEngine(dir string) (string, error) {
}
func (self *ShardDatastore) GetOrCreateShard(id uint32) (cluster.LocalShardDb, error) {
now := time.Now().Unix()
now := time.Now()
self.shardsLock.Lock()
defer self.shardsLock.Unlock()
db := self.shards[id]
@ -258,9 +257,9 @@ func (self *ShardDatastore) shardDir(id uint32) string {
func (self *ShardDatastore) closeOldestShard() {
var oldestId uint32
oldestAccess := int64(math.MaxInt64)
oldestAccess := time.Now()
for id, lastAccess := range self.lastAccess {
if lastAccess < oldestAccess && self.shardsToClose[id] == false {
if lastAccess.Before(oldestAccess) && self.shardsToClose[id] == false {
oldestId = id
oldestAccess = lastAccess
}