Documentation ¶
Overview ¶
Package coordinator contains abstractions for writing points, executing statements, and accessing meta data.
Index ¶
- Constants
- Variables
- type BufferedPointsWriter
- type Config
- type ContextKey
- type IntoWriteRequest
- type IteratorCreator
- type LocalShardMapper
- type LocalShardMapping
- func (a *LocalShardMapping) Close() error
- func (a *LocalShardMapping) CreateIterator(ctx context.Context, m *influxql.Measurement, opt query.IteratorOptions) (query.Iterator, error)
- func (a *LocalShardMapping) FieldDimensions(m *influxql.Measurement) (fields map[string]influxql.DataType, dimensions map[string]struct{}, err error)
- func (a *LocalShardMapping) IteratorCost(m *influxql.Measurement, opt query.IteratorOptions) (query.IteratorCost, error)
- func (a *LocalShardMapping) MapType(m *influxql.Measurement, field string) influxql.DataType
- type LocalTSDBStore
- type MetaClient
- type PointsWriter
- func (w *PointsWriter) AddWriteSubscriber(c chan<- *WritePointsRequest)
- func (w *PointsWriter) Close() error
- func (w *PointsWriter) MapShards(wp *WritePointsRequest) (*ShardMapping, error)
- func (w *PointsWriter) Open() error
- func (w *PointsWriter) Statistics(tags map[string]string) []models.Statistic
- func (w *PointsWriter) WithLogger(log *zap.Logger)
- func (w *PointsWriter) WritePoints(database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, ...) error
- func (w *PointsWriter) WritePointsInto(p *IntoWriteRequest) error
- func (w *PointsWriter) WritePointsPrivileged(database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, ...) error
- func (w *PointsWriter) WritePointsPrivilegedWithContext(ctx context.Context, database, retentionPolicy string, ...) error
- func (w *PointsWriter) WritePointsWithContext(ctx context.Context, database, retentionPolicy string, ...) error
- type ShardIteratorCreator
- type ShardMapping
- type Source
- type StatementExecutor
- type TSDBStore
- type WritePointsRequest
- type WriteStatistics
Constants ¶
const ( // DefaultWriteTimeout is the default timeout for a complete write to succeed. DefaultWriteTimeout = 10 * time.Second // DefaultMaxConcurrentQueries is the maximum number of running queries. // A value of zero will make the maximum query limit unlimited. DefaultMaxConcurrentQueries = 0 // DefaultMaxSelectPointN is the maximum number of points a SELECT can process. // A value of zero will make the maximum point count unlimited. DefaultMaxSelectPointN = 0 // DefaultMaxSelectSeriesN is the maximum number of series a SELECT can run. // A value of zero will make the maximum series count unlimited. DefaultMaxSelectSeriesN = 0 )
const ( StatPointsWritten = ContextKey(iota) StatValuesWritten )
Variables ¶
var ( // ErrTimeout is returned when a write times out. ErrTimeout = errors.New("timeout") // ErrPartialWrite is returned when a write partially succeeds but does // not meet the requested consistency level. ErrPartialWrite = errors.New("partial write") // ErrWriteFailed is returned when no writes succeeded. ErrWriteFailed = errors.New("write failed") )
var ErrDatabaseNameRequired = errors.New("database name required")
ErrDatabaseNameRequired is returned when executing statements that require a database, when a database has not been provided.
Functions ¶
This section is empty.
Types ¶
type BufferedPointsWriter ¶ added in v1.0.0
type BufferedPointsWriter struct {
// contains filtered or unexported fields
}
BufferedPointsWriter adds buffering to a pointsWriter so that SELECT INTO queries write their points to the destination in batches.
func NewBufferedPointsWriter ¶ added in v1.0.0
func NewBufferedPointsWriter(w pointsWriter, database, retentionPolicy string, capacity int) *BufferedPointsWriter
NewBufferedPointsWriter returns a new BufferedPointsWriter.
func (*BufferedPointsWriter) Cap ¶ added in v1.0.0
func (w *BufferedPointsWriter) Cap() int
Cap returns the capacity (in points) of the buffer.
func (*BufferedPointsWriter) Flush ¶ added in v1.0.0
func (w *BufferedPointsWriter) Flush() error
Flush writes all buffered points to the underlying writer.
func (*BufferedPointsWriter) Len ¶ added in v1.0.0
func (w *BufferedPointsWriter) Len() int
Len returns the number of points buffered.
func (*BufferedPointsWriter) WritePointsInto ¶ added in v1.0.0
func (w *BufferedPointsWriter) WritePointsInto(req *IntoWriteRequest) error
WritePointsInto implements pointsWriter for BufferedPointsWriter.
type Config ¶ added in v1.0.0
type Config struct { WriteTimeout toml.Duration `toml:"write-timeout"` MaxConcurrentQueries int `toml:"max-concurrent-queries"` QueryTimeout toml.Duration `toml:"query-timeout"` LogQueriesAfter toml.Duration `toml:"log-queries-after"` MaxSelectPointN int `toml:"max-select-point"` MaxSelectSeriesN int `toml:"max-select-series"` MaxSelectBucketsN int `toml:"max-select-buckets"` }
Config represents the configuration for the coordinator service.
func NewConfig ¶ added in v1.0.0
func NewConfig() Config
NewConfig returns an instance of Config with defaults.
func (Config) Diagnostics ¶ added in v1.3.0
func (c Config) Diagnostics() (*diagnostics.Diagnostics, error)
Diagnostics returns a diagnostics representation of a subset of the Config.
type ContextKey ¶ added in v1.8.3
type ContextKey int
type IntoWriteRequest ¶ added in v1.0.0
IntoWriteRequest is a partial copy of cluster.WriteRequest
type IteratorCreator ¶ added in v1.2.0
type IteratorCreator interface { query.IteratorCreator influxql.FieldMapper io.Closer }
IteratorCreator is an interface that combines mapping fields and creating iterators.
type LocalShardMapper ¶ added in v1.2.0
type LocalShardMapper struct { MetaClient interface { ShardGroupsByTimeRange(database, policy string, min, max time.Time) (a []meta.ShardGroupInfo, err error) } TSDBStore interface { ShardGroup(ids []uint64) tsdb.ShardGroup } }
LocalShardMapper implements a ShardMapper for local shards.
func (*LocalShardMapper) MapShards ¶ added in v1.2.0
func (e *LocalShardMapper) MapShards(sources influxql.Sources, t influxql.TimeRange, opt query.SelectOptions) (query.ShardGroup, error)
MapShards maps the sources to the appropriate shards into an IteratorCreator.
type LocalShardMapping ¶ added in v1.2.0
type LocalShardMapping struct { ShardMap map[Source]tsdb.ShardGroup // MinTime is the minimum time that this shard mapper will allow. // Any attempt to use a time before this one will automatically result in using // this time instead. MinTime time.Time // MaxTime is the maximum time that this shard mapper will allow. // Any attempt to use a time after this one will automatically result in using // this time instead. MaxTime time.Time }
ShardMapper maps data sources to a list of shard information.
func (*LocalShardMapping) Close ¶ added in v1.2.0
func (a *LocalShardMapping) Close() error
Close clears out the list of mapped shards.
func (*LocalShardMapping) CreateIterator ¶ added in v1.2.0
func (a *LocalShardMapping) CreateIterator(ctx context.Context, m *influxql.Measurement, opt query.IteratorOptions) (query.Iterator, error)
func (*LocalShardMapping) FieldDimensions ¶ added in v1.2.0
func (a *LocalShardMapping) FieldDimensions(m *influxql.Measurement) (fields map[string]influxql.DataType, dimensions map[string]struct{}, err error)
func (*LocalShardMapping) IteratorCost ¶ added in v1.4.0
func (a *LocalShardMapping) IteratorCost(m *influxql.Measurement, opt query.IteratorOptions) (query.IteratorCost, error)
func (*LocalShardMapping) MapType ¶ added in v1.2.0
func (a *LocalShardMapping) MapType(m *influxql.Measurement, field string) influxql.DataType
type LocalTSDBStore ¶ added in v1.0.0
LocalTSDBStore embeds a tsdb.Store and implements IteratorCreator to satisfy the TSDBStore interface.
type MetaClient ¶ added in v1.0.0
type MetaClient interface { CreateContinuousQuery(database, name, query string) error CreateDatabase(name string) (*meta.DatabaseInfo, error) CreateDatabaseWithRetentionPolicy(name string, spec *meta.RetentionPolicySpec) (*meta.DatabaseInfo, error) CreateRetentionPolicy(database string, spec *meta.RetentionPolicySpec, makeDefault bool) (*meta.RetentionPolicyInfo, error) CreateSubscription(database, rp, name, mode string, destinations []string) error CreateUser(name, password string, admin bool) (meta.User, error) Database(name string) *meta.DatabaseInfo Databases() []meta.DatabaseInfo DropShard(id uint64) error DropContinuousQuery(database, name string) error DropDatabase(name string) error DropRetentionPolicy(database, name string) error DropSubscription(database, rp, name string) error DropUser(name string) error RetentionPolicy(database, name string) (rpi *meta.RetentionPolicyInfo, err error) SetAdminPrivilege(username string, admin bool) error SetPrivilege(username, database string, p influxql.Privilege) error ShardGroupsByTimeRange(database, policy string, min, max time.Time) (a []meta.ShardGroupInfo, err error) TruncateShardGroups(t time.Time) error UpdateRetentionPolicy(database, name string, rpu *meta.RetentionPolicyUpdate, makeDefault bool) error UpdateUser(name, password string) error UserPrivilege(username, database string) (*influxql.Privilege, error) UserPrivileges(username string) (map[string]influxql.Privilege, error) Users() []meta.UserInfo }
MetaClient is an interface for accessing meta data.
type PointsWriter ¶ added in v1.0.0
type PointsWriter struct { WriteTimeout time.Duration Logger *zap.Logger Node *influxdb.Node MetaClient interface { Database(name string) (di *meta.DatabaseInfo) RetentionPolicy(database, policy string) (*meta.RetentionPolicyInfo, error) CreateShardGroup(database, policy string, timestamp time.Time) (*meta.ShardGroupInfo, error) } TSDBStore interface { CreateShard(database, retentionPolicy string, shardID uint64, enabled bool) error WriteToShard(shardID uint64, points []models.Point) error } // contains filtered or unexported fields }
PointsWriter handles writes across multiple local and remote data nodes.
func NewPointsWriter ¶ added in v1.0.0
func NewPointsWriter() *PointsWriter
NewPointsWriter returns a new instance of PointsWriter for a node.
func (*PointsWriter) AddWriteSubscriber ¶ added in v1.4.0
func (w *PointsWriter) AddWriteSubscriber(c chan<- *WritePointsRequest)
func (*PointsWriter) Close ¶ added in v1.0.0
func (w *PointsWriter) Close() error
Close closes the communication channel with the point writer.
func (*PointsWriter) MapShards ¶ added in v1.0.0
func (w *PointsWriter) MapShards(wp *WritePointsRequest) (*ShardMapping, error)
MapShards maps the points contained in wp to a ShardMapping. If a point maps to a shard group or shard that does not currently exist, it will be created before returning the mapping.
func (*PointsWriter) Open ¶ added in v1.0.0
func (w *PointsWriter) Open() error
Open opens the communication channel with the point writer.
func (*PointsWriter) Statistics ¶ added in v1.0.0
func (w *PointsWriter) Statistics(tags map[string]string) []models.Statistic
Statistics returns statistics for periodic monitoring.
func (*PointsWriter) WithLogger ¶ added in v1.2.0
func (w *PointsWriter) WithLogger(log *zap.Logger)
WithLogger sets the Logger on w.
func (*PointsWriter) WritePoints ¶ added in v1.0.0
func (w *PointsWriter) WritePoints(database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, user meta.User, points []models.Point) error
A wrapper for WritePointsWithContext()
func (*PointsWriter) WritePointsInto ¶ added in v1.0.0
func (w *PointsWriter) WritePointsInto(p *IntoWriteRequest) error
WritePointsInto is a copy of WritePoints that uses a tsdb structure instead of a cluster structure for information. This is to avoid a circular dependency.
func (*PointsWriter) WritePointsPrivileged ¶ added in v1.3.0
func (w *PointsWriter) WritePointsPrivileged(database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, points []models.Point) error
func (*PointsWriter) WritePointsPrivilegedWithContext ¶ added in v1.8.3
func (w *PointsWriter) WritePointsPrivilegedWithContext(ctx context.Context, database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, points []models.Point) error
WritePointsPrivilegedWithContext writes the data to the underlying storage, consitencyLevel is only used for clustered scenarios
If a request for StatPointsWritten or StatValuesWritten of type ContextKey is sent via context values, this stores the total points and fields written in the memory pointed to by the associated wth the int64 pointers.
func (*PointsWriter) WritePointsWithContext ¶ added in v1.8.3
func (w *PointsWriter) WritePointsWithContext(ctx context.Context, database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, user meta.User, points []models.Point) error
WritePointsWithContext writes data to the underlying storage. consitencyLevel and user are only used for clustered scenarios.
type ShardIteratorCreator ¶ added in v1.0.0
type ShardIteratorCreator interface {
ShardIteratorCreator(id uint64) query.IteratorCreator
}
ShardIteratorCreator is an interface for creating an IteratorCreator to access a specific shard.
type ShardMapping ¶ added in v1.0.0
type ShardMapping struct { Points map[uint64][]models.Point // The points associated with a shard ID Shards map[uint64]*meta.ShardInfo // The shards that have been mapped, keyed by shard ID Dropped []models.Point // Points that were dropped // contains filtered or unexported fields }
ShardMapping contains a mapping of shards to points.
func NewShardMapping ¶ added in v1.0.0
func NewShardMapping(n int) *ShardMapping
NewShardMapping creates an empty ShardMapping.
type StatementExecutor ¶ added in v1.0.0
type StatementExecutor struct { MetaClient MetaClient // TaskManager holds the StatementExecutor that handles task-related commands. TaskManager query.StatementExecutor // TSDB storage for local node. TSDBStore TSDBStore // ShardMapper for mapping shards when executing a SELECT statement. ShardMapper query.ShardMapper // Holds monitoring data for SHOW STATS and SHOW DIAGNOSTICS. Monitor *monitor.Monitor // Used for rewriting points back into system for SELECT INTO statements. PointsWriter interface { WritePointsInto(*IntoWriteRequest) error } // Disallow INF values in SELECT INTO and other previously ignored errors StrictErrorHandling bool // Select statement limits MaxSelectPointN int MaxSelectSeriesN int MaxSelectBucketsN int }
StatementExecutor executes a statement in the query.
func (*StatementExecutor) ExecuteStatement ¶ added in v1.0.0
func (e *StatementExecutor) ExecuteStatement(ctx *query.ExecutionContext, stmt influxql.Statement) error
ExecuteStatement executes the given statement with the given execution context.
func (*StatementExecutor) NormalizeStatement ¶ added in v1.0.0
func (e *StatementExecutor) NormalizeStatement(stmt influxql.Statement, defaultDatabase, defaultRetentionPolicy string) (err error)
NormalizeStatement adds a default database and policy to the measurements in statement. Parameter defaultRetentionPolicy can be "".
type TSDBStore ¶ added in v1.0.0
type TSDBStore interface { CreateShard(database, policy string, shardID uint64, enabled bool) error WriteToShard(shardID uint64, points []models.Point) error RestoreShard(id uint64, r io.Reader) error BackupShard(id uint64, since time.Time, w io.Writer) error DeleteDatabase(name string) error DeleteMeasurement(database, name string) error DeleteRetentionPolicy(database, name string) error DeleteSeries(database string, sources []influxql.Source, condition influxql.Expr) error DeleteShard(id uint64) error MeasurementNames(ctx context.Context, auth query.FineAuthorizer, database string, cond influxql.Expr) ([][]byte, error) TagKeys(ctx context.Context, auth query.FineAuthorizer, shardIDs []uint64, cond influxql.Expr) ([]tsdb.TagKeys, error) TagValues(ctx context.Context, auth query.FineAuthorizer, shardIDs []uint64, cond influxql.Expr) ([]tsdb.TagValues, error) SeriesCardinality(ctx context.Context, database string) (int64, error) MeasurementsCardinality(ctx context.Context, database string) (int64, error) }
TSDBStore is an interface for accessing the time series data store.
type WritePointsRequest ¶ added in v1.0.0
WritePointsRequest represents a request to write point data to the cluster.