// CreateMapper returns a Mapper for the given shard ID. func (r *ShardMapper) CreateMapper(sh meta.ShardInfo, stmt string, chunkSize int) (tsdb.Mapper, error) { var err error var m tsdb.Mapper if sh.OwnedBy(r.MetaStore.NodeID()) { m, err = r.TSDBStore.CreateMapper(sh.ID, stmt, chunkSize) if err != nil { return nil, err } } else { m = NewRemoteMaper(sh.OwnerIDs[0], sh.ID, stmt, chunkSize) } return m, nil }
// CreateMapper returns a Mapper for the given shard ID. func (s *ShardMapper) CreateMapper(sh meta.ShardInfo, stmt influxql.Statement, chunkSize int) (tsdb.Mapper, error) { m, err := s.TSDBStore.CreateMapper(sh.ID, stmt, chunkSize) if err != nil { return nil, err } if !sh.OwnedBy(s.MetaStore.NodeID()) || s.ForceRemoteMapping { // Pick a node in a pseudo-random manner. conn, err := s.dial(sh.OwnerIDs[rand.Intn(len(sh.OwnerIDs))]) if err != nil { return nil, err } conn.SetDeadline(time.Now().Add(s.timeout)) m.SetRemote(NewRemoteMapper(conn.(*pool.PoolConn), sh.ID, stmt, chunkSize)) } return m, nil }
// CreateMapper returns a Mapper for the given shard ID. func (s *ShardMapper) CreateMapper(sh meta.ShardInfo, stmt influxql.Statement, chunkSize int) (tsdb.Mapper, error) { // Create a remote mapper if the local node doesn't own the shard. if !sh.OwnedBy(s.MetaStore.NodeID()) || s.ForceRemoteMapping { // Pick a node in a pseudo-random manner. conn, err := s.dial(sh.Owners[rand.Intn(len(sh.Owners))].NodeID) if err != nil { return nil, err } conn.SetDeadline(time.Now().Add(s.timeout)) return NewRemoteMapper(conn, sh.ID, stmt, chunkSize), nil } // If it is local then return the mapper from the store. m, err := s.TSDBStore.CreateMapper(sh.ID, stmt, chunkSize) if err != nil { return nil, err } return m, nil }
// CreateMapper returns a Mapper for the given shard ID. func (s *ShardMapper) CreateMapper(sh meta.ShardInfo, stmt string, chunkSize int) (tsdb.Mapper, error) { var err error var m tsdb.Mapper if sh.OwnedBy(s.MetaStore.NodeID()) && !s.ForceRemoteMapping { m, err = s.TSDBStore.CreateMapper(sh.ID, stmt, chunkSize) if err != nil { return nil, err } } else { // Pick a node in a pseudo-random manner. conn, err := s.dial(sh.OwnerIDs[rand.Intn(len(sh.OwnerIDs))]) if err != nil { return nil, err } conn.SetDeadline(time.Now().Add(s.timeout)) rm := NewRemoteMapper(conn.(*pool.PoolConn), sh.ID, stmt, chunkSize) m = rm } return m, nil }