Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CmdRequest ¶
type CmdRequest struct { RequestID string `json:"request_id"` CmdType string `json:"cmd_type"` Data json.RawMessage `json:"data"` }
CmdRequest is the request for a TTL command
func (*CmdRequest) GetTriggerTTLJobRequest ¶
func (r *CmdRequest) GetTriggerTTLJobRequest() (*TriggerNewTTLJobRequest, bool)
GetTriggerTTLJobRequest returns the `TriggerNewTTLJobRequest` object if command type is 'trigger_ttl_job', otherwise, (nil, false) will be returned
type CommandClient ¶
type CommandClient interface { // Command sends a command and waits for response. The first value of the return is the requestID, it always not empty. Command(ctx context.Context, cmdType string, obj any, response any) (string, error) // WatchCommand watches the commands that are sent WatchCommand(ctx context.Context) <-chan *CmdRequest // TakeCommand takes a command to ensure only one can handle the command. // If the first return value is true, it means you have taken the command successfully, // and you should call `ResponseCommand` // after processed the command. Otherwise, you should not process this command because it is not belong to you. TakeCommand(ctx context.Context, reqID string) (bool, error) // ResponseCommand responses the result of the command. `TakeCommand` must be called first before `ResponseCommand` // obj is the response object to the sender, if obj is an error, the sender will receive an error too. ResponseCommand(ctx context.Context, reqID string, obj any) error }
CommandClient is an interface used to send and response command of TTL jobs
func NewCommandClient ¶
func NewCommandClient(etcdCli *clientv3.Client) CommandClient
NewCommandClient creates a command client with etcd
func NewMockCommandClient ¶
func NewMockCommandClient() CommandClient
NewMockCommandClient creates a mock command client
type NotificationClient ¶
type NotificationClient interface { // Notify sends a notification Notify(ctx context.Context, typ string, data string) error // WatchNotification opens a channel, in which we could receive all notifications WatchNotification(ctx context.Context, typ string) clientv3.WatchChan }
NotificationClient is a client to notify other TTL workers
func NewMockNotificationClient ¶
func NewMockNotificationClient() NotificationClient
NewMockNotificationClient creates a mock notification client
func NewNotificationClient ¶
func NewNotificationClient(etcdCli *clientv3.Client) NotificationClient
NewNotificationClient creates a notification client with etcd
type TriggerNewTTLJobRequest ¶
type TriggerNewTTLJobRequest struct { DBName string `json:"db_name"` TableName string `json:"table_name"` }
TriggerNewTTLJobRequest is the command detail to trigger a TTL job
type TriggerNewTTLJobResponse ¶
type TriggerNewTTLJobResponse struct {
TableResult []*TriggerNewTTLJobTableResult `json:"table_result"`
}
TriggerNewTTLJobResponse is the response detail for trigger_ttl_job command
func TriggerNewTTLJob ¶
func TriggerNewTTLJob(ctx context.Context, cli CommandClient, dbName, tableName string) ( *TriggerNewTTLJobResponse, error)
TriggerNewTTLJob triggers a new TTL job
type TriggerNewTTLJobTableResult ¶
type TriggerNewTTLJobTableResult struct { TableID int64 `json:"table_id"` DBName string `json:"db_name"` TableName string `json:"table_name"` PartitionName string `json:"partition_name,omitempty"` JobID string `json:"job_id,omitempty"` ErrorMessage string `json:"error_message,omitempty"` }
TriggerNewTTLJobTableResult is the table detail of `TriggerNewTTLJobResponse`