mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 02:44:59 +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
(cherry picked from commit d971cfc269)
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
|
|
}
|