mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 17:15:56 +00:00
* Database isolation: Balancer Remove naive Balancer remove debugging lines Thread dax.Transaction through Controller Change role to roleType Swap out Balancer interface with new one Standardize InvalidTransaction error Add some interface comments * Remove type.Worker; replace with type.Address * Remove database validate from Queryer This is already being handled in the `CreateTable()` method. Prior to doing that validation, we were getting a panic, but that's no longer the case. * Remove dax.TableQualifier; replace with dax.QualifiedDatabaseID * Update IDK test to create database
57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package dax
|
|
|
|
// RoleType represents a role type which a worker node can act as.
|
|
type RoleType string
|
|
|
|
const (
|
|
RoleTypeCompute RoleType = "compute"
|
|
RoleTypeTranslate RoleType = "translate"
|
|
)
|
|
|
|
// RoleTypes is a list of RoleType, used primarily to introduce helper methods
|
|
// on the list.
|
|
type RoleTypes []RoleType
|
|
|
|
// Contains returns true if the given RoleType is in RoleTypes.
|
|
func (rt RoleTypes) Contains(t RoleType) bool {
|
|
for i := range rt {
|
|
if rt[i] == t {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Role is an interface for any role which a worker node can assume.
|
|
type Role interface {
|
|
Type() RoleType
|
|
}
|
|
|
|
// Ensure type implements interface.
|
|
var _ Role = (*ComputeRole)(nil)
|
|
var _ Role = (*TranslateRole)(nil)
|
|
|
|
// ComputeRole is a role specific to compute nodes.
|
|
type ComputeRole struct {
|
|
TableKey TableKey `json:"table-key"`
|
|
Shards ShardNums `json:"shards"`
|
|
}
|
|
|
|
// Type returns the type for ComputeRole. This is mainly to implement the Role
|
|
// interface.
|
|
func (cr *ComputeRole) Type() RoleType {
|
|
return RoleTypeCompute
|
|
}
|
|
|
|
// TranslateRole is a role specific to translate nodes.
|
|
type TranslateRole struct {
|
|
TableKey TableKey `json:"table-key"`
|
|
Partitions PartitionNums `json:"partitions"`
|
|
Fields []FieldName `json:"fields"`
|
|
}
|
|
|
|
// Type returns the type for TranslateRole. This is mainly to implement the Role
|
|
// interface.
|
|
func (cr *TranslateRole) Type() RoleType {
|
|
return RoleTypeTranslate
|
|
}
|