region

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2019 License: Apache-2.0 Imports: 14 Imported by: 1

Documentation

Overview

Package region contains data structures to represent HBase regions.

Index

Constants

View Source
const (
	//DefaultLookupTimeout is the default region lookup timeout
	DefaultLookupTimeout = 30 * time.Second
	//DefaultReadTimeout is the default region read timeout
	DefaultReadTimeout = 30 * time.Second
	// RegionClient is a ClientType that means this will be a normal client
	RegionClient = ClientType("ClientService")

	// MasterClient is a ClientType that means this client will talk to the
	// master server
	MasterClient = ClientType("MasterService")
)

Variables

View Source
var (
	// ErrMissingCallID is used when HBase sends us a response message for a
	// request that we didn't send
	ErrMissingCallID = errors.New("got a response with a nonsensical call ID")

	// ErrClientDead is returned to rpcs when Close() is called or when client
	// died because of failed send or receive
	ErrClientDead = UnrecoverableError{errors.New("client is dead")}
)

Functions

func Compare

func Compare(a, b []byte) int

Compare compares two region names. We can't just use bytes.Compare() because it doesn't play nicely with the way META keys are built as the first region has an empty start key. Let's assume we know about those 2 regions in our cache:

.META.,,1
tableA,,1273018455182

We're given an RPC to execute on "tableA", row "\x00" (1 byte row key containing a 0). If we use Compare() to sort the entries in the cache, when we search for the entry right before "tableA,\000,:" we'll erroneously find ".META.,,1" instead of the entry for first region of "tableA".

Since this scheme breaks natural ordering, we need this comparator to implement a special version of comparison to handle this scenario.

func CompareGeneric

func CompareGeneric(a, b interface{}) int

CompareGeneric is the same thing as Compare but for interface{}.

func NewClient

func NewClient(ctx context.Context, addr string, ctype ClientType,
	queueSize int, flushInterval time.Duration, effectiveUser string,
	readTimeout time.Duration) (hrpc.RegionClient, error)

NewClient creates a new RegionClient.

func NewInfo

func NewInfo(id uint64, namespace, table, name, startKey, stopKey []byte) hrpc.RegionInfo

NewInfo creates a new region info

func ParseRegionInfo

func ParseRegionInfo(metaRow *hrpc.Result) (hrpc.RegionInfo, string, error)

ParseRegionInfo parses the contents of a row from the meta table. It's guaranteed to return a region info and a host:port OR return an error.

Types

type ClientType

type ClientType string

ClientType is a type alias to represent the type of this region client

type OfflineRegionError

type OfflineRegionError struct {
	// contains filtered or unexported fields
}

OfflineRegionError is returned if region is offline

func (OfflineRegionError) Error

func (e OfflineRegionError) Error() string

type RetryableError

type RetryableError struct {
	// contains filtered or unexported fields
}

RetryableError is an error that indicates the RPC should be retried because the error is transient (e.g. a region being momentarily unavailable).

func (RetryableError) Error

func (e RetryableError) Error() string

type UnrecoverableError

type UnrecoverableError struct {
	// contains filtered or unexported fields
}

UnrecoverableError is an error that this region.Client can't recover from. The connection to the RegionServer has to be closed and all queued and outstanding RPCs will be failed / retried.

func (UnrecoverableError) Error

func (e UnrecoverableError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL